提问人:Jeremy Nguyen 提问时间:5/28/2016 更新时间:5/30/2021 访问量:6213
使用 Pandas 读取 Excel 时精度下降
loss of precision when using pandas to read excel
问:
我尝试使用 pandas 将 excel 工作表读入数据帧,但对于浮点列,数据读取不正确。我使用函数 read_excel() 来完成任务
在 excel 中,值是 225789.479905466,而在 DataFrame 中,值是 225789.47990546614,这给我将数据从 excel 导入数据库带来了差异。
有没有人在 pandas.read_exel() 中遇到同样的问题。我在将 csv 读取到 DataFrame 时没有问题。
杰里米
答:
0赞
Paul H
5/28/2016
#1
我相信这只是浮点错误和/或默认的 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赞
Jeremy Nguyen
6/2/2016
该文件存储金额,因此我需要它是准确的
1赞
Paul H
6/2/2016
@JeremyNguyen那么,计算机上的浮点精度是错误的方法
0赞
htln
6/3/2016
#2
Excel 可能会截断您的值,而不是 pandas。如果从 Excel 导出为 .csv 并注意操作方式,则应该能够读取和维护所有数据。 还有一个未记录的 kwarg,可能有用,也可能没有用。pandas.read_csv
pandas.read_csv
float_precision
0赞
Zachary Chiodini
2/12/2021
#3
您可以应用函数 lambda x : float( '{:n}'.format( x ) ) 来删除浮点错误,或者至少更正浮点的显示方式。
def fix_float_error(x): return float('{:n}'.format(x))
下一个:特征浮点精度
评论