はじめに
フィルタリングとは何か
Pandasのフィルタリングとは、データフレームから特定の条件を満たす行や列を取り出すことです。たとえば、ある商品の売上データがある場合、特定の期間や特定の店舗のデータを取り出すことができます。
行のフィルタリング
次に、行のフィルタリングについて説明します。
ブールインデックス参照を使った行のフィルタリング方法
# ブールインデックス参照を使ったフィルタリング例
print(df[df["age"] > 30]) # 30より大きい行を取得
このコードでは、”age”カラムが30より大きい行を取得するために、ブールインデックス参照を使用しています。出力は以下のようになります。
name country gender
2 CHARLIE UK M
3 DAVE Canada M
4 EVE France F
loc関数を使った行のフィルタリング方法
# loc関数を使ったフィルタリング例
print(df.loc[df.index[[2, 3]], ["name", "country"]])
このコードでは、loc
関数を使用してインデックスが2と3の行から”name”と”country”カラムを取得しています。
name country
2 CHARLIE UK
3 DAVE Canada
query関数を使った行のフィルタリング方法
# query関数を使ったフィルタリング例
print(df.query('age > 30 and country == "Canada"'))
このコードでは、query
関数を使用して、年齢が30より大きく、国がカナダである行を取得しています。出力は以下のようになります。
name country gender age
3 DAVE Canada M 41
列のフィルタリング
次に、列のフィルタリングについて説明します。
列名を指定して列を抽出する方法
# 列名を指定して列を抽出する方法
print(df[["name", "age"]])
このコードでは、”name”と”age”の2つのカラムを抽出しています。
name age
0 ALICE 25.0
1 BOB 30.0
2 CHARLIE 35.0
3 DAVE 41.0
4 EVE 45.0
loc関数を使った列のフィルタリング方法
# loc関数を使った列のフィルタリング方法
print(df.loc[:, ["name", "country"]])
このコードでは、loc
関数を使用して”name”と”country”の2つのカラムを抽出しています。
name country
0 ALICE Japan
1 BOB USA
2 CHARLIE UK
3 DAVE Canada
4 EVE France
グループ化
groupby関数を使ったグループ化の
groupby関数を使ってデータをグループ化する方法です。groupby関数を使用して、列を指定してグループ化することができます。
groupby関数を使ったデータ集約(平均、合計など)の方法
groupby関数を使用して、集約を行うことができます。例えば、以下のようにして、国別の平均値を取得することができます。
df.groupby('Country')['Salary'].mean()
filter関数を使ったグループのフィルタリング方法
filter関数を使って、グループ化されたデータのフィルタリングを行う方法です。例えば、以下のようにして、平均値が8万ドル以上のグループを抽出することができます。
df.groupby('Country').filter(lambda x: x['Salary'].mean() > 80000)
条件付き操作
numpy.whereを使った条件付き操作の概要説明
numpy.whereを使用して条件付き操作を行う方法です。例えば、以下のようにして、平均値が8万ドル以上の場合、’High’という値を出力することができます。
df['Category'] = np.where(df['Salary'].mean() > 80000, 'High', 'Low')
apply関数を使った条件付き操作の方法
apply関数を使用して、条件付き操作を行う方法です。例えば、以下のようにして、平均値が8万ドル以上の場合、’High’という値を出力することができます。
def categorize(salary):
if salary > 80000:
return 'High'
else:
return 'Low'
df['Category'] = df['Salary'].apply(categorize)
assign関数を使った条件付き操作の方法
assign関数を使用して、条件付き操作を行う方法です。例えば、以下のようにして、平均値が8万ドル以上の場合、’High’という値を出力することができます。
df = df.assign(Category = lambda x: np.where(x['Salary'].mean() > 80000, 'High', 'Low'))
文字列のフィルタリング
str.contains関数を使った文字列のフィルタリング方法
str.contains関数を使用して、正規表現を用いて文字列のフィルタリングを行う方法です。例えば、以下のようにして、’a’を含むデータを抽出することができます。
df[df['name'].str.contains('a')]
str.startswith関数を使った文字列のフィルタリング方法
str.startswith関数を使用して、文字列の先頭一致でフィルタリングを行う方法です。例えば、以下のようにして、’John’で始まる名前を持つデータを抽出することができます。
df[df['name'].str.startswith('John')]
str.endswith関数を使った文字列のフィルタリング方法
str.endswith関数を使用して、文字列の末尾一致でフィルタリングを行う方法です。例えば、以下のようにして、’son’で終わる名前を持つデータを抽出することができます。
df[df['name'].str.endswith('son')]
コメント