当前位置: 首页 > 面试题库 >

在熊猫中使用read_csv时精度下降

敖和韵
2023-03-14
问题内容

我在尝试将其读入pandas数据框的文本文件中具有以下格式的文件。

895|2015-4-23|19|10000|LA|0.4677978806|0.4773469340|0.4089938425|0.8224291972|0.8652525793|0.6829942860|0.5139162227|

如您所见,输入文件中的浮点后面有 10个 整数。

df = pd.read_csv('mockup.txt',header=None,delimiter='|')

当我尝试将其读入数据帧时,我没有得到最后的4个整数

df[5].head()

0    0.467798
1    0.258165
2    0.860384
3    0.803388
4    0.249820
Name: 5, dtype: float64

如何获得输入文件中显示的完整精度?我有一些矩阵操作需要执行,所以我不能将其转换为字符串。

我发现我必须做一些事情,dtype但是我不确定应该在哪里使用它。


问题答案:

这只是显示问题,请参阅docs:

#temporaly set display precision
with pd.option_context('display.precision', 10):
    print df

     0          1   2      3   4             5            6             7   \
0  895  2015-4-23  19  10000  LA  0.4677978806  0.477346934  0.4089938425

             8             9            10            11  12  
0  0.8224291972  0.8652525793  0.682994286  0.5139162227 NaN

Pandas使用专用的十进制到二进制转换器,该转换器为了提高速度而牺牲了完美的精度。传递float_precision='round_trip'给read_csv可以解决此问题。有关更多信息,请参见文档。



 类似资料:
  • 我试图在pandas中使用从FTP服务器读取压缩文件。zip文件只包含一个文件,这是必需的。 这是我的密码: 我得到这个错误: 我在pandas 18.1和19.0中都遇到了这个错误。我是否遗漏了什么,或者这可能是一个错误?

  • 我正在读取一个包含多个datetime列的csv文件。我需要在读取文件时设置数据类型,但datetimes似乎是个问题。例如: 运行时出现错误: 不理解数据类型"datetime" 通过pandas在事实之后转换列。to_datetime()不是一个选项,我不知道哪些列将成为datetime对象。这些信息可以更改,并且来自于通知我的数据类型列表的任何信息。 或者,我尝试用numpy.genfrom

  • 问题内容: 我将Python 3.4与IPython结合使用,并具有以下代码。我无法从给定的URL读取csv文件: 我有以下错误 “预期的文件路径名或类似文件的对象,得到了类型” 我怎样才能解决这个问题? 问题答案: 更新资料 现在,您可以从熊猫直接传递URL。 正如错误所暗示的,需要一个类似文件的对象作为第一个参数。 如果要从字符串读取csv,可以使用(Python 3.x)或(Python 2

  • 问题内容: 似乎pandas read_csv 函数仅允许使用单个字符定界符/分隔符。有没有办法允许使用字符串“ * | *”或“ %%”代替? 问题答案: 解决方案是使用read_table而不是read_csv: 因此,我们可以阅读以下内容:

  • 问题内容: 打电话时 我得到: /Users/josh/anaconda/envs/py27/lib/python2.7/site- packages/pandas/io/parsers.py:1130:DtypeWarning:列(4,5,7,16)具有混合类型。在导入时指定dtype选项,或将low_memory = False设置为false。 为什么选项与关联,为什么使它有助于解决此问题?

  • 如何使用pandas筛选要加载到内存中的CSV行?这似乎是一个应该在中找到的选项。我错过什么了吗? 示例:我们有一个带有时间戳列的CSV,我们只想加载时间戳大于给定常量的行。