Pandas按列中的值百分比

SAN*_*009 23 python percentage dataframe pandas

我想在df列中获得特定值的百分比.假设我有一个df(col1,col2,col3,性别)性别列的值为M或F.我想得到df中M和F值的百分比.

我试过这个,它给了我M和F实例的数量,但我希望这些是df中值总数的百分比.

df.groupby('gender').size()
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

cs9*_*s95 42

使用value_countsnormalize=True:

df['gender'].value_counts(normalize=True) * 100
Run Code Online (Sandbox Code Playgroud)

  • 不错,不知道`normalize = True`。 (2认同)
  • 很好的回答先生! (2认同)

stu*_*ent 5

如果您不需要查看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
Run Code Online (Sandbox Code Playgroud)

结果:

F    60.0
M    40.0
Name: gender, dtype: float64
Run Code Online (Sandbox Code Playgroud)

或者,使用groupby

(df.groupby('gender').size()/df['gender'].count())*100
Run Code Online (Sandbox Code Playgroud)


小智 5

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

1)

df['gender'].value_counts()

 output:

 M=120
 F=80
Run Code Online (Sandbox Code Playgroud)

2)

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

  output:

  M=0.60
  F=0.40
Run Code Online (Sandbox Code Playgroud)

3)

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

  output:

  M=60
  F=40
Run Code Online (Sandbox Code Playgroud)