2016-08-14 16 views
2

我正在調試並遇到以下奇怪的行爲。 我正在計算包​​含所有完全相同數字的熊貓系列的平均值。但是,pd.mean()給出了不同的數字。df.mean是不是系列的真正意思?

question1:爲什麼這個系列的意思是不同的數字?

問題2:tmm[-1]== tmm.mean()現在給出False。任何方式來忽略這個小的差異,並使結果爲真?我不喜歡abs(tmm[-1]-tmm.mean()) < xxx

方法,因爲不知道如何定義xxx

import pandas as pd 
import decimal 

tmm = pd.Series(14.9199999999999999289457264239899814128875732421875, 
       index=range(30)) 
for t in tmm: 
    print(decimal.Decimal(t)) 
print('mean is') 
print(decimal.Decimal(tmm.mean())) 

結果:

14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
14.9199999999999999289457264239899814128875732421875 
mean is 
14.9200000000000034816594052244909107685089111328125 
+2

'float's本質上容易出現精度誤差,這就是爲什麼你會得到一個不同的意思。 –

+1

「我不喜歡'abs(tmm [-1] -tmm.mean()) BrenBarn

回答

2

嘗試使用np.isclose()

tmm[20]== tmm.mean() 

False 

np.isclose(tmm[20], tmm.mean()) 
True 
0

回答你的兩個問題基本上是這樣的:

import pandas as pd 
import decimal 

tmm = pd.Series(decimal.Decimal(14.9199999999999999289457264239899814128875732421875), 
       index=range(30)) 
for t in tmm: 
    print(decimal.Decimal(t)) 
print('mean is') 
print(decimal.Decimal(tmm.mean())) 

請確保您使用decimal.Decimal構造函數當你創建TMM,這是相當許多。

相關問題