加载包含 header 行和“?”的 CSV 数据集对于缺失值

Load a CSV dataset with header lines and "?" for missing values

我想使用 NumPy 函数 loadtxt.csv 文件加载我的 dataset (link to external page)。数据集包含浮点数。但是,列有 headers 并且缺少数据(由“?”具体化)。

我该如何处理这些问题?

根据您在评论中链接的数据集,您可以使用 np.genfromtxt,它允许指定哪些值被视为缺失('?')以及要跳过多少行,因为它是 "header" (1):

>>> import numpy as np

>>> np.genfromtxt(filename, delimiter=',', missing_values=['?'], skip_header=1)
array([[ 18.,   4.,  15., ...,   0.,   0.,   0.],
       [ 15.,   1.,  14., ...,   0.,   0.,   0.],
       [ 34.,   1.,  nan, ...,   0.,   0.,   0.],
       ..., 
       [ 25.,   2.,  17., ...,   0.,   1.,   0.],
       [ 33.,   2.,  24., ...,   0.,   0.,   0.],
       [ 29.,   2.,  20., ...,   0.,   0.,   0.]])

但也许更适合这种任务的是 pandas.read_csv:

>>> import pandas as pd

>>> pd.read_csv(filename, na_values='?')
     Age  Number of partners  First intercourse  ...
0     18                 4.0               15.0   
1     15                 1.0               14.0   
2     34                 1.0                NaN   
3     52                 5.0               16.0   
4     46                 3.0               21.0   
5     42                 3.0               23.0   
6     51                 3.0               17.0   
7     26                 1.0               26.0   
8     45                 1.0               20.0   
9     44                 3.0               15.0   
10    44                 3.0               26.0   
11    27                 1.0               17.0   
12    45                 4.0               14.0   
13    44                 2.0               25.0   
14    43                 2.0               18.0   
...