pandasを使ったデータ処理では、
「必要なデータだけを取り出す」「集計する」という処理が頻繁に登場します。
CSVの読み込みや保存ができるようになったら、
次に覚えたいのがこの2つです。
この記事では、
・条件でデータを絞り込む方法
・絞り込んだデータを集計する方法
この2点を順番に解説していきます。
pandasの導入記事はこちら。
Python入門:pandasの基本をやさしく解説(データ操作の超入門) – Lean Data Office
サンプルデータの準備
まずは簡単なデータを用意します。
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
このような「売上データ」を例に進めていきます。
条件でデータを絞り込む
pandasでは、条件を指定すると特定の行だけを取り出すことができます。
例えば、日本(JP)のデータだけを取り出す場合は次のように書きます。
Python
jp_data = df[df[“country”] == “JP”]
print(jp_data)
Show more lines
この書き方は少し分かりにくいですが、順番に考えると理解できます。
まず、
Python
df[“country”] == “JP”
Show more lines
は「country列がJPかどうか」を判定しています。
結果は True / False の一覧になります。
その結果をそのまま df[...] に渡すことで、
Trueの行だけが残ります。
数値条件で絞る
数値の場合も同じ考え方です。
Python
high_sales = df[df[“sales”] > 150]
print(high_sales)
Show more lines
これで「売上が150より大きいデータ」だけが抽出されます。
このように、
==(等しい)>(より大きい)<(より小さい)
といった条件を使って自由に絞り込みができます。
複数条件の組み合わせ
実務では、複数条件で絞ることがほとんどです。
例えば「日本かつ売上150以上」のデータを取りたい場合です。
Python
filtered = df[(df[“country”] == “JP”) & (df[“sales”] >= 150)]
print(filtered)
Show more lines
ポイントは2つあります。
1つ目は、& を使って条件をつなぐことです。
(and の意味)
2つ目は、それぞれの条件をカッコで囲むことです。
これを忘れるとエラーになるので注意してください。
データの集計(合計・平均)
絞り込んだ後は、集計することが多くなります。
まずは単純な合計です。
Python
total = df[“sales”].sum()
print(total)
Show more lines
平均値は次のように求められます。
Python
avg = df[“sales”].mean()
print(avg)
Show more lines
このように、列を指定すると簡単に計算できます。
グループごとの集計(groupby)
少し実務に近い処理として、
「国ごとの売上合計」を出してみます。
Python
grouped = df.groupby(“country”)[“sales”].sum()
print(grouped)
Show more lines
ここでは3つの処理を行っています。
countryでグループ分けsales列を対象にする- 合計を計算する
なぜこの書き方なのか
最初は少し難しく見えますが、考え方はシンプルです。
df.groupby("country")
→ 国ごとに分ける["sales"]
→ 売上だけ見る.sum()
→ 合計を出す
このように「処理をつなげていく」ことで、
柔軟なデータ加工ができるようになっています。
まとめ
この記事では、pandasの基本的なデータ加工として
- 条件による絞り込み
- 複数条件の組み合わせ
- 合計・平均の計算
- groupbyによる集計
を紹介しました。
これらは実務でも頻繁に使う操作です。
最初は書き方に慣れないかもしれませんが、
「1つずつ分解して考える」ことで理解しやすくなります。
まずはサンプルコードをそのまま動かしながら、
少しずつ慣れていくことをおすすめします。