pandas入門 – データの選択

概要

今回はある条件のデータを抽出し確認する方法を紹介します。

特定の列のみ抽出する

次の例では全体からname列のみを抽出します。 1列を選択した場合、返り値のデータ型はSeries型となります

df = pd.DataFrame({
    'id': [1, 2, 3, 4],
    'name': ['taro', 'takuya', 'erika', 'hanako'],
    'age': [20, 25, 18, 25],
    'sex': ['male', 'male', 'female', 'female'],
    'height': [170, 180, 160, 165]
})

df['name']
0      taro
1    takuya
2     erika
3    hanako
type(df)
# pandas.core.frame.DataFrame

複数の列を抽出する

続いて複数の列を指定して、データを抽出します。次の例ではnameとsexを選択します。

df[['name', 'sex']]
	name	sex
0	taro	male
1	takuya	male
2	erika	female
3	hanako	female

行を位置番号を指定して抽出

続いてデータから特定の行のみを位置番号を用いて取得します。左記を行うにはilocを使用します。次の例では行の1行目のみ抽出しています。

df.iloc[0]
id           1
name      taro
age         20
sex       male
height     170
Name: 0, dtype: object

続いて、1行目と3行目を抽出します。

df.iloc[[0, 2]]
	id	name	age	sex	height
0	1	taro	20	male	170
2	3	erika	18	female	160

続いて、インデックスの始点と終点を指定して、データを抽出します。次の例では1行目から3行目を抽出します

df.iloc[0:3]
	id	name	age	sex	height
0	1	taro	20	male	170
1	2	takuya	25	male	180
2	3	erika	18	female	160

比較絵演算子を利用してデータを抽出

比較演算子==、>=、<=、>、<を利用してデータを抽出します。次の例ではageが20歳以上でデータを抽出します。

df[df['age'] >= 20]
	id	name	age	sex	height
0	1	taro	20	male	170
1	2	takuya	25	male	180
3	4	hanako	25	female	165

&、|、~を利用して複数の条件を指定することもできます。次の例ではageが20歳以上かつsexがmaleのデータを抽出します。

df[(df['age'] >= 20) & (df['sex'] == 'male')]
	id	name	age	sex	height
0	1	taro	20	male	170
1	2	takuya	25	male	180