【问题标题】:Pandas find average for string occurrences熊猫找到字符串出现的平均值
【发布时间】:2019-07-10 19:04:50
【问题描述】:

我正在使用数据框来尝试查找平均值,但在尝试将值计数转换为分组 df 的平均值时遇到了困难。代码如下:

df2 = df.groupby(['school', 'Race/Ethnicity']).size()

school          Race/Ethnicity                        
school1         African American/Black                     15
                American Indian/Alaska Native               1
                Bi-racial/Multi-racial                      4
                Latino/a                                   53
                Other - Write In (Required)                 1
                White                                       2
school2         African American/Black                      1
                American Indian/Alaska Native               5
                Asian                                       1
                Bi-Racial/Multi-Racial                      1
                Latino/a                                   26

我有很多不同的学校,而不是大小,我想找到每个学校每个种族的平均值。如何遍历组以找到每个组的总和,然后将每行除以其组的总和?

【问题讨论】:

  • 查看示例数据会有所帮助,但听起来您可以将df2 除以df.groupby('school').size()
  • @AndrewL 谢谢,这正是我所需要的!我知道我让事情变得比他们需要的更难。

标签: python pandas pandas-groupby


【解决方案1】:

value_counts中使用normalize参数

df.groupby('school')['Race/Ethnicity'].value_counts(normalize=True)

school   Race/Ethnicity               
school1  Latino/a                         0.697368
         African American/Black           0.197368
         Bi-racial/Multi-racial           0.052632
         White                            0.026316
         American Indian/Alaska Native    0.013158
         Other - Write In (Required)      0.013158
school2  Latino/a                         0.764706
         American Indian/Alaska Native    0.147059
         African American/Black           0.029412
         Asian                            0.029412
         Bi-Racial/Multi-Racial           0.029412
Name: Race/Ethnicity, dtype: float64

你也可以跳过排序

df.groupby('school')['Race/Ethnicity'].value_counts(normalize=True, sort=False)

school   Race/Ethnicity               
school1  African American/Black           0.197368
         American Indian/Alaska Native    0.013158
         Bi-racial/Multi-racial           0.052632
         Latino/a                         0.697368
         Other - Write In (Required)      0.013158
         White                            0.026316
school2  African American/Black           0.029412
         American Indian/Alaska Native    0.147059
         Asian                            0.029412
         Bi-Racial/Multi-Racial           0.029412
         Latino/a                         0.764706
Name: Race/Ethnicity, dtype: float64

设置

df = pd.DataFrame(
    [['school1', 'African American/Black']] * 15 +
    [['school1', 'American Indian/Alaska Native']] * 1 + 
    [['school1', 'Bi-racial/Multi-racial']] * 4 +
    [['school1', 'Latino/a']] * 53 +
    [['school1', 'Other - Write In (Required)']] * 1 +
    [['school1', 'White']] * 2 +
    [['school2', 'African American/Black']] * 1 +
    [['school2', 'American Indian/Alaska Native']] * 5 +
    [['school2', 'Asian']] * 1 +
    [['school2', 'Bi-Racial/Multi-Racial']] * 1 +
    [['school2', 'Latino/a']] * 26,
    columns=['school', 'Race/Ethnicity']
)

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 2021-05-31
    • 2021-12-15
    • 2019-11-24
    • 2022-01-08
    • 2017-07-26
    • 2015-09-11
    • 2015-01-21
    相关资源
    最近更新 更多