熊猫:如何导入以空格分隔的数据文件“ horse-colic.data”?

时间:2019-05-06 22:45:42

标签: python pandas

我正在尝试导入“数据”文件horse-colic数据集。

文件内容看起来像

nextB

此文件似乎不被认为是csv。因为这段代码

2 1 530101 38.50 66 28 3 3 ? 2 5 4 4 ? ? ? 3 5 45.00 8.40 ? ? 2 2 11300 00000 00000 2
1 1 534817 39.2 88 20 ? ? 4 1 3 4 2 ? ? ? 4 2 50 85 2 2 3 2 02208 00000 00000 2 
2 1 530334 38.30 40 24 1 1 3 1 3 3 1 ? ? ? 1 1 33.00 6.70 ? ? 1 2 00000 00000 00000 1 

产生

enter image description here

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/horse-colic/horse-colic.data', delim_whitespace=True, header=None) df.replace("?", np.NaN) df.head() 根本不起作用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

csv文件是每个项目都用逗号分隔的文件。 我建议使用numpy.genfromtxt,然后将其转换为数据框。

第一位是这样的:

import numpy as np


data = np.genfromtxt('filename.txt',deletechars='?',filling_values=np.NaN)

如果您在熊猫数据框中需要它,通常这是一个非常平滑的过渡

参考:

  1. numpy.genfromtxt - NumPy Manual

答案 1 :(得分:1)

df.replace("?", np.NaN)返回df的副本,其中"?"NaN替换。要更改df本身,您可以执行df = df.replace("?", np.NaN)

df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/horse-colic/horse-colic.data', delim_whitespace=True, header=None).replace("?", np.NaN)

或者,如@Vaishali所说,添加inplace=True

我不确定您说header=None无效时的意思。当我忽略它时,我得到一个DataFrame,其中将Horse Colic数据的第一行设置为我的列名。