Python 输入输出浮点数问题
Python似乎对浮点数做了一些有趣的事情,它根据我给它的输入生成不同的浮点数,我希望浮点数与输入保持一致 这里我有一个小的测试数据集:Python 输入输出浮点数问题,python,floating-point,Python,Floating Point,Python似乎对浮点数做了一些有趣的事情,它根据我给它的输入生成不同的浮点数,我希望浮点数与输入保持一致 这里我有一个小的测试数据集: import pandas as pd df = {'ID': ['H1','H2','H3','H4','H5','H6'], 'Length': [72, 72, '', 72, 72,'' ], 'AA1': ['C','C','C','C','C','C'], 'AA2': ['W','W','W','W','W'
import pandas as pd
df = {'ID': ['H1','H2','H3','H4','H5','H6'],
'Length': [72, 72, '', 72, 72,'' ],
'AA1': ['C','C','C','C','C','C'],
'AA2': ['W','W','W','W','W','W'],
'Freq': [0.14532872, 0.141868512,0.138408304, 0.14532872,0.138408304, 0.138408304 ],
'M': [-282.0570386,-279.1090993,-276.16116,-282.0570386,-274.7748657,-274.6160337]}
df = pd.DataFrame(df)
它应该看起来像:
df
Out[2]:
AA1 AA2 Freq ID Length M
0 C W 0.14532872 H1 72 -282.0570386
1 C W 0.141868512 H2 72 -279.1090993
2 C W 0.138408304 H3 -276.16116
3 C W 0.14532872 H4 72 -282.0570386
4 C W 0.138408304 H5 72 -274.7748657
5 C W 0.138408304 H6 -274.6160337
但实际上看起来是这样的,请注意'Freq'和'M'列中浮点数的差异:
df
Out[2]:
AA1 AA2 Freq ID Length M
0 C W 0.145329 H1 72 -282.057039
1 C W 0.141869 H2 72 -279.109099
2 C W 0.138408 H3 -276.161160
3 C W 0.145329 H4 72 -282.057039
4 C W 0.138408 H5 72 -274.774866
5 C W 0.138408 H6 -274.616034
当我运行脚本只是简单地过滤掉我不想要的行时:
import pandas as pd
df = pd.read_csv('test.txt', sep='\t' )
df2 = df[(df['Length'] != 0 ) & (df['AA1'] == 'C')& (df['AA2']== 'C')]
df2.to_csv('results.txt', sep = '\t', index=False)
“results.txt”文件包含与输入不同的奇怪浮点数,必须有一种方法将浮点数作为输入输出,但我无法在网上找到相关主题 浮动很奇怪:
从他们身上看到奇怪的行为并不罕见。如果您没有对它们进行任何计算,我建议先将它们转换为字符串,这样它们就会以您想要的格式存储 浮动很奇怪:
从他们身上看到奇怪的行为并不罕见。如果您没有对它们进行任何计算,我建议先将它们转换为字符串,这样它们就会以您想要的格式存储 它们是相同的数字,只是四舍五入。在文档中,它显示了
display下的默认显示位数为6。precision
它们是相同的数字,只是四舍五入。在文档中,它显示了display下的默认显示位数为6。precision
这只是因为Pandas为要显示的小数位数设置了默认精度。将数值转换为字符串并不总是一个好主意:特别是,Pandas使用dtypeobject
将字符串条目存储在数据帧中的NumPy数组中。这使得数据帧的存储需求爆炸式增长(从每个双精度浮点项8字节到每个字符串项60字节以上),并且对大型数据帧的性能有重大影响。这仅仅是因为Pandas为要显示的小数位数设置了默认精度。将数值转换为字符串并不总是一个好主意:特别是,Pandas使用dtypeobject
将字符串条目存储在数据帧中的NumPy数组中。这使得数据帧的存储需求激增(从每个双精度浮点项8字节到每个字符串项60字节以上),并对大型数据帧的性能产生重大影响。