我正在嘗試使用 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
提交
取消