提问人:Georgios Sarantitis 提问时间:1/27/2022 最后编辑:smciGeorgios Sarantitis 更新时间:1/27/2022 访问量:233
在相同的 pandas 数据上运行相同的脚本会生成略有不同的 DataFrame 浮点值
Running the same script on the same pandas data produces very slightly different dataframes floating-point values
问:
我正在执行我之前在相同数据上运行过的脚本。我得到的数据帧与前一个数据帧仅略有不同(在小数点后第 10 位左右)。例如:
- 在某一列(和行)中,旧 DataFrame 包含价格 5673391.88。
- 在新数据帧的同一列和同一行中,该值似乎完全相同 (5673391.88)。
- 但是,如果我减去这两列,我会得到 -9.445123e-10 的差异。
当然,整个列都是这种情况,而不仅仅是特定行。这怎么可能?请注意,我无法确认两个脚本运行之间的相同环境(pandas 或 Python 版本)。会不会是这两个原因之一?别的?
答:
1赞
Fareed Khan
1/27/2022
#1
一个可能的原因:Pandas 1.2.0
于 2020 年 12 月 26 日
发布,他们强调了这个问题:
更改 read_csv 和 read_table 的默认浮动精度
read_csv(
) 和read_table()
方法相对于精度的最后一位,读取浮点
数可能会略有错误。
在此之前,此版本始终可用,以避免此问题。floating_precision="high"
但是,在此版本中,现在的默认设置是使精度更加精确。它不会对性能产生任何影响。floating_precision=None
评论
2赞
Georgios Sarantitis
1/28/2022
不幸的是,这在我的情况下不起作用。因此,我阅读了新生成的 DataFrame,其中 floating_precision = 'High' 或 'legacy' 或 'round_trip',但并不缺乏。准确地说,当使用“高”时,我得到了完全相同的结果,当我使用其他两个时,我得到了更多的不同列。现在,我将尝试通过使用较旧的 Pandas 版本运行生成数据帧的所有管道来重现数据帧。将更新线程。
0赞
smci
1/28/2022
Georgios 请尝试制作一些可重复的例子 (MCVE) 并发布它,否则没有人可以复制您的轶事结果。此外,请在脚本中自动记录 pandas、Python、numpy 以及管道中可能影响此问题的所有其他包的版本。为了可重复性,请注意不断更新包。使用虚拟环境并行使用多个版本。
评论