Pandas:计算整个数据帧的均值或标准差(标准差)

jrj*_*rjc 30 python numpy pandas

这是我的问题,我有一个这样的数据帧:

    Depr_1  Depr_2  Depr_3
S3  0   5   9
S2  4   11  8
S1  6   11  12
S5  0   4   11
S4  4   8   8
Run Code Online (Sandbox Code Playgroud)

我只是想计算整个数据帧的平均值,因为以下不起作用:

df.mean()
Run Code Online (Sandbox Code Playgroud)

然后我提出:

df.mean().mean()
Run Code Online (Sandbox Code Playgroud)

但是这个技巧不适用于计算标准偏差.我最后的尝试是:

df.get_values().mean()
df.get_values().std()
Run Code Online (Sandbox Code Playgroud)

除了在后一种情况下,它使用numpy中的mean()和std()函数.这对于平均值来说不是问题,但它适用于std,因为pandas函数默认使用ddof=1,而不像numpy那样ddof=0.

Joh*_*hnE 47

您可以将数据stack框转换为单个列(这会将形状从5x3更改为15x1),然后采用标准偏差:

df.stack().std()         # pandas default degrees of freedom is one
Run Code Online (Sandbox Code Playgroud)

或者,您可以values在获取标准偏差之前使用从pandas数据帧转换为numpy数组:

df.values.std(ddof=1)    # numpy default degrees of freedom is zero
Run Code Online (Sandbox Code Playgroud)

需要注意的是(不像大熊猫)numpy的将给予默认情况下,整个阵列的标准偏差,所以没有必要采取标准偏差之前重塑.