【发布时间】:2014-09-28 05:51:38
【问题描述】:
这是我的问题,我有一个这样的数据框:
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 函数不同的是 ddof=0。
【问题讨论】:
-
按照设计
mean在特定轴上运行,按列或按行。正如您所发现的那样,没有一种方法可以对整个数据帧进行操作,另一种方法是df.values.mean()这使用 numpy mean,我认为这与 pandas 使用的相同。 -
@EdChum,是的,但为什么没有像 numpy 中的
axis=None选项?让axis=0默认?df.values与df.get_values()相同,但感谢您的注意,我获得了空间。 -
无法回答为什么,我不是 pandas 的开发者,希望其中有人能看到并发表评论
-
顺便说一句,
df.mean().mean()如果存在缺失值,则不一定会给您正确的答案(因为它会计算列均值的平均值,并且相对于没有缺失值的列,会隐式加权具有缺失值的列)