如何计算Pandas DataFrame列中各值的出现占比百分比
解决DataFrame中Gender列各值占比计算的问题
嘿,你已经迈出了第一步——拿到各gender的出现次数,接下来转成百分比其实超简单!这里给你几种实用的方案,按需选择:
方法1:基于groupby的计数转换
你已经用df.groupby('gender').size()得到了各分组的计数,只需要将这些计数除以总样本数再乘以100,就能得到百分比:
# 获取各gender的出现次数 gender_counts = df.groupby('gender').size() # 计算百分比(保留两位小数可选) gender_percentages = (gender_counts / len(df)) * 100 # 如果需要格式化带%符号 gender_percentages = gender_percentages.round(2).astype(str) + '%'
方法2:用value_counts一步到位
value_counts()是更简洁的方式,它自带normalize=True参数直接返回相对频率,省去手动计算总样本数的步骤:
# 默认降序排列,返回百分比 gender_percentages = df['gender'].value_counts(normalize=True) * 100 # 如果想保持gender的原始顺序(比如M、F、Other的顺序),加上sort=False gender_percentages = df['gender'].value_counts(normalize=True, sort=False) * 100
方法3:生成带计数和百分比的DataFrame
如果需要保留完整的表格格式(方便后续分析或展示),可以把计数和百分比整合到一个DataFrame里:
# 先获取计数并转成DataFrame gender_stats = df.groupby('gender').size().reset_index(name='count') # 添加百分比列 gender_stats['percentage'] = (gender_stats['count'] / len(df)) * 100 # 格式化百分比列(可选) gender_stats['percentage'] = gender_stats['percentage'].round(2).astype(str) + '%'
这样不管是想要Series格式的占比,还是带明细的DataFrame,都能满足需求啦!
内容的提问来源于stack exchange,提问作者SANM2009
相关产品推荐
相关产品推荐

