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

2020年2月14日プログラミング,家計Python,家計簿,貯蓄,配当

※この記事は2021年5月7日にリライトしました.

どうも,Econです.

この記事は,これまでExcelで管理していた家計簿をPythonに移行した時の話です.

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

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

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

それなら,「元データはExcelに充分にストックされているし,これまでの経験からどんなKPIを設定してどんなグラフが必要かはイメージを持っているので,ゼロから始めてみるか」と軽い気持ちで始めたのが私のPython家計簿です.

前座 Python家計簿の前に

私は2009年に結婚してから家計簿をつけていて,そこから数えてもう13年も家計簿をつけています
途中,2012年は一ヶ月の残業時間が100時間を超える月が続くほど仕事が忙しく,家計簿が一旦途切れてしまった時期もありましたが,2013年以降は欠かさず家計簿をつけていて,今では家計簿の入力データ行は11,000行を超えています.

お金持ちになるには投資による資産運用と堅実な家計の構築という両輪が必要です.
家計簿は収入と支出を見える化することで家計の改善点を洗い出すことができるので,堅実家計の構築を手助けしてくれる最高のツールです.

また,「これはいつ買ったんだっけ?」というのも家計簿のデータからすぐに分かりますし,入力データを振り返ると「あの時ここに行ったんだ,とか,あの時こんなことをしたんだ」というのも思い出すことができ,家計簿のデータは間違いなく私の大事な資産になっていますし,家計簿をつけている人はきっと同じ感想を持つんじゃないかと思います.

Python家計簿のメリット Excelと比べてみて

Python家計簿の一番のメリットはシンプルであることです.

Excel家計簿はデータ検索の簡単さや,カスタマイズのしやすさという点から手書きの家計簿や家計簿アプリより優れていると思います.

ただ,Excel家計簿は慣れてくると色々改善を加えたくなったり,カスタマイズがどうしても必要になってきて,例えば新しいグラフを作りたくなったという簡単なことでも,

  • 新しいシート,行や列を挿入
  • そうした作業で罫線や色の見栄えを整え直す
  • VBAのコードや関数を書き直す
  • 狂ってしまった既存グラフの見栄えを補正する

など色々な作業が発生して結構面倒でした.
また元データを直接いじるので関数が崩れてしまうこともあり,そこに配列関数やindex,find関数などが組み込まれていたら「なんでこんな複雑な関数使ってるんや!」と過去の自分に激怒したくなることもしばしばです.

一方Pythonでは,この記事で後述しますが,下のイメージのように元データは維持しつつ,ある目的のために加工したデータフレームを変数として持ち,そこから必要なグラフを作ることができます.

この,「元データには手を加えず,加工データは変数で持つ」というのがめちゃくちゃ強力で,元データが生のまま残っていると,そこからいくらでも加工データを作れますし,しかもそれは変数なので,Excelのようにマスターテーブルから派生したテーブルがいくつも出来上がる…なんてこともなく,とてもシンプルです.

ステップ0:Python家計簿の全体

  1. Excel (CSVでもOK)のリストに月日と費目と金額を入力
  2. Pythonでグラフ化するために1ヶ月毎に集計した別表を準備する
  3. Pythonでコードを書きグラフ化する

1, 2まではExcel側での作業,3がPythonでの作業です.
ポイントは,ExcelはあくまでPythonでアウトプットするためのデータの入力保管庫のような扱いであるという点です.
そのため,複雑な関数は使わずせいぜいsumifsくらいなのでExcelの管理も楽です.
また,基本はデータのベタ打ちなので容量も重くならず,私のExcelは11,000行を超えていますが,容量はたったの0.6MBです.

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

まずはデータベースの準備です.

データベースはシンプルが鉄則で,私は

  • 日付
  • 大中小の3つに分けた費目
  • 金額

だけを入力する単純なものにしています.
入力が英語なのは,日本語だとPythonでエラーが起きやすいので,それを避けるために英語を使っています.

必要な項目が設定できたら,あとはこれにどんどんデータを入力していきます.

ステップ2:1ヶ月の集計表を準備する

ステップ1で作ったデータベースからそのままPythonで集計してグラフ化することもできますが,Excelで表を準備したほうが楽なので,私は同じファイルに別シートで1ヶ月の集計表を準備しています.
使う関数はsumifs関数くらいなので,簡単に作れます.

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

ステップ2で準備した集計表をPnadasでデータフレームとして読み込みます.
この読み込んだデータフレームを元にして,作りたいグラフのためのデータフレームを変数として作り,そこからグラフを作成するという流れになります.

上でも書いたように,Excelで持っている元データは一切いじらず,必要に応じて別のデータフレームを変数として持たせるので,元データはシンプルなままで拡張が可能です.

毎月チェックするグラフ

ここからは実際に私が作ったグラフを紹介します.
家計管理のために私が毎月チェックしているのは

  • 毎月の収支
  • 予算との比較
  • 貯蓄率

の3つです.

毎月の収支

まずは,その月の収支がどうだったかざっくり把握するために一ヶ月ごとの収支を示したグラフを見ます.
私は,ボーナスや配当などの臨時収入をあてにせず,毎月の給料だけで黒字が達成できる家計を築くのが大切だと思っています.
なので,グラフも毎月の給料だけを収入とした基本収支のグラフと,配当やボーナス,家電購入などの臨時収支を含めた総合収支のグラフを2つ作っています.

予算との比較

私は,次の1ヶ月が始まる前に予算を組んでいます.
なので,黒字を確保できているかを確認するだけでなく,自分が立てた予算を守ることができたかもチェックしています.

守れていればその月の行動をベンチマークとしますし,予算オーバーしてしまった場合は原因と対策を考えてより堅実な家計を作るためのPDCAをまわします.

貯蓄率

実際にいくら貯めることができたかだけでなく,収入のうちどれくらいの割合を貯蓄にまわすことができたかをチェックするために貯蓄率もチェックしています.
こちらも毎月の収支と同じく,毎月の給料だけをベースにした基本貯蓄率と臨時収支を含めた総合貯蓄率をチェックしています.

以上の3つが毎月チェックしているグラフです.
また,この3つのグラフは年ごとのグラフも作成して,1年単位という大きい時間の流れで見た時に自分のお金の使い方はどうなっているのかもちょくちょく確認するようにしています.

不定期でチェックするグラフ

毎月はチェックしませんが,

  • 不労所得割合
  • お金持ち指数(FI Index)

は気になった時にPythonのコードを動かしてグラフを作ってチェックしています.

不労所得割合

私は三度の飯より配当が好きで,証券会社から配当入金のお知らせをもらっていくら入金があったか確認する時は,投資をしている中で一番楽しい時間かもしれません.

最近,若い人を中心にFIRE (Financially Independent, Retire Early)が人気ですが,実際にREするかは別にして,定期的な不労所得を確保できればお金のために働く必要がなくなり,ゆとりのある人生が送れます.

なので定期的な不労所得がどう変化してきたか,今後どれだけ伸ばしていくかを考えることは私にとって大切なことで,そのために下のような折れ線グラフを作っています.

まだまだ全然心もとないレベルでFIREには程遠いですが,右肩上がりの直線を目指してます.

お金持ち指数 (FI Index)

お金持ち指数とは,期待純資産に対してどれだけの資産を持っているかを数値化してもので,0.5以下は蓄財劣等生,2.0以上なら蓄財優等生とされています.

広く知られている指標ではないのであくまで参考ですが,自分の相対的立ち位置が分かる面白い指標です.

お金持ち指数について詳しく知りたい方はこちらの記事を読んでみてください.

最後に

家計簿をつける目的は一緒でも,どのように家計簿をつけるかは人それぞれです.
例えば,養育費という費目が必要な人もいれば不要な人がいたり,ローンがどれだけ残っているか管理したい人もいると思います.

実際に自分で作って使ってみての感想は「Excelに入力,Pythonで出力」という家計簿なら,おそらくどんなカスタマイズでもできる,無限の可能性があると思っています.

ExcelとPythonで堅実家計を作りましょう!


人気ブログランキング
最後まで読んで下さりありがとうございます.
面白かったらフォローしてもらえると励みになります.



Posted by Econ