Pandas:计算整个数据框的均值或标准差(标准差)
这是我的问题,我有一个像这样的数据框:
Depr_1 Depr_2 Depr_3S3 0 5 9
S2 4 11 8
S1 6 11 12
S5 0 4 11
S4 4 8 8
我只想计算整个数据帧的平均值,因为以下方法不起作用:
df.mean()
然后我想出了:
df.mean().mean()
但是,此技巧不适用于计算标准偏差。我最后的尝试是:
df.get_values().mean()df.get_values().std()
除了在后一种情况下,它使用了numpy中的mean()和std()函数。这不是平均值的问题,而是std的问题,因为pandas函数默认使用ddof=1
,而不是numpy的where
ddof=0
。
回答:
您可以将数据stack
框转换为单列(将形状从5x3更改为15x1),然后采用标准偏差:
df.stack().std() # pandas default degrees of freedom is one
或者,您可以values
在采用标准差之前使用来将熊猫数据框转换为numpy数组:
df.values.std(ddof=1) # numpy default degrees of freedom is zero
与pandas不同,numpy默认情况下会给出整个数组的标准差,因此在进行标准差处理之前无需重塑形状。
另外一些注意事项:
这里的numpy方法比熊猫方法要快一些,当您可以选择用numpy或pandas完成相同的事情时,通常情况就是这样。速度差异取决于数据的大小,但是当我在笔记本电脑(numpy版本1.15.4和pandas版本0.23.4)上测试一些不同大小的数据帧时,numpy的速度大约快10倍。
此处的numpy和pandas方法不会给出完全相同的答案,但将非常接近(相同的精度为几位数)。差异是由于在幕后的实现中存在细微差异,这些差异会影响浮点值的取整方式。
以上是 Pandas:计算整个数据框的均值或标准差(标准差) 的全部内容, 来源链接: utcz.com/qa/403710.html