python支持double吗_Python==如何适用于float/double?

不,你不能认为这会一直有效。在

为了实现这一点,您需要知道Pandas在写入CSV文件时写出的文本值在读回时恢复为完全相同的值(再次使用Pandas)。但默认情况下,Pandasread_csv函数牺牲了速度的准确性,因此解析操作不会自动恢复相同的浮点值。在

为了演示这一点,请尝试以下操作:我们将创建一些随机值,将它们写入CSV文件,然后读回这些值,全部使用Pandas。首先是必要的进口:>>> import pandas as pd

import numpy as np

现在创建一些随机值,并将它们放入PandasSeries对象中:

^{pr2}$

现在我们使用to_csv方法将这些值写入文件,然后将该文件的内容读回DataFrame:>>> s.to_csv(‘test.csv’, header=True)

df = pd.read_csv(‘test.csv’)

最后,让我们从df的相关列中提取值并进行比较。我们将对==操作的结果求和,以确定有多少10000输入值被准确恢复。在>>> sum(test_values == df[‘test_values’])

7808

因此,大约78%的数值得到了正确的恢复,其他的则没有。在

这种行为被认为是熊猫的特征,而不是臭虫。但是,有一个解决方法:Pandas 0.15向CSV读取器添加了一个新的float_precision参数。通过将float_precision=’round_trip’提供给read_csv操作,Pandas使用了一个速度较慢但更精确的解析器。在上面的示例中,我们可以完美地恢复值:>>> df = pd.read_csv(‘test.csv’, float_precision=’round_trip’)

sum(test_values == df[‘test_values’])

10000

这是第二个例子,往另一个方向发展。前一个例子表明,先写后读并不返回相同的数据。这个例子表明,读然后写也不能保存数据。设置与您在问题中描述的设置非常匹配。首先,我们将创建A.csv,这次使用的是规则间隔值,而不是随机值:>>> import pandas as pd, numpy as np

s = pd.Series(np.arange(10**4) / 1e3, name=’test_values’)

s.to_csv(‘A.csv’, header=True)

现在我们读取A.csv,并将前半部分数据再次写回到B.csv,如步骤1所示。在>>> recovered_s = pd.read_csv(‘A.csv’).test_values

recovered_s[:5000].to_csv(‘B.csv’, header=True)

然后我们阅读A.csv和B.csv,并将A的前半部分与{}进行比较,如步骤2所示。在>>> a = pd.read_csv(‘A.csv’).test_values

b = pd.read_csv(‘B.csv’).test_values

(a[:5000] == b).all()

False

(a[:5000] == b).sum()

4251

同样,有几个值不能正确比较。打开这些文件,A.csv看起来和我预期的差不多。以下是A.csv中的前15个条目:,test_values

0,0.0

1,0.001

2,0.002

3,0.003

4,0.004

5,0.005

6,0.006

7,0.007

8,0.008

9,0.009

10,0.01

11,0.011

12,0.012

13,0.013

14,0.014

15,0.015

下面是B.csv中的相应条目:,test_values

0,0.0

1,0.001

2,0.002

3,0.003

4,0.004

5,0.005

6,0.006

7,0.006999999999999999

8,0.008

9,0.009000000000000001

10,0.01

11,0.011000000000000001

12,0.012

13,0.013000000000000001

14,0.013999999999999999

15,0.015

有关将float_precision关键字引入read_csv的更多信息,请参阅bug report。在

Original: https://blog.csdn.net/weixin_31138555/article/details/112877814
Author: wangsmaster
Title: python支持double吗_Python==如何适用于float/double?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678940/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球