我正在尝试使用 Pandas 计算均值、方差和 SD。但是,手动计算与pandas输出不同。使用熊猫有什么我遗漏的吗?附上xl截图以供参考import pandas as pddg_df = pd.DataFrame( data=[600,470,170,430,300], index=['a','b','c','d','e'])print(dg_df.mean(axis=0)) # 394.0 matches with manual calculationprint(dg_df.var()) # 27130.0 not matching with manual calculation 21704print(dg_df.std(axis=0)) # 164.71187 not matching with manual calculation 147.32
3 回答

慕少森
TA贡献2019条经验 获得超9个赞
标准差的定义不止一种。您正在计算 Excel 的等效项STDEV.P
,其描述为:“根据整个人口计算标准偏差......”。如果您需要 Excel 中的样本标准偏差,请使用STDEV.S
.
pd.DataFrame.std
默认情况下假定为 1个自由度,也称为样本标准差。
numpy.std
默认情况下假定自由度为0 ,也称为总体标准差。
请参阅贝塞尔校正以了解样本和总体之间的差异。
您还可以ddof=0
使用 Pandas std
/var
方法指定:
dg_df.std(ddof=0) dg_df.var(ddof=0)

慕村225694
TA贡献1880条经验 获得超4个赞
您也可以使用 dg_df.describe(),然后获得下一个数据帧。也许更直观
count 5.00000
mean 394.00000
std 164.71187
min 170.00000
25% 300.00000
50% 430.00000
75% 470.00000
max 600.00000
你可以得到正确的数据,比如 dg_df.describe().loc['count']
添加回答
举报
0/150
提交
取消