我有一个大型数据框,其中包含大约 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/