1. 程式人生 > >Python從資料庫取數,對時間進行處理,統計資料彙總後畫圖

Python從資料庫取數,對時間進行處理,統計資料彙總後畫圖

#-*- coding: utf8 -*-
import odbc
import numpy as np
import pylab as pl
allDate = []
allData = []
if __name__ == '__main__':
    print("run success")
    allDate, allData  =  odbc.getData()
   # print(allDate)
    pl.plot(allDate,allData)
    pl.show()
else:
    print("run error")import pymysql as mysql
import time, datetime
mysql.install_as_MySQLdb()
def getData():
    try:
        # 獲取一個數據庫連線,注意如果是UTF-8型別的,需要制定資料庫
        conn = mysql.connect(host='xxx.xxx.xxx.xxx', user='xxx', passwd='xxx', db='xxx', port=xxx,
                             charset='utf8')
        cur = conn.cursor()  # 獲取一個遊標
        sql = """SELECT a.changenum,a.updatetime 
                  from xxxx a join xxxxx b 
                  on a.x = b.x 
                  where b.name = 'xxx'
                  and a.updatetime > '2017-07-01 00:00:00'
                  ORDER BY updatetime ASC"""
        cur.execute(sql)  # 遊標執行sql查詢語句
        data = cur.fetchall()  # fetchall()則是接收全部的返回結果行
        change_data = []
        change_date = []
        for d in data:  # 迴圈結果進行顯示
            change_data.append(d[0])
            change_date.append(d[1])
        cur.close()  # 關閉遊標
        conn.close()  # 關閉連線
    except Exception:
        print("查詢失敗")
    print(change_data)
    print(change_date)

    
    first_date = datetime.datetime.strptime(
        datetime.datetime.strftime(change_date[0], '%Y-%m-%d %H:%M:%S')[0:10] + " 00:00:00", '%Y-%m-%d %H:%M:%S')
    # 獲取第一個時間資料,取得日期部分,向前
    last_date = datetime.datetime.strptime(
        datetime.datetime.strftime(change_date[len(change_date) - 1], '%Y-%m-%d %H:%M:%S')[0:10] + " 00:00:00",
        '%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=1)
    # 獲取最後一個時間資料,取得日期部分,向後
    # print(first_date)
    # print(last_date)
    date = []
    data = []
    temp_date = first_date
    n = 0
    num = 0
    #外層迴圈,每次增加半小時
    while temp_date < last_date:
        for i in range(n, len(change_date)):
            #內層迴圈,迴圈資料庫資料,在該半小時之內的變換情況
            if temp_date <= change_date[i] < temp_date + datetime.timedelta(minutes=30):
                num += change_data[i]
            else:
                break
        data.append(num)  # 對變化情況進行記錄以便於後續畫圖的Y軸資料
        num = 0
        n = i
        temp_date = temp_date + datetime.timedelta(minutes=30)  # 橫軸時間資料
        date.append(temp_date)

    print(len(date))
    print(len(data))
    print(date)
    print(data)
    return  date, data  # 因為未對齊到外層的getData()主函式,曾經導致出錯

相關推薦

Python資料庫時間進行處理統計資料彙總畫圖

#-*- coding: utf8 -*- import odbc import numpy as np import pylab as pl allDate = [] allData = [] if __name__ == '__main__': print("run success") a

在 react 項目裏應用 immutable redux 進行處理 List 據渲染的問題

port 相關 osi color span 行處理 引入 import 代碼 一、reducer文件的處理 先安裝 immutable 與 redux-immutable yarn add immutable redux-immutable 安裝好後,要在大樹下將子

Jquery時間進行判斷格式化

1.獲取當前時間,並進行格式化      var myDate = new Date();  //獲取當前年 var year=myDate.getFullYear(); //獲取當前月 var month=m

在 react 專案裡應用 immutable redux 進行處理 List 資料渲染的問題

一、reducer檔案的處理 先安裝 immutable 與 redux-immutable  yarn add immutable redux-immutable 安裝好後,要在大樹下將子樹合併,在store資料夾的 reducer.js 檔案中引入 import

使用MD5線上加解密工具漢字進行加密得到不同的結果

1. 問題背景 使用相同的漢字字串進行MD5計算,有時候會遇到:使用不同的線上工具,得到不同的MD5計算結果。 2. 原因 出現這樣情況的原因,通常是因為不同的線上工具使用的對漢字的編碼方式不同。(如果還有其他原因,歡迎大家評論留言哈,本喵也很想知道~) 3. 驗證 用一個32位

定義一個日期類日期進行設定判斷是否為閏年

include using namespace std; class Date { public: void Set(int y,int m,int d); bool IsLeapYear();

多尺度小波分解與重構matlab係數進行處理構造C重構訊號1

自己要解決的問題是,用小波分解對時間序列進行多尺度分解,再分別對各系數進行預測,最後重構得到最後的預測結果。 因為對係數進行了新的處理,所以不能直接用waverec函式重構原始訊號,而需要先構造C,再用waverec函式重構原始訊號。 所以這裡主要解決的問題是

Android單點觸控技術圖片進行平移縮放旋轉操作

相信大家使用多點對圖片進行縮放,平移的操作很熟悉了,大部分大圖的瀏覽都具有此功能,有些app還可以對圖片進行旋轉操作,QQ的大圖瀏覽就可以對圖片進行旋轉操作,大家都知道對圖片進行縮放,平移,旋轉等操作可以使用Matrix來實現,Matrix就是一個3X3的矩陣,對圖片的處理可

自定義函式列表進行排序預設升序可以降序

程式碼編寫 執行結果 參考程式碼: def list_sort(lt, reverse=False): n = len(lt) for i in range(n-1): for j in range(i+1, n):

sql查詢結果存入DataTable然後DataTable

結果 ble body 查詢 取數 select columns class span for (int i = 0; i < dt.Rows.Count; i++) { string s = "select

python用sort()函式列表進行排序最後一個元素開始判斷

直接上程式碼: a = [1, 2, 3, 4, 4, 5, 6, 7, 7, 9, 0]a.sort()last = a[-1]for i in range(len(a)-2, -1, -1): if last == a[i]: del a[i] else: las

C# 關於資料庫資料並顯示在DataGridView中

從資料庫取資料,並顯示在DataGridView中,這種做法在.net開發經常用到。那麼到底該怎麼做呢? 1.要從資料庫取資料,必須建立資料庫連線 2.將資料庫中取到的資料通過一定方法,顯示在介面的的dataGridView中 程式碼:    效果如下: 從中,我們可以

Django實戰: Python爬蟲爬鏈家上海二手房資訊存入資料庫並在前端顯示

好久沒寫Django實戰教程了,小編我今天就帶你把它與Python爬蟲結合做出個有趣的東西吧。我們將開發這樣一個應用,前端使用者可以根據行政區劃,房廳數和價格區間選擇需要爬取的二手房房源資訊,後臺Python開始爬取資料。爬取資料完成後,通過Django將爬來的資料存入資料庫

資料庫資料轉換json,時間格式帶上T的解決辦法

從資料庫取得資料之後,轉換成json顯示在前臺,在轉換json時發現yyyy-MM-dd HH:mm:ss格式的日期變成了yyyy-MM-ddTHH:mm:ss, 日與小時之間多出個T字元.這是因為 Newtonsoft.Json轉換json導致的; Newtonsoft.Json產生的預設日期時間

python學習筆記9:面向象編程

數據 相同屬性 技術 -o 必須 是把 oop ack 繼承 一、面向對象編程   面向對象--Object Oriented Programming,簡稱oop,是一種程序設計思想。   還有另一種程序設計思想——面向過程編程。面向過程的思想是把一個項目、一件事情按照一定

python/numpy/tensorflow中矩陣行列操作下標是怎麽回事兒?

flow round mean 數據 ria lis .html 錯誤 表示 Python中的list/tuple,numpy中的ndarrray與tensorflow中的tensor。 用python中list/tuple理解,僅僅是從內存角度理解一個序列數據

Python三種基礎據類型:列表list元祖tuple和字典dict

列表組 基本數據類型 基本數據 一起 字典 系列 nbsp 類型 查看 Python的三種基本數據類型,列表list,元祖tuple和字典dict 列表List:python最基礎的數據類型,列表內的數據項不需要具有相同的類型,可以包含重復值。列表包括兩個模塊,元素及對應的

python爬蟲爬QQ說說並且生成詞雲圖回憶滿滿!

運維開發 網絡 分析 matplot 容易 jieba 編程語言 提示框 然而 Python(發音:英[?pa?θ?n],美[?pa?θɑ:n]),是一種面向對象、直譯式電腦編程語言,也是一種功能強大的通用型語言,已經具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且

Python-Pcap文件進行處理獲取指定TCP流

serve cap dscp 解析 地址 沒有 ont wikipedia 校驗和 通過對TCP/IP協議的學習,本人寫了一個可以實現對PCAP文件中的IPV4下的TCP流提取,以及提取指定的TCP流,鑒於為了學習,沒有采用第三方包解析pcap,而是對byt

微信小程序的按下擡起事件下拉選擇框的事件及點擊確定的方法函獲取時間的方法省市區的方法。

bin img util req fun data hang UNC 日期 擡起按下的事件: 擡起事件: bind:touchstart="nanOne" 把這條屬性放到標簽裏就可以了 在JS中 nanOne: function () {     this.setDa