Pandasで条件を満たす行を抽出する|Python

0 アクセス

はじめに

この記事は愛知県オープンデータを用いたpandasの勉強|Pythonの続きです
今回は条件を満たす行を抽出する方法について

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

Pandas.Seriesのbool列を取得する

import pandas as pd

# csvファイルをデータフレームに読み込む
df = pd.read_csv('population.csv', encoding='shift_jis')

print(df['郡市'])
print(type(df['郡市']))

df[列ラベル]でその列のSeriesオブジェクトが取得できる

nagoya_bool = df['郡市']=='名古屋市'
print(nagoya_bool)
print(type(nagoya_bool))

さらに、Seriesオブジェクトに対し、比較演算子を作用させると、bool(True, False)のSeriesオブジェクトが得られる
ここでは”郡市”列が”名古屋市”と一致するかどうかを比較している

実行結果

条件を満たす行の抽出

先ほどのbool列をDataFrameオブジェクトの指定に用いれば、Trueの行のみが抽出できる

nagoya = df[nagoya_bool]
print(nagoya)
print(type(nagoya))

実行結果

         コード    県 ブロック    郡市  区町村   国籍区分  ...   20240401   20240501   20240601   20240701   20240801   20240901
1    23100.0  愛知県  名古屋  名古屋市    ―   a)日外  ...  2322143.0  2328397.0  2329553.0  2329438.0  2330296.0  2330385.0
2    23101.0  愛知県  名古屋  名古屋市  千種区   a)日外  ...   164338.0   165353.0   165371.0   165306.0   165396.0   165413.0
3    23102.0  愛知県  名古屋  名古屋市   東区   a)日外  ...    86952.0    87418.0    87621.0    87791.0    87868.0    87931.0
4    23103.0  愛知県  名古屋  名古屋市   北区   a)日外  ...   160648.0   161179.0   161204.0   161139.0   161217.0   161118.0
5    23104.0  愛知県  名古屋  名古屋市   西区   a)日外  ...   150951.0   151246.0   151401.0   151460.0   151568.0   151621.0
..       ...  ...  ...   ...  ...    ...  ...        ...        ...        ...        ...        ...        ...
581  23112.0  愛知県  名古屋  名古屋市   南区  c)外国人  ...     3387.0     3396.0     3443.0     3448.0     3489.0     3502.0
582  23113.0  愛知県  名古屋  名古屋市  守山区  c)外国人  ...     2105.0     2124.0     2129.0     2120.0     2139.0     2166.0
583  23114.0  愛知県  名古屋  名古屋市   緑区  c)外国人  ...     2994.0     3035.0     3060.0     3018.0     3023.0     3028.0
584  23115.0  愛知県  名古屋  名古屋市  名東区  c)外国人  ...     2073.0     2081.0     2088.0     2092.0     2094.0     2066.0
585  23116.0  愛知県  名古屋  名古屋市  天白区  c)外国人  ...     1948.0     1999.0     2047.0     2056.0     2064.0     2072.0

[153 rows x 20 columns]
<class 'pandas.core.frame.DataFrame'>

名古屋市のみが抽出できた

次の記事→Pandasでデータフレームをcsvファイルに書き込む|Python

Comments

コメントを残す

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