はじめに
この記事は愛知県オープンデータを用いた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オブジェクトが得られる
ここでは”郡市”列が”名古屋市”と一致するかどうかを比較している
実行結果
0 ―
1 名古屋市
2 名古屋市
3 名古屋市
4 名古屋市
...
635 額田郡
636 北設楽郡
637 北設楽郡
638 北設楽郡
639 NaN
Name: 郡市, Length: 640, dtype: object
<class 'pandas.core.series.Series'>
0 False
1 True
2 True
3 True
4 True
...
635 False
636 False
637 False
638 False
639 False
Name: 郡市, Length: 640, dtype: bool
<class 'pandas.core.series.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'>
名古屋市のみが抽出できた
コメントを残す