九州電力の電気使用実績データ(2011年11月~2018年8月/日毎)をひとまとめのデータに加工する

Pythonを使い電力消費量と気温の相関を取ろうと思います。事前準備として九州電力の電気使用実績データをpandas DataFrameにサクッと加工していきます。

九州電力の電気使用実績データは以下のサイトに掲載されています。CSVデータは時間毎。日毎のデータを取る場合は『過去の電力使用実績データ』ページのHTMLから整形していくのが良いでしょう*1

公開ページ

九州電力 でんき予報(電力のご使用状況)

個別月ページ(2014年1月)

九州電力 過去の電力使用実績データ

これは以前書いた記事の応用です。

quzee.hatenablog.com

大まかな作業の流れ

  1. 基本になるDataFrameを作成する
  2. 個別月ページを順次読み込み、テーブルをDataFrameに格納する
  3. 基本のDataFrameに各月のDataFrameを足す

urllib, pandasを使います。

基本になるDataFrameを作成

空のDataFrameを作ってもいいですが、今回は直近月から一個DataFrameを作りました。

import pandas as pd
from urllib.request import urlopen

url = "http://www.kyuden.co.jp/power_usages/history201808.html"
f = urlopen(url)
html = f.read()
df_temp = pd.io.html.read_html(html)

df_temp[0].head で中身を見ると1行目にカラム名が格納されています。

f:id:kazutaka83:20180806004751p:plain

1行目をDataFrameのカラム名として修正します。

df = df_temp[0].loc[1:]
df.columns = df_temp[0].loc[0]

f:id:kazutaka83:20180806005147p:plain

これを基本のDataFrameにします。

個別月ページの読み込みと追加

個別月のページを1枚づつ読み込みます。url が http://www.kyuden.co.jp/power_usages/history<年+月>.html なので年月のリストを作って for で呼び出していきます。

year_month = []
year_month.extend(["201111", "201112"])

year = [f for f in range(2012, 2018)]
month = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"]

for i in year:
    for j in month:
        year_month.append(str(i) + j)

month_2018 = ["01", "02", "03", "04", "05", "06", "07"]

for k in month_2018:
        year_month.append("2018" + k)

大変スマートでは無い方法で年月リストを作りました。もっとスマートな方法があるはずなので奇特な方コメントかTwitterで教えてください。

このリストを使って各ページから情報を引っ張ってきます。

for i in year_month:
     url = "http://www.kyuden.co.jp/power_usages/history" + i + ".html"
     f = urlopen(url)
     html = f.read()
     df_temp = pd.io.html.read_html(html)
     df_add = df_temp[0].loc[1:]
     df_add.columns = df_temp[0].loc[0]
     df = df.append(df_add)

f:id:kazutaka83:20180806010555p:plain

全部で2,441レコード。ハマりポイントなんですが、DataFrame の append は非破壊的なので代入しないと追加されません。これしばらく悩みました。

www.kisse-logs.com

後は日付の部分、単位”万kW”を加工して分析していきます。今日はここまで。

*1:全部まとめて落とすことができるURLあったら教えてください


スポンサード リンク