【问题标题】:Pandas get frequency of item occurrences in a column as percentage [duplicate]熊猫以百分比形式获取列中项目出现的频率[重复]
【发布时间】:2018-11-06 13:55:44
【问题描述】:

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

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

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

有人可以帮忙吗?

【问题讨论】:

  • 您是否需要查看MF 以外的gender 列?

标签: python pandas dataframe percentage


【解决方案1】:

如果您不需要查看除gender 列之外的MF 值,那么您可以尝试使用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

【讨论】:

    【解决方案2】:

    value_countsnormalize=True 一起使用:

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

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

    【讨论】:

    • 不错,不知道normalize=True
    • 很好的答案先生!
    【解决方案3】:

    找出目标变化与不平衡/不平衡的百分比。

    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()
    

    【讨论】:

      【解决方案4】:

      假设有 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
      

      【讨论】:

        【解决方案5】:
        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)))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-21
          • 2022-11-17
          • 1970-01-01
          • 2023-01-26
          • 2015-07-28
          • 2022-01-23
          • 2022-08-15
          • 2017-03-05
          相关资源
          最近更新 更多