【问题标题】:reading file with missing values in python pandas在python pandas中读取缺少值的文件
【发布时间】:2012-09-12 22:26:57
【问题描述】:

我尝试使用 pandas.read_csv 读取缺失值的 .txt。我的数据格式为:

10/08/2012,12:10:10,name1,0.81,4.02,50;18.5701400N,4;07.7693770E,7.92,10.50,0.0106,4.30,0.0301
10/08/2012,12:10:11,name2,,,,,10.87,1.40,0.0099,9.70,0.0686

包含数千个具有相同名称的点、gps 位置和其他读数的样本。 我使用代码:

myData = read_csv('~/data.txt', sep=',', na_values='')

代码错误,因为 na_values 没有给出 NaN 或其他指标。列应该具有相同的大小,但我以不同的长度完成。

我不知道在 na_values 之后应该输入什么(确实尝试了所有不同的东西)。 谢谢

【问题讨论】:

  • 如果你skiprows=1,那么文件中只有一行。如果没有该参数,我会在 DataFrame 中看到清晰的 NaNs。
  • 我只发布了两行数据以显示其格式。 skiprows=1 不会对丢失的数据做任何事情,在原始文件中有 15000 行,第一行包含一些我不想要的名称。
  • 为了清楚起见,我删除了skiprows=1

标签: python pandas


【解决方案1】:

参数na_values 必须是“list like”(参见此answer)。

一个字符串是“list like”所以:

na_values='abc' # would transform the letters 'a', 'b' and 'c' each into `nan`
# is equivalent to
na_values=['a','b','c']

同样:

na_values=''
# is equivalent to
na_values=[] # and this is not what you want!

这意味着你需要使用na_values=['']

【讨论】:

  • 感谢您的回答。 na_values=[''] 是我的第一次尝试,但它没有产生预期的效果。如果我将参数作为列表 [''] 或空格'',我会得到相同的结果。我真的不知道还能尝试什么,因为它似乎不会自动拾取缺失值,而且我在指定它时遇到问题
  • @tomasz74 它似乎对我有用,你的例子(没有skiprows)......也许你需要myData.T(转置)。
  • @tomasz74 经过测试,似乎是'',默认情况下(None)这对我来说很好(列大小相同)...
  • 在您回复后我再次浏览了数据。我的困惑是,在每列名称的输出中都有许多非空值,每列都不同。但你是对的,长度是一样的。非常感谢
【解决方案2】:

您使用的是哪个版本的熊猫?将空字符串解释为 NaN 是 pandas 的默认行为,并且似乎在 v0.7.3 和当前 master 中都可以很好地解析数据 sn-p 中的空字符串,而根本不使用 na_values 参数。

In [10]: data = """\
10/08/2012,12:10:10,name1,0.81,4.02,50;18.5701400N,4;07.7693770E,7.92,10.50,0.0106,4.30,0.0301
10/08/2012,12:10:11,name2,,,,,10.87,1.40,0.0099,9.70,0.0686
"""

In [11]: read_csv(StringIO(data), header=None).T
Out[11]: 
                   0           1
X.1       10/08/2012  10/08/2012
X.2         12:10:10    12:10:11
X.3            name1       name2
X.4             0.81         NaN
X.5             4.02         NaN
X.6   50;18.5701400N         NaN
X.7    4;07.7693770E         NaN
X.8             7.92       10.87
X.9             10.5         1.4
X.10          0.0106      0.0099
X.11             4.3         9.7
X.12          0.0301      0.0686

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 2021-12-08
    • 2017-12-14
    • 1970-01-01
    • 2020-12-30
    相关资源
    最近更新 更多