在标准的环境中,您的数据可以在关系数据库(或其他公共数据存储)中,并跨多个表/文档/文件。要访问它,您首先需要获得您的凭证和访问授权,熟悉数据模式。然而,在这个项目中,事情要简单得多:您只需要下载一个压缩文件,即housing.tgz,,它包含一个CSV文件,它包含一个 housing.csv文件,它记录着所有的数据。
您可以使用您的web浏览器下载它,并运行tar xzf housing.tgz可以解压文件并提取CSV文件,但是最好创建一个小的函数来完成它。如果数据定期发生变化,这是非常有用的,因为它允许您编写一个小的脚本,当您需要获取最新数据时,您可以运行它(或者您可以设置一个预定的工作,定期自动地执行这些数据)。如果需要在多台计算机上安装数据集,那么自动获取数据的过程也是非常有用的。
这里是获取数据的函数:
import os
import tarfile
from six.moves import urllib
DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml/master/"
HOUSING_PATH = "datasets/housing"
HOUSING_URL = DOWNLOAD_ROOT + HOUSING_PATH + "/housing.tgz"
def fetch_housing_data(housing_url=HOUSING_URL, housing_path=HOUSING_PATH):
if not os.path.isdir(housing_path):
os.makedirs(housing_path)
tgz_path = os.path.join(housing_path, "housing.tgz")
urllib.request.urlretrieve(housing_url, tgz_path)
housing_tgz = tarfile.open(tgz_path)
housing_tgz.extractall(path=housing_path)
housing_tgz.close()
现在,当您调用fetch_housing_data()时,它在您的工作空间中创建一个datasets/housing目录,下载housing.tgz文件,并从这个目录下提取housing.csv。
现在让我们用Pandas来装载数据。同样,您应该编写一个小函数来加载数据:
import pandas as pd
def load_housing_data(housing_path=HOUSING_PATH):
csv_path = os.path.join(housing_path, "housing.csv")
return pd.read_csv(csv_path)
这个函数返回一个包含所有数据的Pandas的DataFrame对象。