techrmc’s blog

ICT大好きな中小企業診断士のブログです

Pythonによる電気・ガス料金データ分析

電気やガスの料金が高騰しているので、ここ数年間の毎月の料金と使用量をグラフ化してみました。Python環境としてAnacondaからJupyter Labを立ち上げ、pandasとMatplotlibを利用して、データ加工と可視化を行なっています。

データの準備

東京ガスの電気・ガスの利用明細は、ホームページ"my TOKYO GAS"からcsv形式でダウンロードできます。ただし、過去2年分のデータしかダウンロードできないので、2年分以上をデータ分析するには、過去にダウンロードしたcsvファイルを繋ぎ合わせる作業が必要です。このcsvファイルの加工をPythonガリガリと書くのは大変なので、テキストエディタ表計算ソフト(ExcelやNumbersなど)で作業した方が楽でしょう。この時、今後、将来のデータを付け加えやすいように、csvファイルの列(カラム)はダウンロードした状態から変更しない方が良いです。列の状態を変更してしまうと、将来のデータを付け加えていく作業が面倒になります。

Jupyter LabでのPythonプログラミング

1. まずデータ編集に用いるpandasと、グラフを描くMatplotlibをインポートします。

ライブラリのインポート

2. csvファイルを読み込みます。電気の場合、csvファイルの各行は、次の項目がカンマ(",")で区切られています。

お客さま番号 供給地点特定番号 契約種別 契約電流 請求年月日 使用期間開始日 使用期間終了日 料金 使用量

3. 今回は、使用期間終了日を元に、年月を判定することにします。お客さま番号・供給地点特定番号・契約種別・契約電流・請求年月日・使用期間終了日は不要なので、これらのカラムを削除し、使用期間終了日・料金・使用量のみを残します。

不要カラムの削除

4. 使用期間終了日は、年/月/日で表現されていますが、これを年月に変更するための処理を行います。その準備として、使用期間終了日のデータタイプをdf.dtypesで確認してみるとobjectとなっています。

使用期間終了日のデータタイプ

5. 使用期間終了日から、年-月形式(文字列)のdate、year、monthを抽出し、これらを新たなカラムとして付け加え、次に、カラムの順序を、date、year、month、料金、使用量に変更します。

date、year、month抽出。カラム並び替え。

6. 各カラムのデータタイプを確認してみると、dateはobject(文字列)、year・month・料金はint64、使用量はfloat64となっています。

各カラムのデータタイプ

7. DataFrameのインデックスをdateに変更します。(この作業は、プログラミング中にDataFrameの表示を見やすくするためだけなので、必須ではありません。)

インデックスをdateに変更

8. DataFrameを表示してみると、dateをインデックスとして、year、month、料金、使用量の順でカラムが構成されていることがわかります。

DataFrameの表示

9. Matplotlibを使って、料金と使用量の2種類の折れ線グラフを表示します。どちらも、最も古い2016年から直近の2023年まで、年(year)ごとに月変化がわかるようにします。plot()で全てのグラフを描き終えたら、plt.show()でグラフを表示し、fig.savefig()でグラフをファイル保存します。

折れ線グラフの描画とファイル保存

電気料金(上段)と電気使用量(下段)のグラフ

以上で、電気の料金・使用量がグラフ化できました。ガスのcsvファイルは、電気と若干、カラム構成が異なりますが、ガスも同様の手順でグラフ化できます。