如何从Seaborn tips数据集分组结果中仅筛选Dinner类别?
仅获取Dinner的total_bill统计结果的方法
方法1:先筛选再聚合(最直接)
先过滤出time为Dinner的记录,再对total_bill执行统计操作——因为已经是单一类别,无需分组:
import seaborn as sns df = sns.load_dataset("tips") # 筛选Dinner数据 dinner_data = df[df["time"] == "Dinner"] # 计算指定统计量 dinner_stats = dinner_data["total_bill"].agg(["sum", "min", "max", "mean"]) print(dinner_stats)
方法2:分组后提取目标组
先按time完成分组聚合,再通过索引直接提取Dinner对应的结果:
import seaborn as sns df = sns.load_dataset("tips") # 按time分组计算统计量 grouped_result = df.groupby(["time"]).agg({"total_bill": ["sum", "min", "max", "mean"]}) # 提取Dinner的统计数据 dinner_stats = grouped_result.loc["Dinner"] print(dinner_stats)
方法3:基于布尔分组提取结果
针对你之前尝试的布尔分组方式,只需提取True对应的行即可(True对应time=="Dinner"的记录):
import seaborn as sns df = sns.load_dataset("tips") # 按布尔条件分组后提取True组 dinner_stats = df.groupby(df["time"] == "Dinner").agg({"total_bill": ["sum", "min", "max", "mean"]}).loc[True] print(dinner_stats)
为什么之前的代码会出现True/False索引?
df["time"] == "Dinner"生成的是布尔类型的Series,groupby会将True和False作为两个独立的分组键,因此结果会包含这两个索引。只要提取True对应的行,就是你需要的Dinner统计数据。
内容的提问来源于stack exchange,提问作者optiko
相关产品推荐
相关产品推荐

