2017-08-07 18 views
2

這更像是一個面向對象的問題。numpy方法爲什麼可以在熊貓數據框上工作?

我在Python中使用numpy和pandas。假設我將購物清單讀入pd類型。現在我想找到所有東西的平均值。

data = pd.read_csv('shopping.csv') 
prices = data['priceTag'] 

然後我嘗試了兩種方法來返回平均價格。看起來他們兩個都工作正常。

mean_price = prices.mean() 
mean_price = np.mean(prices) 

那麼爲什麼np方法可以在pd類型上工作?

+0

.mean()是一個方法Pandas Dataframe類,而np.mean()是默認Numpy庫的一種方法。 沒有參數需要傳遞給熊貓對象,因爲該方法作用於基礎數據,而Numpy方法需要並將對象傳遞給它。 –

+0

@ Q.Holness,我更新了我的問題,實際上,我想問,爲什麼np方法可以在pd類型上工作? – Patrick

回答

3

numpy documentation

一個:含有其平均期望數字array_like陣列。如果a是 而不是數組,則嘗試進行轉換。

特別閱讀第二句。如果a已不是numpyarray,則numpymean函數將嘗試呼叫np.array(a)

3

這裏是numpy的平均的源代碼:

def mean(a, axis=None, dtype=None, out=None, keepdims=False): 
""" 
doc for function 

""" 
if type(a) is not mu.ndarray: 
    try: 
     mean = a.mean 
     return mean(axis=axis, dtype=dtype, out=out) 
    except AttributeError: 
     pass 

return _methods._mean(a, axis=axis, dtype=dtype, 
         out=out, keepdims=keepdims) 

實際上,當你調用np.mean(數據),您呼叫data.mean()

+0

我相信這是正確的答案。調用np.array會使DataFrame成爲一個numpy數組。 – ayhan

相關問題