美文网首页
pandas数据读取的问题记录

pandas数据读取的问题记录

作者: slade_sal | 来源:发表于2018-10-23 14:07 被阅读108次

最近发现pandas的一个问题,记录一下:
有一组数据(test.txt)如下:

20181016    14830680298903273
20181016    14839603473953069
20181016    14839603473953079
20181016    14839603473953089
20181016    14839603473953099
20181016    14839603473953019

剖析出来看,数据是按照\t进行分隔的:'20181016\t14830680298903273\n'

with open('test.txt','r') as f:
    line = f.readline()
    print(line)

我平时一直在用pandas去读数据,所以我很熟练的写下来如下的代码:
pd.read_table('test.txt',header=None)
然后发现,第一列变成了科学记数法的方式进行存储了:

很明显,科学记数法是可以转换的:

def as_number(value):
    try:
        return '{:.0f}'.format(value)
    except:
        return value

# 应用到目标列去即可
data.uid.apply(as_number)

诡异的事情发生了,对于14830680298903273在as_number函数转换下变成了14830680298903272,理论上讲14830680298903273没有小数部分不存在四舍五入的原因,网上搜了也没有很明确的解释,初步讨论后猜测应该是pandas在用float64去存这种长度过长的数字的时候有精度丢失的问题。

要解决也是很简单的:

  • 用open的形式打开,在切割逐步去用list进行append,在合并
  • 用read_table的函数的时候,默认是用float64去存在的,改成object去存(dtype=object)
  • 在生产数据的时候,对于这种过长的数据采取str的形式去存

也是给自己提个醒,要规范一下自己的数据存储操作,并养成数据核对的习惯。

欢迎大家关注我的个人bolg知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码、转行疑问都欢迎通过公众号发消息给我。

相关文章

  • pandas数据读取的问题记录

    最近发现pandas的一个问题,记录一下:有一组数据(test.txt)如下: 剖析出来看,数据是按照\t进行分隔...

  • 使用Python进行数据标准化

    读取数据 首先,加载pandas和numpy库,读取数据。 import pandas as pd i...

  • 使用Python进行数据标准化

    读取数据 首先,加载pandas和numpy库,读取数据。 import pandas as pd i...

  • pandas常用操作

    pandas读取数据: pandas查看数据: pandas删除行、列: pandas排序: pandas合并列表...

  • 02. Pandas读取数据

    02. Pandas读取数据 本代码演示:pandas读取纯文本文件读取csv文件读取txt文件pandas读取x...

  • Pandas 数据读取

    1.数据读取 1.1Pandas 可以读取以下类型的数据: import pandas as pd #导入pand...

  • 数据分析-pandas从数据库读取数据

    数据分析-pandas从数据库读取数据 使用pandas读取数据到DataFrame,对于只是数据分析来说,重点是...

  • 尝尝pandas(6)

    今天我们将通过学习pandas读取和写入数据来结束pandas的学习。pandas可以读取的数据类型有很多种,在这...

  • [自用]遇到的问题及解决办法

    问题:pandas读取文件过大时内存爆炸解决:分块读取数据再拼接https://blog.csdn.net/wei...

  • pandas常用函数总结

    pandas常用函数 导入并读取数据 常用的pandas数据读取函数 注意:csv与tsv格式文件都是使用pd.r...

网友评论

      本文标题:pandas数据读取的问题记录

      本文链接:https://www.haomeiwen.com/subject/smfazftx.html