‘query’メソッドの基本的な使い方

Pandasのqueryメソッドは、データフレーム内のデータを効率的にフィルタリングするための強力なツールです。このメソッドを使用すると、文字列形式のクエリを指定してデータを選択できます。

まず、適切なデータフレームを作成しましょう。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    'A': range(1, 6),
    'B': range(10, 60, 10),
    'C': ['one', 'one', 'two', 'three', 'four']
})

上記のデータフレームでは、列Aには1から5までの数値、列Bには10から50までの数値(10の倍数)、列Cにはいくつかの文字列が含まれています。

次に、queryメソッドを使用してデータをフィルタリングします。例えば、列Aの値が3より大きいすべての行を選択するには、次のようにします。

df.query('A > 3')

このコードは、列Aの値が3より大きいすべての行を含む新しいデータフレームを返します。

queryメソッドは、複数の条件を組み合わせることも可能です。例えば、列Aの値が2より大きく、かつ列Cの値が’two’である行を選択するには、次のようにします。

df.query('A > 2 and C == "two"')

このように、queryメソッドを使用すると、複雑な条件を指定してデータを効率的にフィルタリングできます。これは、データ分析作業を大幅に簡素化し、コードの可読性を向上させます。

‘in’オペレータを用いたデータフィルタリング

Pandasのqueryメソッドは、’in’オペレータと組み合わせて使用することで、特定の値のリストに含まれるデータを選択することができます。これは、特定のカテゴリーに属するデータを選択する際に非常に便利です。

例えば、上記で作成したデータフレームから、列Cの値が’one’または’two’である行を選択するには、次のようにします。

df.query('C in ["one", "two"]')

このコードは、列Cの値が’one’または’two’であるすべての行を含む新しいデータフレームを返します。

また、’in’オペレータは否定も可能で、特定の値を含まないデータを選択することもできます。これは、’not in’オペレータを使用して行います。例えば、列Cの値が’three’または’four’でない行を選択するには、次のようにします。

df.query('C not in ["three", "four"]')

このコードは、列Cの値が’three’または’four’でないすべての行を含む新しいデータフレームを返します。

このように、’in’オペレータを使用すると、特定の値のリストに基づいてデータを効率的にフィルタリングできます。これは、特定のカテゴリーに属するデータを選択する際に非常に便利です。

複数条件を組み合わせたデータフィルタリング

Pandasのqueryメソッドは、複数の条件を組み合わせてデータをフィルタリングすることも可能です。これは、より複雑なデータ選択のシナリオに対応するために非常に便利です。

例えば、上記で作成したデータフレームから、列Aの値が2より大きく、かつ列Cの値が’one’または’two’である行を選択するには、次のようにします。

df.query('A > 2 and C in ["one", "two"]')

このコードは、列Aの値が2より大きく、かつ列Cの値が’one’または’two’であるすべての行を含む新しいデータフレームを返します。

また、複数の条件を組み合わせる際には、括弧を使用して条件の優先順位を明確にすることができます。例えば、列Aの値が2より大きく、かつ列Bの値が30以下、または列Cの値が’three’である行を選択するには、次のようにします。

df.query('(A > 2 and B <= 30) or C == "three"')

このコードは、列Aの値が2より大きく、かつ列Bの値が30以下、または列Cの値が’three’であるすべての行を含む新しいデータフレームを返します。

このように、queryメソッドを使用すると、複数の条件を組み合わせてデータを効率的にフィルタリングできます。これは、データ分析作業を大幅に簡素化し、コードの可読性を向上させます。

実践的な例とその解説

それでは、実際のデータセットを使用して、これまでに学んだqueryメソッドと’in’オペレータの使用方法を確認しましょう。

以下に示すのは、ある企業の従業員データを含むデータフレームです。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 32, 35, 19, 45],
    'Department': ['HR', 'Engineering', 'Engineering', 'HR', 'Management']
})

このデータフレームでは、列’Name’には従業員の名前、列’Age’には従業員の年齢、列’Department’には従業員が所属する部署の名前が含まれています。

次に、エンジニアリング部門に所属し、かつ年齢が30歳以上の従業員を選択するには、次のようにします。

df.query('Department == "Engineering" and Age >= 30')

このコードは、エンジニアリング部門に所属し、かつ年齢が30歳以上のすべての行を含む新しいデータフレームを返します。

また、HRまたはマネジメント部門に所属する従業員を選択するには、次のようにします。

df.query('Department in ["HR", "Management"]')

このコードは、HRまたはマネジメント部門に所属するすべての行を含む新しいデータフレームを返します。

このように、queryメソッドと’in’オペレータを使用すると、複雑な条件を指定してデータを効率的にフィルタリングできます。これは、データ分析作業を大幅に簡素化し、コードの可読性を向上させます。また、これらのテクニックは、実際のデータ分析の現場で頻繁に使用されます。この記事が、あなたのデータ分析スキルの向上に役立つことを願っています。

投稿者 kitagawa

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です