python - 在数据框中查找平均值的更有效方法?

标签 python pandas dataframe

我有一个大型数据框,其中包含大约 13 列和 10,000 行有关应用的数据。其中一列是“类别”,说明每个应用程序属于哪个类别,每个应用程序在“评级”列中也有一个值,该值说明应用程序的评级。我正在尝试找出哪个类别的平均评分最高。

我使用这行代码来找出类别栏中的不同类别

df['Category'].value_counts())

到目前为止,我正在使用此代码来计算平均值,在本示例中,我将其用于“家庭”类别。它有效,但我必须对另外 32 个不同的类别执行此操作,有没有更简单的方法可以从整个数据框架中挑选出特定类别并计算出平均值?

 family1 = app_data[['Category', 'App', 'Rating']]

 nan_family = family1[pd.notnull(family1['Rating'])]

 family2 = nan_family.loc[nan_family['Category'] == 'FAMILY']

 print(family2[['Rating']].mean(axis = 0))

最佳答案

我相信您需要聚合mean,然后使用 Series.idxmax对于类别,按最大平均值:

df = pd.DataFrame({
         'Rating':[np.nan,5,4,1,7,4,np.nan,6,np.nan],
         'Category':list('aaabbbccc')
})

print (df)
   Rating Category
0     NaN        a
1     5.0        a
2     4.0        a
3     1.0        b
4     7.0        b
5     4.0        b
6     NaN        c
7     6.0        c
8     NaN        c

print (df.groupby('Category')['Rating'].mean())
Category
a    4.5
b    4.0
c    6.0
Name: Rating, dtype: float64

top_cat = df.groupby('Category')['Rating'].mean().idxmax()
print (top_cat)
c

关于python - 在数据框中查找平均值的更有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57952560/

相关文章:

python - Sqlalchemy 双关联表?

python - 无法获取字典 For 循环以从正确的列中提取字符串

python - 使用 pandas 将 JSON 转换为数据框

python - 单词和组元组之间的映射以获得单词的频率

python - 按自定义方式对 Pandas 数据框进行排序

python - 将字符串分配给 numpy.zeros 数组

python - 在 Python 中创建流类

python - 使用 groupby 对象编辑数据框条目 --pandas

r - 计算 R 数据框中特定字符串的数量

python - Pandas 数据帧行到列表字典,使用每行的第一个值作为键