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()
有人可以帮忙吗?
如果您不需要查看 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
将 value_counts
与 normalize=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)))
我想获得 df 列中特定值的百分比。假设我有一个带有 (col1, col2, col3, gender) 性别列的 df,其值为 M、F 或其他。我想得到 df 中 M、F、其他值的百分比。
我已经试过了,它给出了 M、F、其他实例的数量,但我希望它们占 df 中值总数的百分比。
df.groupby('gender').size()
有人可以帮忙吗?
如果您不需要查看 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
将 value_counts
与 normalize=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)))