Pandasのフィルタリング完全ガイド:行、列、グループ化、条件付き操作、文字列フィルタリングの使い方

はじめに

フィルタリングとは何か

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')]

関連記事

コメント

タイトルとURLをコピーしました