DBへの格納ができたので、今度はそのデータをグラフ化する。数字の羅列は表形式にすれば分かりやすくなるけど、一般的にはグラフのほうがイメージが伝わりやすいし、一目で状態を把握できる。じゃ、やってみよう。
#=============================== # DB内テーブル中身の確認(pandas) # matplotでグラフ書き出し #=============================== import sqlite3 import pandas as pd import matplotlib.pyplot as plt dbname = 'TEST.db' connection = sqlite3.connect(dbname) cur = connection.cursor() sql1 = 'SELECT temp, hour FROM WeatherTable LIMIT 24' cur.execute(sql1) """ 備考; データが3日分連続であり、それをグラフ表示すると見づらいので、 SQLで抽出時に、LIMITを使用。 (例)LIMIT 24・・・上限24 (例)LIMIT 2,10・・・3から上限10まで """ # データがあるところまで全て読み込む(リスト構造) result = cur.fetchall() #データフレーム(表に書き出すイメージ) df = pd.DataFrame(result,columns=["temp", "hour"]) """ 備考; 書式:DataFrame(data,index,columns) 今回はindex省略のため、(Data, Columns)を引数とる。 X軸=時間、Y軸=気温のグラフを作成するので、 temp, hourのデータを変数dfに書き出す。 """ # グラフのX軸、Y軸の指定 x = df.hour y = df.temp # データの指定 plt.plot(x, y) # グラフ内のラベル設定 plt.xlabel("Time") plt.ylabel("Temperature(℃)") plt.grid(True) plt.tick_params(axis='both',which='major',labelsize=14) # グラフの表示 plt.show() #================== # ディスプレイにデータ表示 #================== # ディスプレイ表示省略しない pd.set_option("display.max_colwidth", None) pd.set_option("display.max_rows", None) # ディスプレイに表示 print(df) #================== #DB終了処理 #================== cur.close() connection.close() print('--------------------') print('end of line') input()
◆実行結果(グラフ)
グラフにしてみると分かりやすい。明け方はずいぶん冷え込んだねぇ。4月なのに11℃って…。一方日中の昼過ぎになると18℃くらいまであがっている。
◆実行結果(DataFrameをディスプレイに表示)
◆データ取り出した時のリスト構造はこんな感じ(見づらいな~)
↑ このデータはresult = cur.fetchall()の後に、print(result)やってみると出る。なんかどっかで見たような形式だなぁ…あ、PlanetOSで取得した気象情報のjsonだ。まったく同じではないけど。。。なるほどねぇ、どの言語も似たような表現なんだなぁ。。。