見出し画像

PythonでExcel家計簿の集計を自動化

毎月の出費を管理するために家計簿をつけている方もいると思いますが、毎月のルーチンワークが少し面倒に感じたりしていないでしょうか。

そんなルーチンワークは自動化してみましょう!

家計簿をつけていなくても、PythonのPandasを使ったデータ処理の練習にもなると思うので読んでみてください。

前半ではPythonでやることの内容を解説します。
後半では実際のソースコードを紹介します。

環境

参考までに私の動作環境を記載しておきます。

Windows 10(64bit)
Python 3.9.5(64bit)
Visual Studio Code 1.57.1


Excelデータ

この記事で扱うExcelデータは以下とします。
ファイル名は「(年)_(月).xlsx」とし、データの中身はシンプルに出費だけの記録とします。以下は今回の例で扱うデータです。

Excelファイル名
 例:2021_06.xlsx

画像1


Pythonで処理する内容

大まかには以下の処理をPythonで行います。
フォルダ内に複数月のファイルがある場合は、指定したフォルダ内に入っているすべてのファイルを一気に処理するようにします。

1. データの前処理
2. ラベル名ごとに集計
3. 円グラフ&棒グラフ出力


データ前処理

まず、フォルダ内にある複数月のExcelファイルすべてのパス(データの在処)を取得してリスト化します。以下は取得したパスの例です。

[WindowsPath('/Users/name/workspace/Python/Kakei/data_forNote/2021_05.xlsx'), 
WindowsPath('/Users/name/workspace/Python/Kakei/data_forNote/2021_06.xlsx')]

次に、各ファイルのデータを分析しやすくするために前処理を行います。今回はpandasを使用して処理していくのですが、例えば日付の「6/1(火)」は文字列で集計しにくいため、datetime型のデータに変換します。

特にポイントとなるのが曜日です。ここでは曜日は処理しにくいので文字列から一旦削除してしまいます。さらに、ファイル名から年数(2021_06.xlsxならば2021)を抽出して日付データに付け加えます。

前処理する前のデータが下記です。

         日付    内容    金額 保有金融機関 大項目  中項目
0  06/29(火)  スーパー  -600     なし  食費  食料品
1  06/28(月)  スーパー -1500     なし  食費  食料品
2  06/26(土)  スーパー -2000     なし  食費  食料品

前処理した後のデータは下記になります。

          日付    内容    金額 保有金融機関 大項目  中項目
0 2021-06-29  スーパー  -600     なし  食費  食料品
1 2021-06-28  スーパー -1500     なし  食費  食料品
2 2021-06-26  スーパー -2000     なし  食費  食料品


ラベル名ごとに集計

前処理が完了したら、ラベル名ごとに金額を集計します。

ラベル名とは「食料品」や「外食」などです。
作成したプログラムでは以下のラベル毎に集計してpandasのデータフレームに格納します。

データフレームの列名(columns)にはラベル名、行名(index)には年月を格納します。

            食料品     食費     外食 ドラッグストア    家賃・地代    電気代    水道代 ガス・灯油代 インターネット その他
2021/06  -23100  -2650  -4500   -3500  -100000  -7000  -5000  -3500   -4000   0


グラフ出力

集計したデータをグラフ出力します。
今回は以下のように円グラフと横棒グラフを出力します。

画像2

画像3


Python ソースコード

以降に、ここまで解説した内容のPythonソースコードを添付します。今回、初心者の方でも分かりやすいよう、下図のように各処理の内容をコメント文で補足していますので、理解しやすくなっていると思います。

画像4

ぜひ、気になった方は見てください。

ここから先は

3,100字

¥ 100

何かお役に立てたら、サポートしていただけると嬉しいです!モチベーションを高めて、アウトプットしていきます!