Pandasを用いた折れ線グラフの作成|Python

1 アクセス

この記事はPandasを用いた円グラフの作成|Pythonの続き
今回は折れ線グラフを表示する

この記事は、以下の著作物を改変して利用しています。
あいちの人口(2024年9月1日現在) 愛知県人口動向調査結果 月報、愛知県、クリエイティブ・コモンズ・ライセンス
表示2.1日本(http://creativecommons.org/licenses/by/2.1/jp/

折れ線グラフの描画

はじめに

今回は、豊田市、岡崎市、一宮市の人口推移を折れ線グラフ化する

データの整形

あとでグラフで使うため、データフレームを以下ような形にする

  • 列ラベルは群市の名前にする
  • 行ラベルは’20231101’から’20240901’の日付のみにする

つまり、時系列順に人口データが縦に並ぶことになる

ソースコードは以下の通り(後でグラフを表示するためのライブラリのインポートを含む)

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib

# データの読み込みと抽出
df = pd.read_csv('population.csv', encoding='shift_jis')
df = df[(df["国籍区分"]=="a)日外") & (df["性別"]=="a)男女")]
# 行ラベルを'郡市'にする
df = df.set_axis(labels=df['郡市'])
# 不要な列は削除する
df = df.drop(labels=['コード', '県', 'ブロック', '郡市', '区町村', '国籍区分', '性別', '年齢区分', '内容'], axis=1)
# 転置して表示
print(df.T)

実行結果は以下の通り

郡市         ―       名古屋市      名古屋市  ...    北設楽郡    北設楽郡   北設楽郡
20231101  7482401.0  2327950.0  165197.0  ...  4006.0  2658.0  918.0
20231201  7481332.0  2327700.0  165142.0  ...  3988.0  2657.0  913.0
20240101  7478574.0  2327322.0  165140.0  ...  3982.0  2648.0  914.0
20240201  7474927.0  2326518.0  165108.0  ...  3968.0  2647.0  911.0
20240301  7470402.0  2325207.0  164979.0  ...  3961.0  2640.0  910.0
20240401  7460648.0  2322143.0  164338.0  ...  3932.0  2619.0  905.0
20240501  7468102.0  2328397.0  165353.0  ...  3922.0  2631.0  909.0
20240601  7468844.0  2329553.0  165371.0  ...  3913.0  2627.0  908.0
20240701  7467278.0  2329438.0  165306.0  ...  3899.0  2618.0  903.0
20240801  7467704.0  2330296.0  165396.0  ...  3886.0  2609.0  900.0
20240901  7465512.0  2330385.0  165413.0  ...  3877.0  2602.0  896.0

[11 rows x 71 columns]

pandas.Dataframe.plot.line()メソッド

折れ線はlineメソッドで描くことができる
描画したい列のみを指定することができる

# 折れ線グラフの描画
df.T[['豊田市', '岡崎市', '一宮市']].plot.line()
plt.title(label='推計人口の推移')
plt.xlabel(xlabel='日付')
plt.ylabel(ylabel='人口')
plt.show()

実行結果

データフレームの整形が大変だったが、それさえできればグラフの描画は簡単だった

今回のスケールでは人口変化は折れ線グラフからはほとんど分からなかった
もっと長期間のデータを探すか、縦軸を100~1000人程度のスケールにする必要がありそう

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です