我是Python新手,需要你的帮助。我需要计算一个非常大的数组中特定列的平均值。我想使用numpy.average函数(对任何其他建议开放),但无法想出通过其标题选择列的方法(例如Flavor_Score列的平均值):
Beer_name Tester Flavor_Score Overall_Score
Coors Jim 2.0 3.0
Sam Adams Dave 4.0 4.5
Becks Jim 3.5 3.5
Coors Dave 2.0 2.2
Becks Dave 3.5 3.7
我是否必须转置数组(似乎pandas和numpy中的行有很多函数,但列相对较少(我当然可能是错的)来完成列的平均计算?
同一阵列的第二个问题:是使用第一个问题(计算平均Flavor_Score)的答案来计算特定啤酒(不同测试者)的平均Flavor_Score的最佳方法?
啤酒测试= “库尔斯”
啤酒_Name()中的:
if i=Beer_test: # recurring average calculation
else: pass
我希望有一个内置功能。</ p>
非常感谢您的帮助!
答案 0 :(得分:1)
好的,这是一个如何做到这一点的例子。
# Test data
df = pd.DataFrame({'Beer_name': ['Coors', 'Sam Adams', 'Becks', 'Coors','Becks'],
'Tester': ['Jim', 'Dave', 'Jim', 'Dave', 'Dave'],
'Flavor_Score': [2,4,3.5,2,3.5],
'Overall_Score': [3, 4.5, 3.5, 2.2, 3.7]})
# Simply call mean on the DataFrame
df.mean()
Flavor_Score 3.00
Overall_Score 3.38
然后您可以使用groupby
功能:
df.groupby('Beer_name').mean()
Flavor_Score Overall_Score
Beer_name
Becks 3.5 3.6
Coors 2.0 2.6
Sam Adams 4.0 4.5
现在你甚至可以看到测试人员的样子。
df.groupby(['Beer_name','Tester']).mean()
Flavor_Score Overall_Score
Beer_name Tester
Becks Dave 3.5 3.7
Jim 3.5 3.5
Coors Dave 2.0 2.2
Jim 2.0 3.0
Sam Adams Dave 4.0 4.5
好啤酒!