演習課題「集約方法の個別指定」
コードエリアには、データフレーム df が定義されています。
このデータフレーム df を Category でグルーピングし、Quantity を平均値に、Subtotal を最大値に集約して、次の形式で出力してください。
Quantity Subtotal
Category
--- --- ---
--- --- ---
...
--- --- ---
※ 回答時には
print(df)
をコメントアウトして回答してください。※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む
#12:集約方法の個別指定
このチャプターでは、集約方法を個別に指定する方法を学習します。
- agg メソッドを使う際に、列の名前と、その列に適用する集約関数の名前の辞書を agg メソッドに渡すことで、集約方法を個別に指定することができる
import pandas as pd
df = pd.DataFrame([["rainy", 32.9, 94],
["cloudy", 18.6, 99],
["sunny", 36.2, 74],
["snowy", -14.3, 83],
["sunny", 34.1, 71],
["sunny", 36.2, 76]], columns=["weather", "temperature", "humidity"])
print(df.groupby("weather").agg({"temperature": "mean", "humidity": "max"}))
- 自分で定義した集約関数を含めた複数の集約方法を、個別に指定すると、次のコードのようになる
import pandas as pd
def count_extremely_hot_day(group_series):
return group_series[group_series >= 35].count()
df = pd.DataFrame([["rainy", 32.9, 94],
["cloudy", 18.6, 99],
["sunny", 36.2, 74],
["snowy", -14.3, 83],
["sunny", 34.1, 71],
["sunny", 36.2, 76]], columns=["weather", "temperature", "humidity"])
print(df.groupby("weather").agg({"temperature": ["mean", "min", "max", count_extremely_hot_day], "humidity": ["mean", "max"]}))
- 気温については「平均値」「最小値」「最大値」「猛暑日の日数」に集約している
- 湿度については「平均値」「最大値」に集約している