Pythonで家計簿!Excel家計簿からの移行

2020年2月14日家計Python,家計簿

Python, 最近特に人気のプログラミング言語で,聞いたことがある人もいると思います.Pythonはライブラリと呼ばれる,特定の目的のために機能をまとめたパッケージが充実していて,例えばPandasというライブラリを使えば効率的にデータフレームの管理ができますし,Matplotlibというライブラリではきれいなグラフが描けます.

私は職業プログラマーではないですが,Pythonの勉強を始めてから,Pythonをうまく使えば効率的に家計管理ができそうと思ってPython家計簿を考えたのがきっかけでした.

まずは他の人がどんなPython家計簿を作っているか参考にしてみよう…と色々なブログを見て回ったのですが,Pythonで家計簿を作ってる人は少ないようであまりヒットしませんでした.

それならゼロから自作してみようと軽い気持ちで始めてみたのですが,やってみるとExcelとPythonのシナジー効果にはまりました.今ではデータ入力用にExcelを使い,Pythonを使ってデータを加工したり,きれいなグラフを作って楽しみながら家計管理をしています.

  • 想定読者:Pythonを使って家計簿を作りたいと考えている人
  • ExcelとPythonは家計簿を作るのに最高のマリアージュ
  • Excelにデータ入力,Pythonでデータ加工やグラフ作成というシンプルなシステム
  • シンプルだから好きなようにカスタマイズが可能

Python家計簿のメリット

Python家計簿の一番のメリットはシンプルなことです.Excel家計簿はデータ検索やカスタマイズの楽さで手書きの家計簿や家計簿アプリより優れていますが,カスタマイズをすると

  • 新しいシート,行や列の挿入
  • 追加したエリアの罫線や色の見栄えを整え直す
  • VBAのコードや関数を書き直す
  • 既存グラフの見栄え修正

など色々な作業が発生します.自分で書いた関数なのに複雑な式を読み解くの一苦労なんてのはExcelあるあるです.

一方Python家計簿では,Excelに入力した元データは維持しつつ,それを必要に応じてデータフレームに加工して変数扱いにして,そこから必要なグラフを作ることができます.

元データは不変,加工データを変数で持つというのがかなり強力で,元データが残っているといくらでも加工データを作れる上に,Excelのように派生したテーブルがいくつも出来上がる…なんてこともなく,とてもシンプルです.

Python家計簿の全体

必要なステップは

  1. Excelに入力用テーブルを用意し,そこに収支のデータを入力
  2. 1のデータをPythonでコードを書き,必要なグラフを作る

の2つだけです.ExcelはあくまでPythonでアウトプットするためのデータ入力ファイルなので,複雑な関数やリンクはほとんど使いません.そのため関数の読み解きに苦労することもなく,データは12,000行を超えていますが,容量は約1.5MBでサクサク動きます.

ステップ1:Excelで入力データベースを準備

入力用Excel(一部加工しています)

データベースは

  • 日付
  • 費目のカテゴリー
  • 費目名
  • 金額
  • メモ
  • タグ(浪費やいい使い方などをタグ付けするため)
  • カード払いタグ(カードの請求と突合するため,確認できたらタグは削除)

を準備しています.カテゴリー名や費目名はPythonで集計したりグラフを描く時にも使うのですが,日本語だとPythonでエラーが起きやすいので,英語を使っています.

Excelのテーブルが準備できたら全ての収支をここに全て入力します.

ステップ2:Pythonでコーディングしてグラフ作成

Pythonコード(抜粋)

Excelの入力テーブルをPandasでデータフレームとして読み込み,これを元にして,作りたいグラフ用のデータフレームを変数として作り,グラフを作成します.

Excelの元データは不変なので,新しいグラフが必要になった時は元データから好きなだけ拡張ができます.

グラフ 予実算比較

予実算比較のグラフ

家計簿の目的の一つが予算に対して支出をマネージできたかを確認し,お金のPDCAを回すことなので,予実算グラフは毎月確認しています.

私は,ボーナスや配当などの臨時収入に頼らず,毎月の給料だけで黒字達成できる家計を築くのが大切だと思っているので,給料だけで貯蓄できるように予算設定しています.

グラフ 貯蓄率

左:手取り給与内での貯蓄率 右:総収入内での貯蓄率

上に書いたように,給料内での支出マネージが大事ですが,実際どれだけ貯蓄できたのか,つまり総収入に対する貯蓄率も把握する必要があるので,グラフを2つ作っています.

左が手取り給与の中での支出カテゴリーの割合で,右が総収入の中での支出カテゴリーの割合です.

Excelでも,このようなドーナツグラフを描くことはできますが,Pythonなら自分の好きな配色を自動で設定できます.グラフを描画するためのMatplotlibは扱いが難しいですが,慣れてしまえばもうExcelでのグラフ作成には戻れません.

最後に

家計簿を作るのに,ExcelとPythonは最高のマリアージュです.Excelに入力,Pythonで出力させるシンプルなシステムですが,シンプルだからこそ,どんなカスタマイズもできます.

では,また.

Posted by Econ