本文へスキップ
BecomeCoder

Pythonデータ分析コース · 第4章 pandas ― 集計と加工 · レッスン13

条件で絞り込む ― ブールフィルタ

ブラウザで完結

導入

「点数が80以上の人だけ」のように、条件に合う行だけを取り出す操作は分析の基本中の基本です。

説明

df["列"] >= 80 のように条件を書くと True/False の Series ができ、それを df[...] に入れると条件を満たす行だけが残ります。

import pandas as pd

df = pd.DataFrame({
    "name": ["Tanaka", "Suzuki", "Sato", "Ito"],
    "score": [80, 95, 70, 88],
})
print(df[df["score"] >= 80])

複数の条件は &(かつ)や |(または)でつなぎます。各条件は必ずカッコで囲むのがルールです。

import pandas as pd

df = pd.DataFrame({
    "name": ["Tanaka", "Suzuki", "Sato", "Ito"],
    "age": [28, 34, 22, 41],
    "score": [80, 95, 70, 88],
})
# 30歳以上 かつ 85点以上
print(df[(df["age"] >= 30) & (df["score"] >= 85)])

(df["age"] >= 30) & (df["score"] >= 85) のように、カッコを外すとエラーになります。ここは初心者がよくつまずくところなので気をつけましょう。

やってみよう

条件を df["score"] < 80 に変えて、80点未満の人を取り出しましょう。| を使って「22歳 または 95点」の行を出すこともできます。

演習

上の df から、score が85以上の行だけを取り出して表示してください。

ヒント1を見る

df[df["score"] >= 85]

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、numpy・pandas・matplotlib が使える本物のPython(Pyodide)で出力とグラフが表示されます。初回だけ読み込みに少し時間がかかります。本文の例をそのまま試したり、書き換えたりしてみましょう(グラフ内の文字は日本語だと表示が崩れるため英字で書きます)。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。