TSV形式で記録してある家計簿データを使って、月ごとの支出額の推移をグラフ化することにしました。
日付はDatetimeIndex形式としてデータをdfへ受け渡し、
df.resample(“M”).sum() とすると、月末区切りで値を合計できます。
df_all_new = df.resample(“M”).sum() としておきます。
月ごとに集計したdf_all_newにおいて、indexは月末になります。
▲df_all_new.index を見ると、いずれも月末の値となっていることがわかります。(今回のデータでいうと、はじまりが2021/04/30、終わりが2022/01/31)
▲ところが、df_all_new.indexを縦軸にしてグラフ化してみると、軸がずれている見た目になってしまいます。
(はじまりが2021/05、終わりが2022/02、に見える。)
はじまりが2021/04、終わりが2022/01、になるようにしたいです。
これを解決するために、 df_all_new のindexを、それぞれ月初めに変更しました。
変更する手順です。
import pandas.tseries.offsets as offsets #~中略~ df_all_new = df.resample("M").sum() df_all_new.index = df_all_new.index - offsets.MonthBegin(n=1)
▲offsetsを使うことで、日付を足し算・引き算で調節することができます。
df_all_new.index – offsets.MonthBegin(n=1) とすることで、df_all_new.indexを月初めとすることができます。
▲上記操作を行った後にdf_all_new.indexを見ると、月初めに変更できていることがわかります。
▲もう一度グラフ化してみると、データと軸の見た目が一致するようになりました。
参考 Python pandas で日時関連のデータ操作をカンタンに – StatsFragments –
参考 Time series / date functionality — pandas 1.3.5 documentation –
コメント