電気やガスの料金が高騰しているので、ここ数年間の毎月の料金と使用量をグラフ化してみました。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、料金、使用量に変更します。
6. 各カラムのデータタイプを確認してみると、dateはobject(文字列)、year・month・料金はint64、使用量はfloat64となっています。
7. DataFrameのインデックスをdateに変更します。(この作業は、プログラミング中にDataFrameの表示を見やすくするためだけなので、必須ではありません。)
8. DataFrameを表示してみると、dateをインデックスとして、year、month、料金、使用量の順でカラムが構成されていることがわかります。
9. Matplotlibを使って、料金と使用量の2種類の折れ線グラフを表示します。どちらも、最も古い2016年から直近の2023年まで、年(year)ごとに月変化がわかるようにします。plot()で全てのグラフを描き終えたら、plt.show()でグラフを表示し、fig.savefig()でグラフをファイル保存します。
以上で、電気の料金・使用量がグラフ化できました。ガスのcsvファイルは、電気と若干、カラム構成が異なりますが、ガスも同様の手順でグラフ化できます。