【Python】Pandasでデータを条件抽出する方法を解説!queryと[]を使った実践例
データ分析を行う際、条件に合ったデータを抽出することは非常に重要なステップです。PythonのPandasライブラリでは条件抽出を簡単に行うための便利な方法がいくつか用意されています。この記事では [] と query を使った条件抽出の方法を解説します。また、複数条件の指定方法についても紹介します。
ソースコード(解説はコメント文に)
import pandas as pd
# データフレームを作成
# サンプルデータとして、名前と国の情報を持つデータフレームを作成します。
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
'country': ['America', 'Canada', 'America', 'Canada']}
df = pd.DataFrame(data)
# データフレーム全体を表示
print("元のデータフレーム:")
print(df)
print('-----')
# 条件抽出: country が 'America' の行を抽出 ([] を使用)
# 列 'country' の値が 'America' に等しい行だけを抽出します。
result = df[df['country'] == 'America']
print("country が 'America' の行 ([]) を使用:")
print(result)
print('-----')
# 条件抽出: country が 'America' の行を抽出 (query を使用)
# query メソッドを使って、同じ条件を簡潔に記述します。
result = df.query('country == "America"')
print("country が 'America' の行 (query) を使用:")
print(result)
print('-----')
# 複数条件: country が 'America' かつ name が 'Alice' の行を抽出 ([] を使用)
# 複数条件では & を使用し、各条件を () で囲む必要があります。
result = df[(df['country'] == 'America') & (df['name'] == 'Alice')]
print("country が 'America' かつ name が 'Alice' の行 ([] を使用):")
print(result)
print('-----')
# 複数条件: country が 'America' かつ name が 'Alice' の行を抽出 (query を使用)
# query メソッドでは 'and' を使い、条件を簡潔に記述可能です。
result = df.query('country == "America" and name == "Alice"')
print("country が 'America' かつ name が 'Alice' の行 (query) を使用:")
print(result)
print('-----')
実行結果
元のデータフレーム:
name country
0 Alice America
1 Bob Canada
2 Charlie America
3 David Canada
-----
country が 'America' の行 ([]) を使用:
name country
0 Alice America
2 Charlie America
-----
country が 'America' の行 (query) を使用:
name country
0 Alice America
2 Charlie America
-----
country が 'America' かつ name が 'Alice' の行 ([] を使用):
name country
0 Alice America
-----
country が 'America' かつ name が 'Alice' の行 (query) を使用:
name country
0 Alice America
-----
Pandasでは、[] と query のどちらを使っても簡単に条件抽出ができます。[] は基本的で直感的な方法ですがquery を使えば記述が簡潔になります。また、複数条件を扱う場合でも、適切に使い分けることでコードの読みやすさや保守性が向上します。
スポンサーリンク