【Python】Pandasのqueryメソッドでデータフレームを操作する

Python

Pandasは、Pythonでデータ解析を行うための強力なライブラリです。データフレームという構造を用いて、データの操作や加工が容易になります。この記事では、Pandasのqueryメソッドの使い方について解説します。特に、変数を使用するパターンに焦点を当てます。

queryメソッドの基本概要

queryメソッドは、データフレーム内のデータを条件に従って抽出するために使用されます。このメソッドを使うことで、データフレームの行をフィルタリングしたり、特定の条件にマッチする行を抽出したりできます。

基本的な構文は以下の通りです。

dataframe.query('条件式')

変数を使用するqueryメソッドの使い方

queryメソッドでは、条件式の中で変数を使うことができます。これにより、動的に条件を変更することが可能になります。

変数を使った条件式は、以下のように@変数名の形で指定します。

dataframe.query('カラム名 == @変数名')

これを使って具体的な例を見てみましょう。以下のサンプルデータを用いて解説します。

import pandas as pd

data = {
    '名前': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    '年齢': [25, 30, 35, 40, 45],
    '性別': ['F', 'M', 'M', 'M', 'F']
}

df = pd.DataFrame(data)

このデータフレームから、年齢が30歳以上の人を抽出したいとします。変数を使ってqueryメソッドを実行しましょう。

age_threshold = 30

result = df.query('年齢 >= @age_threshold')
print(result)

実行結果は以下の通りです。

  名前  年齢 性別
1      Bob   30  M
2  Charlie   35  M
3    David   40  M
4      Eve   45  F

変数age_thresholdを使って、動的に年齢の閾値を変更できます。

このように、Pandasのqueryメソッドを使うことで、データフレーム内のデータを簡単に抽出・操作することができます。変数を利用することで、柔軟な条件指定も可能になります。

複数の条件を組み合わせる

queryメソッドでは、複数の条件を組み合わせてデータを抽出することもできます。条件を組み合わせる際には、&(AND演算子)や|(OR演算子)を使用します。複数の条件を組み合わせる場合、各条件を括弧で囲むことが重要です。

例えば、先ほどのサンプルデータを用いて、年齢が30歳以上かつ性別がF(女性)の人を抽出したい場合、以下のように記述します。

age_threshold = 30
gender = 'F'

result = df.query('(年齢 >= @age_threshold) & (性別 == @gender)')
print(result)

実行結果は以下の通りです。

  名前  年齢 性別
4  Eve   45  F

カラム名にスペースが含まれる場合のqueryメソッドの使用

カラム名にスペースが含まれる場合、queryメソッド内ではバッククォート(`)でカラム名を囲むことで条件式に使用できます。

例えば、以下のようなデータフレームがあるとします。

data = {
    'First Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 30, 35, 40, 45],
    'Gender': ['F', 'M', 'M', 'M', 'F']
}

df = pd.DataFrame(data)

このデータフレームから、年齢が30歳以上の人を抽出する場合、以下のように記述します。

first_name = "Bob"

result = df.query('`First Name` == @first_name')
print(result)

実行結果は以下の通りです。

  First Name  Age Gender
1        Bob   30      M

以上が、Pandasのqueryメソッドの使い方に関する解説です。変数を使用することで、より柔軟な条件指定が可能になり、データ解析の効率が向上します。是非、日々のデータ解析作業に活用してみてください。

関連記事

pandas.DataFrame.query — pandas 1.1.5 documentation

その他の技術系記事も書いています

データサイエンティストの書評ブログ
趣味が読書くらいしかない駆け出しデータサイエンティストの書評ブログです。日々の勉強のアウトプットや趣味の読書のおすすめをしていきます。

コメント

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