2016-08-14 7 views
2

私はデバッグして、次の奇妙な動作に遭遇しています。 私は全く同じ数字を含むパンダシリーズの平均を計算しています。ただし、pd.mean()は異なる番号を示します。df.meanはシリーズの実際の平均ではありませんか?

質問1:なぜこのシリーズの平均は異なる数字ですか?

question2:tmm[-1]== tmm.mean()は現在Falseです。この小さな違いを無視して結果を真にする方法はありますか?私は好きではないxxxを定義する方法がわからないので、abs(tmm[-1]-tmm.mean()) < 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

を使用してみてください –

+1

"私は' abs(tmm [-1] -tmm.mean()) BrenBarn

答えて

2

は `float`sはあなたが別の平均値を取得する理由です、精密エラーに対して本質的になりやすいです。np.isclose()

tmm[20]== tmm.mean() 

False 

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

あなたの2つの質問への答えは基本的にはこれです:

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())) 

はそれはかなりだ、あなたはTMMを作成しているときにdecimal.Decimalコンストラクタを使用していることを確認します多く。

関連する問題