Pandas.Dataframeの列の引き算|Python

6 アクセス

この記事はPandasを用いたヒストグラムの作成|Pythonの続き
今回も、愛知県の推計人口データを用いる
2024年9月と2023年11月の人口の差を求めて、人口の増減を出力することを目標とする

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

データの読み込みと抽出

これまで同様、csvファイルを読み込み、国籍区分が日外、性別が男女の行のみを取り出す
さらに、出力が見やすくなるように、必要な列のみを抽出する

ソースコードは以下の通り

import pandas as pd

# データの読み込みと抽出
df = pd.read_csv('population.csv', encoding='shift_jis')
df = df[(df["国籍区分"]=="a)日外") & (df["性別"]=="a)男女")]
df = df[["ブロック", "郡市", "区町村", "20231101", "20240901"]]

dfは以下のようになる

差の計算

人口データは読み込んだときにfloat型になっているようなので、列を指定して減算を行うだけでできる
とても簡単
計算結果はPandas.Series型になる

もとのデータフレームに追加するには、キー(列ラベル)を指定して代入してやればよい
今回は”人口変化”というラベルにしている

ソースコードは以下の通り

difference = df["20240901"] - df["20231101"]
df['人口変化'] = difference

dfに人口変化の列が増えていれば成功

人口が増加した市区町村のみを取り出す

‘人口変化’列の値が正の行のみを取り出せばよい
df[“人口変化”]のpandas.Seriesには比較演算子が使える

したがって、人口が増加した行のみを出力するプログラムは以下のようになる

print(df[df["人口変化"]>0])

実行結果

71行あったデータが16行まで減った
ほとんどの市区町村で人口は減少しているようだ

おわりに

PandasのDataframeを用いて差の計算をした
forループを書かなくてよいのが良い

Comments

コメントを残す

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