首页 > 解决方案 > numpy.genfromtxt() 无法读取标题

问题描述

我正在尝试使用 numpy.genfromtxt() 来读取 csv。文件,但我无法让它正确读取标题。

默认情况下,该函数不会跳过标题,但由于每列中的值都是数字,它似乎将 var 类型设置为 float(对于整个列),此时它将标题行检测为缺失值和返回 NaN。

这是我的代码:

import numpy


dataset = numpy.loadtxt('datasets/BAL_dataset01.csv',
                        delimiter=',')
print(dataset[0:5])

这是我的 .csv 的前 7 行:

patient_nr,Age,Native_CD45,LYM,Macr,NEU
1,48,35.8,3.4,92.5,3.7
1,48,14.5,12.6,78.3,1.2
1,48,12.1,5.6,87.1,4.3
1,48,5.6,25.9,72.7,0.4
1,49,13.2,N/A,N/A,N/A
2,18,43.0,17.9,76.2,4.2
3,59,53.2,1.07,47.8,49.6

这是结果数组:

[[ nan  nan  nan  nan  nan  nan]
 [ 1.  48.  35.8  3.4 92.5  3.7]
 [ 1.  48.  14.5 12.6 78.3  1.2]
 [ 1.  48.  12.1  5.6 87.1  4.3]
 [ 1.  48.   5.6 25.9 72.7  0.4]]

Process finished with exit code 0

我尝试将编码设置为“UTF-8-sig”并使用参数,但无济于事。我尝试了 numpy.loadtxt(),但它对我不起作用,因为数据集中缺少值

对我有用的唯一解决方案是读取单独数组中的第一行,然后将它们连接起来。

是否有更优雅的解决方案将标题作为字符串读取,同时保留值的浮动性质?我可能在这里遗漏了一些微不足道的东西。

最好使用 numpy 或其他包——我不喜欢到处创建 for 循环,也就是站在停车场时重新发明轮子。

感谢您的任何和所有输入。

标签: python-3.xnumpy

解决方案


使用标准numpy库(csvpandas

import pandas as pd

file_to_read = r'path/to/your/csv'

res = pd.read_csv(file_to_read)
print(res)

“N/A”将显示为 NaN(有关更多选项,请参阅参数na_valuespandas.read_csv 的文档keep_default_na)。


推荐阅读