Keen IOに蓄積した自家発電量データをPythonで可視化する: ピボットテーブルの生成

Udemyの実践 Python データサイエンス復習を兼ねて、自家発電量データからピボットテーブルを生成します。

ピボットテーブルとは?

横並びに入力したような、それなりの量のデータを自前で用意するには、Keen IOに蓄積した1年分の自家発電量データしかないので、これを使います。なぜ横並びに入力したようなデータが必要なのかは後で触れます。

また、Keen IOとは以下のようなサービスです。

  • REST API経由でデータを送信することができ、オンラインのデータベースに蓄積が可能
  • データを可視化してWeb経由で参照するためのダッシュボードサンプルコードを無料公開しており、カスタマイズ可能
  • 月当たりのデータ送信量が少なければ全て無料で使用可能、有料のPro版ならデータ解析もしてくれるらしい

keenio home

まずはKeen IOからデータをロードするための下準備。project_id、read_key、master_keyには、Keen IOにログイン後、プロジェクトのホーム画面で「Show API Keys」ボタンを押して表示されるキー値を入れます。

Keen IOに溜めた生データを3日分取得します。this_n_daysオプションで任意の日数を指定できます。他にもprevious_n_weeksとか色々あるんですが、詳細はKeen IOのヘルプを参照ください。

扱いやすいように、listをDataFrameにします。

timestampが辞書メンバの入れ子になっていて扱いづらいので、取り出します。

下準備が終わったので、これからピボットテーブルを生成しますが、その前に…。

ピボットテーブルを生成するpivot関数の仕様は以下のようになっています。

データのどの列をindex、columns、valuesとして割り振るかをこのpivot関数の引数に指定してテーブルを生成するので、冒頭で触れた横並びに入力したようなデータの方が都合が良い(というより、そうでないデータは横並びに整形し直す必要がある)んですね。

ということで、keenioから取得したデータのtimestamp列をindex(グラフ描画するときのX軸)、label列をcolumns(hueに相当する)、value列をvaluesとして指定し、ピボットテーブルを生成します。

data.info()とdata_p.info()の結果を見比べてみると…

dataの方は3192 entriesのindexがあったのに対し、data_pは399 entriesになっています。

(total 8 columns)とある通り、data.labelは以下の8種類あり、これをcolumnsとしてピボットテーブルを生成したので、3192/8=399ということですね。

data_pをダンプすると、こんな感じ。

データをグラフにプロットすると… 次回に続く。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする