MySQLデータをpandas-bokehでグラフ化(備忘録)

毎日暑いので、エアコンの効いた部屋でノンビリPCいじってます。今日は、先日サーバーを入れ替え、自宅温度などをESP32からMySQLに取り込み、これをグラフ化するところまで備忘録にしておきます。

必要モジュールのインストール

今回はpandas-bokehとsqlalchemyをインストールしました。それぞれpipを用いてインストールします。

pip install pandas-bokeh
pip install sqlalchemy

全体のコードは以下のとおりです。

import pandas as pd
import sqlalchemy as sa
import pandas_bokeh

user='esp32'
password='*******'
host='192.168.1.**'
db='esp_data'
port=3306

url = f'mysql+pymysql://{user}:{password}@{host}:{port}/{db}?charset=utf8'
engine = sa.create_engine(url,echo=False)

query = "select reading_time,temp from SensorData order by reading_time desc limit 1000"
#query="select * from SensorData order by reading_time desc limit 10"
df = pd.read_sql(query,con=engine,index_col='reading_time')
#print(df)

df.plot_bokeh()

たったこれだけのコードです。16行目のindex_col=’reading_time’でX座標が時間軸になり、ソートはdescですが、プロットするときは経時的に描画されます。

Bokeh Plot

Follow me!