データのグループ化
CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 43/60。
どの都市の売上が多いでしょうか?すべての行の平均を1つ求めても分かりません。行を都市ごとに分けて山にし、それぞれの山の平均を求めます:
1行で両方を行います。
shops = pd.DataFrame({
"city": ["Lyon", "Paris", "Lyon", "Nice", "Paris", "Lyon"],
"sales": [20, 35, 26, 18, 41, 23],
})
means = shops.groupby("city")["sales"].mean()
print(means)次のように出力されます:
city
Lyon 23.0
Nice 18.0
Paris 38.0
Name: sales, dtype: float64groupby("city")でグループを作り、["sales"]で列を選び、.mean()で各グループの平均を計算します。.sum()、.min()、.max()も使えます。
山を順位付けするには、並べ替えます。means.sort_values(ascending=False).index[0] は最も売れた Paris です。
チャレンジ
中級ランニングクラブでは、各ランの記録をruns.csvに保存します。列はrunner、distance_km、minutes、climb_mです。スターターコードは数値列の1つをcolumnに読み込みます。
- 各ランナーについて、その列の平均値を出力します。
- 次に、以下の最後の行のように、平均値が最も大きいランナーの名前を出力します。
ランナーが2人のクラブで、distance_kmの場合:
runner
Ana 6.1
Bo 8.4
Name: distance_km, dtype: float64
Top runner: Bo with 8.4自分で試してみよう
import pandas as pd
runs = pd.read_csv("runs.csv")
column = input()
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
データとプロットのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ