演習課題「集約方法の指定」
コードエリアには、データフレーム df が定義されています。
このデータフレーム df を Category でグルーピングし、Quantity の総数に集約して作成したピボットテーブルを出力してください。
※ 回答時にはprint(df)
をコメントアウトして回答してください。
※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む
#17:集約方法の指定
このチャプターでは、ピボットテーブル作成時に、集約方法を指定する方法を学習します。
- 引数 aggfunc を用いて集約方法を指定できる
import pandas as pd
df = pd.DataFrame([["cloudy", 22, "Bad"], ["rainy", 19, "Good"], ["sunny", 26, "Good"],
["sunny", 25, "Good"], ["cloudy", 24, "Good"]],
columns=["weather", "temperature", "feelings"])
print(df.pivot_table(values="temperature", index="weather", aggfunc="max"))
- 指定方法は、GroupBy オブジェクトの agg メソッドに渡すときと同様
- 集約方法を複数指定するコードは次の通り
import pandas as pd
df = pd.DataFrame([["cloudy", 22, "Bad"], ["rainy", 19, "Good"], ["sunny", 26, "Good"],
["sunny", 25, "Good"], ["cloudy", 24, "Good"]],
columns=["weather", "temperature", "feelings"])
print(df.pivot_table(values="temperature", index="weather", aggfunc=["max", "min"]))
- 集約方法を個別指定するコードは次の通り
import pandas as pd
df = pd.DataFrame([["rainy", 32.9, 94, "Bad"], ["cloudy", 18.6, 99, "Bad"], ["sunny", 36.2, 74, "Good"],
["snowy", -14.3, 83, "Bad"], ["sunny", 34.1, 71, "Good"], ["sunny", 36.2, 76, "Bad"],
["cloudy", 31.7, 90, "Bad"], ["rainy", 21.4, 94, "Good"], ["sunny", 34.8, 79, "Bad"],
["cloudy", 32.8, 87, "Bad"], ["rainy", 32.1, 92, "Bad"]],
columns=["weather", "temperature", "humidity", "feelings"])
print(df.pivot_table(values=["temperature", "humidity"], index="weather", aggfunc={"temperature": "mean", "humidity": "max"}))
- 集約方法を追加して指定するコードは次の通り
import pandas as pd
def count_even(group_series):
return group_series[group_series * 10 % 2 == 0].count()
df = pd.DataFrame([["cloudy", 22, "Bad"], ["rainy", 19, "Good"], ["sunny", 26, "Good"],
["sunny", 25, "Good"], ["cloudy", 24, "Good"]],
columns=["weather", "temperature", "feelings"])
print(df.pivot_table(values="temperature", index="weather", aggfunc=count_even))