Python入門:pandasのqueryで条件による絞り込みをシンプルに書く

pandas python 1

pandasでデータを絞り込むとき、
これまで紹介してきたように df[...] の形を使うことが一般的です。

たとえば、特定の条件に一致する行を取り出す場合、
次のような書き方をしていました。

Python

df[df[“sales”] > 100]
Show more lines

この書き方は基本としてとても重要ですが、
条件が複雑になると少し読みにくくなることがあります。

そこで使えるのが query です。

queryを使うと、条件式を「文字列」として書くことで、
よりシンプルに絞り込みを表現できるようになります。

pandasの導入記事はこちら。

Python入門:pandasの基本をやさしく解説(データ操作の超入門) – Lean Data Office

mergeは「列を基準に結合する」


queryとは何か

query は、データフレームに対して
条件を指定して行を絞り込むための機能です。

特徴は、条件を文字列として書く点にあります。

そのため、コードというよりは「式」に近い形で
直感的に条件を書くことができます。


サンプルデータ

まずはいつも通りデータを用意します。

Python

import pandas as pd

data = {

“name”: [“A”, “B”, “C”, “D”],

“country”: [“JP”, “US”, “JP”, “UK”],

“sales”: [100, 200, 150, 300]

}

df = pd.DataFrame(data)
Show more lines


基本的な使い方

売上が100より大きいデータを取り出す場合、
queryでは次のように書きます。

Python

df.query(“sales > 100”)
Show more lines

この書き方を見ると分かる通り、
df["sales"] のような書き方は不要になり、
列名をそのまま使えるようになります。


従来の書き方との違い

同じ処理を従来の方法で書くと次のようになります。

Python

df[df[“sales”] > 100]
Show more lines

この2つを比べると、queryの方が
「条件そのもの」に集中して書けていることが分かります。

特に条件が長くなるほど、この差は大きくなります。


複数条件の扱い

条件が複数になると、queryの読みやすさがよりはっきりします。

たとえば、日本かつ売上150以上のデータを取り出す場合です。

Python

df.query(“country == ‘JP’ and sales >= 150”)
Show more lines

このように、andor をそのまま使えるため、
自然な文章に近い形で条件を書くことができます。

一方で従来の書き方では、演算子やカッコが増えてしまいます。

Python

df[(df[“country”] == “JP”) & (df[“sales”] >= 150)]
Show more lines

この違いは、条件が増えるほど大きく感じられるようになります。


文字列を条件に使うときの注意

queryでは条件全体が文字列になるため、
文字列の値はクォーテーションで囲む必要があります。

Python

df.query(“country == ‘JP'”)
Show more lines

ここを忘れるとエラーになるため、
最初のうちは注意が必要です。


変数を使う方法

実務では、条件の値が固定ではないこともよくあります。

その場合は、@ を使って外部の変数を参照します。

Python

target = 150

df.query(“sales >= @target”)
Show more lines

このように書くことで、
コードの外で定義した値を条件に組み込むことができます。


なぜqueryを使うのか

queryの一番のメリットは、
「読みやすさ」と「保守性」にあります。

データ処理のコードは、あとから見返したり、
他の人が読む機会が多くあります。

そのときに、

Python

(df[“country”] == “JP”) & (df[“sales”] >= 150)
Show more lines

よりも、

Python

“country == ‘JP’ and sales >= 150”
Show more lines

の方が、意図をすぐに理解しやすくなります。

特に分析処理では、条件の意味が重要になるため、
この差は意外と大きくなります。


使い分けの考え方

ただし、queryが常に優れているわけではありません。

単純な条件であれば、従来の書き方でも問題ありませんし、
慣れている環境ではその方が書きやすい場合もあります。

そのため、

  • 条件がシンプルな場合は従来の書き方
  • 条件が複雑な場合や読みやすさを重視する場合はquery

このように使い分けると自然です。


まとめ

queryは、条件を文字列として書くことで、
データの絞り込みをよりシンプルに表現できる機能です。

基本的な動きは従来の df[...] と同じですが、
条件が複雑になるほど、その書きやすさと読みやすさが活きてきます。

最初は少し違和感があるかもしれませんが、
実務での可読性を意識すると非常に有用な方法です。

まずは簡単な条件から使い始めて、
徐々に複雑な条件に広げていくと理解しやすくなります。

筋トレとオートメーションが趣味。 モバイルアプリ個人開発者。 データ処理・可視化とレポートにハマり備忘録と情報共有のためにブログ開設し運営している。