df.resample(‘M’).sum()で作成した時間軸(DateTimeIndex)を月末から月初めに変更する(pandas.tseries.offsetsを使って)

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 – 

コメント

タイトルとURLをコピーしました