使用pandas读取excel时精度会下降

时间:2016-05-27 20:59:32

标签: python excel pandas dataframe precision

我尝试使用pandas将excel表读入数据帧,但对于浮点列,数据读取不正确。我使用函数read_excel()来完成任务

在excel中,值为225789.479905466,而在数据框中,值为225789.47990546614,这会导致我将数据从excel导入数据库时​​出现差异。

pandas.read_exel()是否有人面临同样的问题。我没有问题将csv读取到数据帧。

杰里米

3 个答案:

答案 0 :(得分: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%的差异是否会有意义地改变分析的结果?

我打赌它不会。

答案 1 :(得分:0)

Excel可能会截断您的值,而不是pandas。如果从Excel导出到.csv并注意如何操作,则应该能够使用pandas.read_csv阅读并维护所有数据。 pandas.read_csv还有一个无证的float_precision kwarg,可能有用或无用。

答案 2 :(得分:0)

您可以应用函数 lambda x : float( '{:n}'.format( x ) ) 来消除浮点错误,或者至少纠正浮点的显示方式。

有关详细信息,请参阅 link1link2

def fix_float_error(x): return float('{:n}'.format(x))