今回は東京電力の消費電力量をC#で分析してみることにします。消費電力量はここからダウンロードできます。スクレーピングというヤバいことをする必要はありません。

過去の電力使用実績データのダウンロード|でんき予報の解説|東京電力ホールディングス株式会社

ダウンロードしたら適当なフォルダをつくって保存しておきましょう。ここではダウンロードしたファイルを実行ファイルと同じフォルダに保存しています。

以下は保存しているCSVファイルのリストを取得するメソッドです。ファイルはたしかに存在するという前提で作成しているのでファイルが存在しない場合はその旨メッセージボックスが表示されますが、エラー時の処理はしていません(超テキトー。本当はダメです)。

ClosedXMLを使うのでNuGetでインストールしておいてください。

ダウンロードしたCSVファイルは以下のような構造になっているので最初の3行は捨ててあとは以下に示すDataオブジェクトのリストとして取得できるようにしておきます。

これがDataクラスです。2017/1/1,0:00,2783のような文字列を渡すと、年、月、日、時刻、消費電力(KW)に分解してDataクラスのなかに格納します。2017/1/1,0:00,2783であれば “/”, “,”, “:” で分割すれば必要なデータを取得できます。

これはCSVファイルからDataオブジェクトのリストを生成して返すメソッドです。

これは1時間おきに記録されている電力使用実績をそのまま表にしただけです。

実行結果

先程は1時間おきに記録されている電力使用実績をそのまま表にしただけであり、データとして面白くありません。そこで各月の電力使用実績を表にします。これで電力使用量が多い月とそうでない月がわかります。

それから最大値と最小値が大きく異なる月があるかもしれません。そこでそれもわかるようにしました。

実行結果

まずはExcelで書き込むデータを格納するクラスをつくります。

まずDataオブジェクトのリストを取得してから、Data.YearとData.Monthが同じもののグループ化します。そしてここからData2オブジェクトのリストを作成し、ファイルとして書き込みます。

それから時間帯によっても消費電力は変わってきます。昼は工場で大量に電気を消費すると予想できます。ただ一般家庭では夏と冬では消費電力が大きくなる時間帯は違ってくるかもしれません。そこで月と時間帯のふたつに注目して表をつくります。

月日でグループ化し、さらに時刻でグループ化しています。そして時刻でグループ化されたDataオブジェクトからData.ElectricPowerKWの平均値を求めます。そしてこれをExcelファイルとして保存します。