使用numpy导入缺少值的txt文件

时间:2017-06-07 07:26:22

标签: python python-2.7 genfromtxt

我有以下形式的txt文件:

enter image description here

请注意,某些字段已完全丢失,但缺少这些字段非常重要。在附图中,由于技术故障,所有测量都丢失了,但是可能发生只有一列中的值丢失而其他列被丢失的情况。

我正在尝试使用以下代码导入此类.txt文件。

import numpy as np    
data=np.genfromtxt(filepath, skip_header=1, invalid_raise=False, usecols=(2, 3, 4, 5, 6, 7))

导致错误:

第2123行(有2列而不是6列)

第3171行(有2列而不是6列)

第3172行(有2列而不是6列)

但仍会产生一些可用的结果。正如我所说,缺少13:30的数据这一事实很重要,不能简单地忽略。但是,上面的代码就是这样 - 忽略/跳过13:30的行。相反,我希望它用一些预定义的值填充该行,或者只是以某种其他方式表示它,以后可以在处理中识别。

有什么办法吗?

1 个答案:

答案 0 :(得分:2)

np.genfromtxt()接受参数missing_values。如果您将其设置为:

data=np.genfromtxt(filepath, skip_header=1, invalid_raise=False, usecols=(2,3, 4, 5, 6, 7), missing_value=???)

它应该用nan替换缺失的值。但请注意,如果这应该有效,必须有一个填充物。否则,您可以使用usecols参数,即首先选择缺少值的cols并将其与主数据分开。之后你可以再次合并它们。处理缺失值的第二个非常好的方法是使用pandas.read_csv()代替。此外,它比np.genfromtxt快得多。