加载包含 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
...
我想使用 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
...