例如我有一个pandas DataFrame,它看起来像:
a b c
1 2 3
4 5 6
7 8 9
我想计算此DF中所有值的标准偏差。函数df.std()
让我回到了值pro列。
当然我可以创建下一个代码:
sd = []
sd.append(list(df['a']))
sd.append(list(df['b']))
sd.append(list(df['c']))
numpy.std(sd)
是否可以更简单地使用此代码并为此DF使用一些pandas函数?
答案 0 :(得分:3)
另一种选择,如果您喜欢“制作所有值的矢量”然后采用其标准偏差的想法:
df.stack().std()
但请注意:请记住,pandas std
函数假定与numpy std
函数不同的分母(自由度),以便:
df = pd.DataFrame(np.arange(1, 10).reshape(3, 3), columns=list('abc'))
print np.std(df.values)
print df.stack().std()
print df.stack().std() * np.sqrt(8. / 9.)
的产率:
2.58198889747
2.73861278753
2.58198889747
中间数字不同!不是拼写错误!