使用genfromtxt在numpy中导入带有缺失值的csv数据

5

我有一个 CSV 文件,看起来像这样(实际文件有更多的列和行):

1,2,3,4,5
6,7,8,9,10
11,12,13,14,15
16

假设文件名为info.csv,如果我尝试使用以下代码导入:

data = numpy.genfromtxt('info.csv', delimiter = ',')

然后我遇到了以下错误:
ValueError: Some errors were detected ! Line #4 (got 1 columns instead of 5)

如果我使用,

data = numpy.genfromtxt('info.csv', delimiter = ',', skip_footer = 1) 

有数据的这两行 1611, 12, 13, 14, 15 都被跳过了。我不理解为什么带有 11, 12, 13, 14, 15 的那一行被跳过了。我很感激任何可以帮助我正确使用 genfromtxt 以导入上述文件前三行的方法。

谢谢!

2个回答

9

谢谢!这个解决方法对我很有效。但是你或者其他人能解释一下为什么 skip_footer 没有起作用吗?又或者,如何获得包含 16 的那一行。我稍后会接受答案,因为如果我现在这样做,这些问题就会得不到回答。再次感谢。 - Curious2learn
2
它跳过了2行,因为genformtxt将有效的行读入数组,然后跳过您告诉他的那么多行,但带有“16”的行永远不会被读入数组。 - Nikolaus Gradwohl
你可以尝试使用 'filling_values' 或 'missing_values' 参数来填充缺失的行中的4个值,例如通过-1或0,具体取决于从磁盘读取数组后你要做什么。 - Nikolaus Gradwohl
请问您能否解释一下如何使用 filling_values。我尝试了 numpy.genfromtxt('info.csv', delimiter = ',', filling_values = 0)。但是,仍然出现相同的错误。 - Curious2learn
好的 - 我现在检查了numpy的代码,可以使用filling_values来填充空值 - 所以如果你的最后一行看起来像'16,,,,",fill将填充空值。如果该行没有分隔符,genfromtxt无法解析它。 - Nikolaus Gradwohl

0
命令filling_values也帮了我大忙。我将它设为零。这样每个空值都被设置为零。这可能并不总是有意义的,但或许对您有帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接