计算2D数组中特定列的平均值

时间:2015-09-04 19:37:57

标签: arrays numpy pandas average calculated-columns

我是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>

非常感谢您的帮助!

1 个答案:

答案 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

好啤酒!