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

Importing txt file with missing values with numpy

我有以下形式的 txt 文件:

请注意,有些字段完全缺失,但缺失它们这一事实很重要。在附图中,由于技术故障,所有测量值都丢失了,但可能只有一列中的值丢失,而其他列中的值却给出了。

我正在尝试使用以下代码导入此类 .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 处的数据丢失这一事实很重要,不能简单地忽略。然而,上面的代码正是这样做的——ignores/skips 13:30 处的行。相反,我希望它用一些预定义的值填充该行,或者只是以其他可以在稍后处理中识别的方式表示它。

有什么办法吗?

np.genfromtxt() 采用参数 missing_values。如果将其设置为:

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

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