Ответ 1
Используйте value_counts
с normalize=True
:
df['gender'].value_counts(normalize=True) * 100
Я хочу получить процент от определенного значения в столбце df. Скажем, у меня есть df с (col1, col2, col3, gender) гендерный столбец имеет значения M или F. Я хочу получить процент значений M и F в df.
Я пробовал это, что дает мне число экземпляров M и F, но я хочу, чтобы они были в процентах от общего числа значений в df.
df.groupby('gender').size()
Может кто-нибудь помочь?
Используйте value_counts
с normalize=True
:
df['gender'].value_counts(normalize=True) * 100
Если вам не нужно искать значения M
и F
отличные от 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
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
df1=df.diff(periods=1,axis=0)
difvalue=df1[[list(df1.columns)[-1]]].max()
Допустим, есть 200 значений, из которых 120 относятся к категории М, а 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