Calcular numpy.std de cada columna pandas.DataFrame?

Quiero obtener el numpy.std de cada columna de mis pandas.DataFrame .

Aquí está mi código:

 import pandas as pd import numpy as np prices = pd.DataFrame([[-0.33333333, -0.25343423, -0.1666666667], [+0.23432323, +0.14285714, -0.0769230769], [+0.42857143, +0.07692308, +0.1818181818]]) print(pd.DataFrame(prices.std(axis=0))) 

Aquí está la salida de mi código:

 pd.DataFrame([[ 0.39590933], [ 0.21234018], [ 0.1809432 ]]) 

Y aquí está la salida correcta (si se calcula con np.std )

 pd.DataFrame([[ 0.32325862], [ 0.17337503], [ 0.1477395 ]]) 

¿Por qué estoy teniendo tanta diferencia? ¿Cómo puedo arreglar eso?

NOTA : He intentado hacerlo de esta manera:

 print(np.std(prices, axis=0)) 

Pero tuve el siguiente error:

 Traceback (most recent call last): File "C:\Users\*****\Documents\******\******\****.py", line 10, in  print(np.std(prices, axis=0)) File "C:\Python33\lib\site-packages\numpy\core\fromnumeric.py", line 2812, in std return std(axis=axis, dtype=dtype, out=out, ddof=ddof) TypeError: std() got an unexpected keyword argument 'dtype' 

¡Gracias!

Ambos tienen razón: simplemente difieren en lo que son los grados de libertad predeterminados delta. np.std usa 0, y DataFrame.std usa 1:

 >>> prices.std(axis=0, ddof=0) 0 0.323259 1 0.173375 2 0.147740 dtype: float64 >>> prices.std(axis=0, ddof=1) 0 0.395909 1 0.212340 2 0.180943 dtype: float64 >>> np.std(prices.values, axis=0, ddof=0) array([ 0.32325862, 0.17337503, 0.1477395 ]) >>> np.std(prices.values, axis=0, ddof=1) array([ 0.39590933, 0.21234018, 0.1809432 ])