2015-09-04 93 views
2

我是Python新手,需要您的幫助。我需要計算一個非常大的數組中特定列的平均值。我想用numpy.average功能(開放給任何其他建議),但不能想出一個辦法,通過其標題來選擇列(例如平均爲Flavor_Score列):計算2D陣列中特定列的平均值

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 

我必須轉置陣列(似乎還有很多功能在大熊貓和numpy的,但行相對較少的列(我可能是錯的,當然),以獲得平均計算中做了列?

爲同第二個問題數組:是使用第一個問題的答案(計算平均Flavor_Score)來計算特定啤酒的平均Flavor_Score(不同測試者之間)的最佳方式)?

啤酒測試= 「庫爾斯」

因爲我在Beer_Name():

if i=Beer_test: # recurring average calculation 
else: pass 

我希望有一個內置的功能這一點。

非常感謝您的幫助!

+4

計算特定列的平均值df ['Flavor_Score']。mean()',對於特定啤酒:'df [df ['Beer_Name'] =='Coors','Flavor_Score']。mean ()' – EdChum

+0

mean()OR average()? – Toly

+0

@EdChum - 代碼的第一行工作完美! MEAN函數是計算平均值還是平均值?第二行代碼產生了一個錯誤它不喜歡df [df ['Beer_Name'] ...並且我用df替換了它[df.beer_name ==「Coors」]。Flavor_Score.mean()它工作正常!謝謝你,EdChum! – Toly

回答

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 

好啤酒!

+0

完美!!簡單優雅!謝謝! – Toly

+0

謝謝,如果我的回答滿足您的需求,請不要忘記檢查它。 – Romain