python-3.x - 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 循环,也就是站在停车场时重新发明轮子。
感谢您的任何和所有输入。
解决方案
使用标准numpy
库(csv
pandas
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_values
和pandas.read_csv 的文档keep_default_na
)。