我有一个大型数据框,其中包含约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))
答案 0 :(得分:1)
我认为您需要汇总mean
,然后将catagory
的{{3}}最多使用mean
:
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
答案 1 :(得分:0)
创建这样的数据框示例:
df = pd.DataFrame([['Game', 'Test1', 2.4], ['Game', 'Test2', 4.3],['News','Test3',5]], columns=['Category', 'App', 'Rating'])
打印数据框:
Category App Rating
0 Game Test1 2.4
1 Game Test2 4.3
2 News Test3 5.0
然后,您可以按类别分类,并通过以下方式计算每个类别的所有其他列的平均值:
df.groupby('Category').mean()
结果:
Category Rating
Game 3.35
News 5.00
如果要专门计算单个列的平均值(例如,因为您有更多的数字列),则需要像下面这样明确声明该列:
df.groupby('Category')['Rating'].mean()