Pandas 获取列中项目出现的频率(百分比)

Pandas get frequency of item occurrences in a column as percentage

我想获得 df 列中特定值的百分比。假设我有一个带有 (col1, col2, col3, gender) 性别列的 df,其值为 M、F 或其他。我想得到 df 中 M、F、其他值的百分比。

我已经试过了,它给出了 M、F、其他实例的数量,但我希望它们占 df 中值总数的百分比。

df.groupby('gender').size()

有人可以帮忙吗?

如果您不需要查看 MF 值而不是 gender 列,那么您可以尝试使用 value_counts()count() 如下:

df = pd.DataFrame({'gender':['M','M','F', 'F', 'F']})
# Percentage calculation
(df['gender'].value_counts()/df['gender'].count())*100

结果:

F    60.0
M    40.0
Name: gender, dtype: float64

或者,使用 groupby:

(df.groupby('gender').size()/df['gender'].count())*100

value_countsnormalize=True 一起使用:

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

结果是(0, 1)范围内的分数。我们在这里乘以100得到%。

找到目标变化的百分比以 chenck imbalance/not。

g = data[Target_col_Y]
df = pd.concat([g.value_counts(),              
g.value_counts(normalize=True).mul(100)],axis=1,keys=('counts','percentage'))

print (df)

计数百分比

0 36548 88.734583

1 4640 11.265417

在此处的列百分比中找到最大值,以检查那里有多少#imbalance

df1=df.diff(periods=1,axis=0)
difvalue=df1[[list(df1.columns)[-1]]].max()

假设有 200 个值,其中 120 个被归类为 M,80 个被归类为 F

1)

df['gender'].value_counts()

 output:

 M=120
 F=80

2)

df['gender'].value_counts(Normalize=True)

  output:

  M=0.60
  F=0.40

3)

df['gender'].value_counts(Normalize=True)*100 #will convert output to percentages

  output:

  M=60
  F=40
print('(Gender Male= 0):\n {}%'.format(100 - round(df['Gender'].mean()*100, 2)))
print('(Gender Female=1):\n{}%'.format(round(df['Gender'].mean()*100, 2)))