如何从UCI机器学习库中获取数据



我在正确读取此源的数据时遇到了一个小问题。我试着写:

path = 'http://archive.ics.uci.edu/ml/machine-learning-databases/image/segmentation.data'
df = pd.read_table(path)

然后我发现了一些奇怪的事情。

然后我写道:

df = pd.read_table(path, sep=',', header=None)

得到一个错误:ParserError: Error tokenizing data. C error: Expected 1 fields in line 4, saw 19

你能帮我找到解决办法吗?

该文件基本上是一个csv文件,因此您可以使用read_csv。将它与skiprows=2结合使用可以跳过文件的第一个非相关行。

import pandas as pd
path = 'http://archive.ics.uci.edu/ml/machine-learning-databases/image/segmentation.data'
df = pd.read_csv(path, skiprows=2, index_col=False)

输出df.head():

40>>td style="ext-align:right;">7.33333>td style="text-align:right;">7.66667>td style="ext-align:right:">133.2666670.53858>td style="ext-align:right;">7
REGION-CENTROID-COLVEDGE-EANVEDGE-SDRAWGREEN-MEANEXRED-MEAN
0BRICKFACE1250.0629630.66666 70.3111116.185183.555563.444444-7.888897.777780.545635
1BRICKFACE1880.50.0777777-8.333338.44444
2BRICKFACE0.1074070.833333 text align:right;">-7.666677.555560.532628
3BRICKFACE0.1666671、11111、0.474074、5.85185、7.77778、44444 align:right;">-7.555567.777780.573633
4BRICKFACE0.3740740.88888 90.4296296.03704-7.777787.888890.562919

你能给出这样的编码吗:

path = 'http://archive.ics.uci.edu/ml/machine-learning-databases/image/segmentation.data'
df = pd.read_csv(path,encoding = 'utf8')

如果它不起作用,你能尝试其他编码吗?

问题似乎是数据文件包含一些Pandas无法解析的元信息。在pandas读取文件之前,您需要将文件转换为CSV。

要做到这一点,首先将文件下载到本地机器的某个位置filepath,并删除以;;;开头的行和空行。然后运行pd.read_table(filepath, sep='t')pd.read_csv(filepath)应该可以按预期工作。

请注意,header参数不引用文件可能包含的任何通用标头信息。header使pandas知道CSV中的第一行是否包含列的名称(如果headerTrue),或者文件中的实际数据是否从第一行开始(如果headerFalse)。

最新更新