influxDBからDataFrameの形にする方法
ちょっと苦戦したのでメモ。
このブログを参考にinfluxDBにBitcoinの値段のデータを入れていたんですが、
pythonで分析する際にDataFrameの形にするところでなかなか苦労したのでそのメモです。
このブログのそのまんまでユーザー名、パスワード、DB名を同じにして1分間隔でデータをinfluxdbに入れています。
・環境
InfluxDB v1.2.0
from influxdb import InfluxDBClient import pandas as pd user = 'root' password = 'root' dbname = 'bitcoin' client = InfluxDBClient("localhost", "8086", user, password, dbname) data = client.query("select ltp from bf_ticker ORDER by time desc limit 10") data Out[4]: ResultSet({'('bf_ticker', None)': [{'ltp': 535685, 'time': '2017-09-03T11:20:03.729596451Z'}, {'ltp': 536500, 'time': '2017-09-03T11:19:03.838744087Z'}, {'ltp': 535564, 'time': '2017-09-03T11:18:03.777224574Z'}, {'ltp': 536000, 'time': '2017-09-03T11:17:02.890717927Z'}, {'ltp': 536097, 'time': '2017-09-03T11:16:02.978708976Z'}, {'ltp': 537645, 'time': '2017-09-03T11:15:02.938443121Z'}, {'ltp': 537965, 'time': '2017-09-03T11:14:03.073302088Z'}, {'ltp': 538000, 'time': '2017-09-03T11:13:03.165078998Z'}, {'ltp': 538036, 'time': '2017-09-03T11:12:03.27361028Z'}, {'ltp': 538671, 'time': '2017-09-03T11:11:05.372535397Z'}]}) print(type(data))
ここまででinfluxDBにアクセスしてクエリで値を取ってこれました。
たくさんデータを取ってきても面倒なんで一旦10分前のデータまで取ってきています。
取ってきたデータのクラスはinfluxdb.resultset.ResultSetになっているので、リスト型にします。
data2 = list(data.get_points(measurement='bf_ticker')) data2 Out[6]: [{'ltp': 513680, 'time': '2017-09-03T12:10:03.466149944Z'}, {'ltp': 513700, 'time': '2017-09-03T12:09:03.506010242Z'}, {'ltp': 515009, 'time': '2017-09-03T12:08:03.010294321Z'}, {'ltp': 515400, 'time': '2017-09-03T12:07:03.539533328Z'}, {'ltp': 515603, 'time': '2017-09-03T12:06:03.418459741Z'}, {'ltp': 515867, 'time': '2017-09-03T12:05:03.477731213Z'}, {'ltp': 516300, 'time': '2017-09-03T12:04:03.188820794Z'}, {'ltp': 516559, 'time': '2017-09-03T12:03:03.270773099Z'}, {'ltp': 517374, 'time': '2017-09-03T12:02:03.40096094Z'}, {'ltp': 516400, 'time': '2017-09-03T12:01:03.409848199Z'}] print(type(data2))
これでリスト型になりました。
df = pd.DataFrame(data2) Out[9]: ltp time 0 513680 2017-09-03T12:10:03.466149944Z 1 513700 2017-09-03T12:09:03.506010242Z 2 515009 2017-09-03T12:08:03.010294321Z 3 515400 2017-09-03T12:07:03.539533328Z 4 515603 2017-09-03T12:06:03.418459741Z 5 515867 2017-09-03T12:05:03.477731213Z 6 516300 2017-09-03T12:04:03.188820794Z 7 516559 2017-09-03T12:03:03.270773099Z 8 517374 2017-09-03T12:02:03.40096094Z 9 516400 2017-09-03T12:01:03.409848199Z
無事データフレームの形にできました。
この後はtimeを使いやすいフォーマットに変更すれば良いかと思います。
========================================
bitFlyerのticker情報をInfluxDBに入れてGrafanaで可視化する
http://wolfin.hatenablog.com/entry/2016/09/26/155754
API Documentation
http://influxdb-python.readthedocs.io/en/latest/api-documentation.html
Query response object: ResultSet
http://influxdb-python.readthedocs.io/en/latest/resultset.html
InfluxDB Python Examples
http://influxdb-python.readthedocs.io/en/latest/examples.html#tutorials-pandas
関連する投稿:
- 2017-03-14:季節調整済みARIMAモデルで電力使用状況を推定してみる part2 予測表示
- 2017-02-24:電力データから季節変動の分解
- 2014-05-02:Pythonでグラフを描く
- 2016-01-08:みたけ山トレイルランのヒストグラム
- 2013-11-04:Rの使い方メモ その2
“influxDBからDataFrameの形にする方法” への1件の返信