首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用pandas读取excel时的精度损失

使用pandas读取excel时的精度损失
EN

Stack Overflow用户
提问于 2016-05-28 04:59:32
回答 3查看 3.9K关注 0票数 4

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

在excel中,该值是225789.479905466,而在数据帧中,该值是225789.47990546614,这给我从excel导入数据到数据库造成了差异。

有没有人在使用pandas.read_exel()时遇到同样的问题。将csv读取到dataframe没有任何问题。

杰里米

EN

回答 3

Stack Overflow用户

发布于 2016-05-28 06:36:30

我认为这只是浮点错误和/或默认的Excel视图没有向您显示数字的完整精度。

还要考虑以下几点:

代码语言:javascript
运行
复制
from decimal import Decimal
x = Decimal(225789.479905466)
y = Decimal(225789.47990546614)  
print(abs(x - y)/y)
6.444904002816901933512563658E-16

那么,6.5e-14%的差异会有意义地改变你的分析结果吗?

我敢打赌,它不会。

票数 0
EN

Stack Overflow用户

发布于 2016-06-03 00:05:41

Excel可能会截断您的值,而不是pandas。如果您从Excel导出到.csv,并且注意如何操作,那么您应该能够使用pandas.read_csv读取并维护您的所有数据。pandas.read_csv还有一个未公开的float_precision kwarg,可能有用,也可能没用。

票数 0
EN

Stack Overflow用户

发布于 2021-02-12 08:43:59

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

有关详细信息,请参阅link1link2

代码语言:javascript
运行
复制
def fix_float_error(x): return float('{:n}'.format(x))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37492173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档