UCI上数据集的读取与保存
UCI(University of California, Irvine)提供了很多数据集供大家使用,包括一些经典的数据集,比如“iris”,"Forest Fires"等。
UCI数据集的地址为: http://archive.ics.uci.edu/ml/index.php
通过网页查看,UCI并未提供csv等数据文件,而是直接显示在网页上。如果我们想使用的话,需要进行调用,或者存入数据文件中,然后使用。
UCI上的某个数据集,可以使用python进行获取,下面通过几种不同的方式,来演示下数据集信息的获取。
本文的运行环境:
windows 7
python 3.5
本文以获取"iris"数据集为例,来介绍数据集的读取与保存。
该数据集的网站为: http://archive.ics.uci.edu/ml/datasets/Iris
数据集的介绍页面如下图:
具体数据在Data Folder里,点击进去后,数据信息列表如下:
数据信息在 iris.data 里, 表头信息在 iris.names 里。
Method-1:urllib
import urllib.request
import csv
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
data = urllib.request.urlopen(url)
attribute = ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)", "class"]
data_list = []
for item in data:
row = item.decode('utf-8').strip().split(',')
data_list.append(row)
data_list.insert(0, attribute)
with open('iris_uci_urllib.csv', 'a', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerows(data_list)
Method-2:requests
import requests
import csv
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
data = requests.get(url).text
data = data.strip().split('\n')
# print(data)
attribute = ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)", "class"]
data_list = []
for item in data:
row = item.strip().split(',')
data_list.append(row)
data_list.insert(0, attribute)
with open('iris_uci_requests.csv', 'a', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerows(data_list)
Method-3:pandas
import pandas as pd
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
attribute = ["sepal length (cm)", "sepal width (cm)", "petal length (cm)", "petal width (cm)", "class"]
df = pd.read_csv(url, names=attribute)
df.to_csv('iris_uci_pd.csv')
从上面的几种方法来看,用pandas读取UCI上的数据集信息是最方便的。
读取的数据可以用来进行数据分析、可视化、机器学习等。
本期推荐阅读: