python - Pandas 和 Numpy 的不同标准差
问题描述
我试图计算std
一个数组,我尝试使用numpy
andpandas
来查找std
,但我所取得的结果是不合逻辑的,我有两个不同std
的相同数组!
为什么会发生这种情况?
>>> import numpy as np
>>> import pandas as pd
>>> a = np.arange(10)+1
>>> a
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> a.std()
2.8722813232690143
>>> b = pd.DataFrame(a)
>>> b.std()
0 3.02765
dtype: float64
解决方案
差异在于自由度,numpy 中的默认值是ddof=0
,pandas 中的默认值是ddof=1
:
print(a.std())
2.8722813232690143
print(a.std(ddof=0))
2.8722813232690143
print(a.std(ddof=1))
3.0276503540974917
b = pd.DataFrame(a)
print(b.std())
0 3.02765
dtype: float64
print(b.std(ddof=1))
0 3.02765
dtype: float64
print(b.std(ddof=0))
0 2.872281
dtype: float64
推荐阅读
- python - 使用 pytorch 进行 BERT 文本分类
- python - 在 matplotlib 中为多个子图设置标题
- php - 如何在虚拟主机 apache 机器上提供多个域共有的图像和 pdf 文件
- javascript - Onchange AppScript - 为特定列创建更改历史记录
- python - BeautifulSoup 查找返回无
- javascript - res.cookie 适用于 Localhost 和 Postman,但不适用于生产
- react-native - 在本机反应中在后台上传大型视频文件
- dataweave - DataWeave 中的分组方式和平均平面数据
- python - 如何检查变量是否是 Python 3 中 mpfr 的实例?
- javascript - 按属性顺序排列的 geojson 数据样式(传单)