どうも、月見(@Suzuka14144156)です。
この記事では、Pythonで前年同月比を計算する方法について解説します。
よってこのようなお悩みをお持ちの方におすすめの記事です。
- 昨年の売り上げに対して今年の同月の比はPythonでどのように求めるの?
- コードが知りたい
Pythonで前年同月比を計算する方法の概要
- pandasを利用すると簡単にできる
- データは、DatetimeIndexを利用すること
これによって、特定の月のデータを抽出することが比較的容易なコードでできます。
DataFrame[DataFrame.index.month == 〇〇]
Pythonで前年同月比を計算する方法の環境
Jupyter labを使います。
使用するライブラリ
- datetime:時系列データを扱う
- pandas_datareader:cpiを取得する
- pandas:データ処理
- plotly:可視化
インストール方法
コマンドプロンプトから以下のコマンドをたたくことでインストール可能です。
pip install jupyterlab
pip install pandas_datareader
pip install pandas
pip install plotly
Pythonで前年同月比を計算する方法
本記事では、米国の消費者物価指数を使って解説します。
CPIの取得
fredというサイトから、CPIのデータを取得します。
import datetime
import pandas_datareader.data as web
#1950年1月~現在
start = datetime.datetime(1950, 1, 1)
end = datetime.datetime.now()
cpi = web.DataReader('CPIAUCNS', 'fred', start, end)
cpi
上記のコードを実行すると以下のテーブルが表示されます。
1950~2023年3月(最新)のCPIが取得できていることが分かります。
可視化
このデータをplotlyを使って可視化します。
import plotly
import plotly.express as px
cpi_g = cpi.reset_index()
px.line(cpi_g, x="DATE", y="CPIAUCNS")
このようなグラフが表示されます。
前年同月比の計算
pandasを使うことで、簡単に計算することができます。
import pandas as pd
for i in range(1,13):
df = cpi[cpi.index.month == i]
df_diff = df.shift(1)
df_y = df/df_diff
if i==1:
df_y_list = df_y
else:
df_y_list = pd.concat([df_y_list,df_y])
df_y_list_sorted = df_y_list.sort_index()
df_y_list_sorted
以下のコードでDatetimeIndexの月が同じもののみを抽出することができます。
cpi[cpi.index.month == i]
抽出した月をshiftして前年同月比を計算します。
あとは、連結して、時系列順にソートして完了です。
以下のような結果が表示されます。
1950年は、前月のデータが存在しないのでNaNとなります。
本結果を可視化します。
df_y_list_sorted_g = df_y_list_sorted.reset_index()
px.line(df_y_list_sorted_g, x="DATE", y="CPIAUCNS")
前年同月比の結果にすることができました。
本記事の関連の参考書や講座
基本的なPythonのコード知識を学ぶには、以下の書物がオススメです。
created by Rinker
¥2,574
(2024/10/14 16:19:56時点 Amazon調べ-詳細)
Udemyのオンライン講座は、以下がオススメです。
Udemyは買い切りなので、一度購入してしまえば、何度でも閲覧できるのでオススメです。
現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!
まとめ
この記事では、Pythonで前年同月比を計算する方法について解説しました。
- pandasを利用すると簡単にできる
- データは、DatetimeIndexを利用すること
これによって、特定の月のデータを抽出することが比較的容易なコードでできます。
DataFrame[DataFrame.index.month == 〇〇]
コメント