2016-05-27 76 views
1

我嘗試使用熊貓將excel表格讀入數據幀,但對於浮點列,數據讀取不正確。我使用函數read_excel()來完成任務使用熊貓讀取excel時丟失精度

在excel中,值爲225789.479905466,而在數據框中,值爲225789.47990546614,這導致我將數據從excel導入到數據庫時出現差異。

有沒有人會面對與pandas.read_exel()相同的問題。閱讀csv到數據框我沒有問題。

傑里米

+2

http://floating-point-gui.de/ –

+0

當你導出到csv(使用Excel),然後使用read_csv時,你有同樣的問題嗎? –

+0

實際上我只是在更詳細的檢查,如果我使用read_csv,我也面臨同樣的問題,我的一些單元格有精度高達8或9號 –

回答

0

我相信這僅僅是浮點錯誤和/或默認的Excel視圖沒有顯示你的號碼的全精度。

還要考慮以下幾點:

from decimal import Decimal 
x = Decimal(225789.479905466) 
y = Decimal(225789.47990546614) 
print(abs(x - y)/y) 
6.444904002816901933512563658E-16 

所以是6.5E-14%的差異要切實改變你分析的結果?

我敢打賭,它不會。

+0

該文件存儲金額因此我需要它是確切的雖然 –

+0

@JeremyNguyen然後在計算機上的浮點精度是錯誤的方式來做到這一點 –

0

Excel可能會截斷您的值,而不是熊貓。如果您從Excel中導出爲.csv並小心操作,則應該能夠使用pandas.read_csv進行閱讀並保留所有數據。 pandas.read_csv也有一個無證的float_precision kwarg,這可能是有用的,或無用的。