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

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

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

回到顶部