如何以百分比的形式获取列的出现频率

2024-06-17 19:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集df,看起来与此类似:

houses    price
ranch     300,000
ranch     350,000
ranch     400,000
condo     250,000
condo     275,000
townhome  300,000

我想在“房屋”栏中按不同类别分组,并显示每个类别的百分比

所需输出

houses      percent
ranch       50%
condo       33%
townhome    16.60%

这就是我正在做的:

percent is part/whole


df1 = df.groupby['houses'].sum()    #df1 gives us the sum
percent = df1.['houses']/df1

然而,我并没有同时保留柱子和房子 如有任何建议,我们将不胜感激


Tags: 数据dfis类别price百分比df1sum
2条回答

您可以使用value_counts计算唯一值,并使用normalize参数:

df['houses'].value_counts(normalize=True) * 100

ranch       50.000000
condo       33.333333
townhome    16.666667
Name: houses, dtype: float64

编辑:要转换为数据帧,请执行以下操作:

(df['houses'].value_counts(normalize=True) * 100).to_frame()

Groupby版本:

>>> df.groupby('houses').count() / len(df) * 100

              price
houses             
condo     33.333333
ranch     50.000000
townhome  16.666667

相关问题 更多 >