2017-08-07 12 views
2

これはオブジェクト指向の質問によく似ています。パンダのデータフレームでnumpyメソッドが動作するのはなぜですか?

私はPythonでnumpyとpandasを使用しています。私は買い物リストをpdタイプに読み込んだとします。そして今、私はすべてのものの平均値を見つけたいと思っています。

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

次に平均価格を返す2つの方法を試しました。両方がうまく動作しているように見えます。

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

なぜ、npメソッドがpdタイプで動作できるのですか? numpy documentationから

+0

.meanは()の方法であり、 Pandas Dataframeクラス、np.mean()はデフォルトのNumpyライブラリのメソッドです。 Numpyメソッドが必要としている間にメソッドが基になるデータに作用し、オブジェクトが渡されるので、パラメータはpandasオブジェクトに渡す必要はありません。 –

+0

@ Q.Holness、私は質問を更新しました。実際には、npメソッドがpdタイプで動作するのはなぜですか? – Patrick

答えて

3

:平均望ましい数を含むarray_like配列。 aが配列でない である場合、変換が試みられます。

特に第2文を読んでください。 aが既にnumpyarrayでない場合、numpymean関数はnp.array(a)を呼び出しようとします。ここ

3

numpyの平均のソースコードです:あなたは(データ)np.meanを呼び出すとき

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) 

は実際に、あなたは(data.mean呼んでいる)

+0

これは正しい答えだと思います。 np.arrayを呼び出すと、DataFrameがnumpy配列になります。 – ayhan

関連する問題