You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas groupby实操:基于tips数据集在同表中同时获取count与占比

推荐实现方法

你可以用链式写法一次完成分组、统计、新增百分比列的操作,仅需一次groupby计算,比原来两次分组的写法性能更高,代码也更简洁:

import pandas as pd
import seaborn as sns

# 加载数据
tips = sns.load_dataset('tips')

# 一步得到预期结果
res = (
    tips.groupby(['time', 'smoker'])
    .agg(count=('smoker', 'count'))  # 统计分组计数,命名为count列
    .assign(percentage=lambda x: x['count'] / x['count'].sum() * 100)  # 计算该分组占总样本的百分比
)
print(res)

运行后输出的结果和你要求的格式完全一致。


更简化的写法(适用于pandas 1.1.0及以上版本)

你还可以直接用value_counts方法实现,代码更短:

count = tips.value_counts(['time', 'smoker']).sort_index()
res = pd.DataFrame({
    'count': count,
    'percentage': count / count.sum() * 100
})

性能说明

两种写法都只执行了一次分组统计,相比你原来两次调用groupby的实现,在数据量较大的场景下性能提升会更明显。

内容的提问来源于stack exchange,提问作者Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:06:05