目次
関西電力が提供する電力消費実績データ
関西電力が提供する「関西エリア」の電力消費実績データをダウンロードして、いろいろいじくってみます。
関西電力の関西エリア電力消費実績データはこちらからダウンロードできます。
ダウンロードは月単位になってます。
この記事を書いている2019年7月時点で、当月データが既にあるのが凄いです。
これを気象データとかとの相関をとったり、回帰問題にしてみたり、色々使えるデータにできないかな?というのが今回のテーマです。
とりあえずダウンロードしてみる
ZIPファイルです。
解凍してみると、こんな感じで、1日1ファイルで1月分のファイルがあります。
中身はこう。
レポートみたいで、とても機械学習とかに使えそうなフォーマットではありません。
加工しないと駄目ですね。
加工の方針を決める
気象庁の気象データは1日ごとの気温、湿度、風量などです。
なので、それと対比させるには電力使用量も1日毎の最高と最小のみを記録してあるデータを作ればよいです。
それに使えそうな箇所を探してみると、真ん中あたりに、1時間ごとの消費実績の一覧があり、最後の方に5分間隔値の一覧があります。
これを読み取って、最大値と最小値を出力すればよさそうです。
とりあえず、時間情報で「0:00」とか「1:00」とかをキーに抜き出せばいいかなと思ってますが、それだと1時間ごと情報と5分毎情報で一部ダブります。
なので、予測の列の有無とかではじいて・・とか考えて・・。
加工するPythonプログラム
さくっと作ってみたプログラムがこんな感じです。
sk_data_kanden.py
from pathlib import Path import csv keylist = [ '0:00', '1:00', '2:00', '3:00', '4:00', '5:00', '6:00', '7:00', '8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00' ] path = Path('./data/') filelist = list(path.glob('*.csv')) with open('kanden.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(['年月日', '電力量(最大)', '電力量(最小)']) for f in filelist: with open(f, newline='') as csvfile: max = 0 min = 9999999 day = '' lines = csv.reader(csvfile, delimiter=',') for row in lines: if(len(row) >= 5): if(row[1] in keylist): if(row[1] == '0:00'): day = row[0] v = int(row[2]) if(max < v): max = v if(min > v): min = v writer.writerow([str(day), str(max), str(min)])
カレントフォルダに「data」フォルダを作り、その下に日別のファイルをまとめておきます。
元データを見ると、1時間単位の行と、5分単位の行で列数が違うので、列数が5より大きいという条件で1時間単位の行だけに絞ってます。
あとは、時間を示す文字列をキーリストにして、一致した実績時間を比較していって、1日のMax(最大電力量)とMin(最小電力量)を記録する・・とまあ、なんのてらいもないロジックです。
でもまあ。
こういうのはスピード勝負だと思ってて。
こんなPythonスクリプト作ることで、だいたい1年間分くらいのデータが1時間ちょっとでできれば上出来かなと思ってます(笑)
あと、必要に応じて2年・3年と追加するつもりです。
その時は、書き込み用のCSVのopenをこんな風にして追加書き込みにします。
with open('kanden.csv', 'a', newline='') as csvfile:
出力したCSVデータのイメージ
とりあえず、1年分ダウンロードしてCSVを作ってみました。
日付、最大消費量、最小消費量
で1行になってます。
年月日等のヘダーは、あとで他のデータとマージした時に必要になるので、暫定的につけてます。
今回はわかりやすさ優先で、ヘダーを日本語にしてますが、ご存じのとおり、pythonで扱うなら日本語でないほうが楽です。
できないわけではないですが、若干、ひっかかるポイントが増えて面倒くさいです。
だから、ヘダーを英語にしてもらっても全然OKなので、補足しておきます。
さて。
次回は気象データを組み合わせ習用データを作ってみようかな・・などと考えてます。
今回はこんなところで。
ではでは。