设置数据

本节介绍如何向项目的data文件夹添加数据集。同时回顾这些数据集是如何在Kedro的Data Catalog中注册的,该目录是项目所有可用数据源的注册表。

项目数据集

太空飞行教程使用了三家虚构公司的数据集,这些公司负责运送顾客往返月球。数据以两种不同格式提供:.csv.xlsx

  • companies.csv 包含关于太空旅行公司的数据,例如它们的位置、舰队数量和评级

  • reviews.csv 是客户针对舒适度和价格等类别的评价数据集

  • shuttles.xlsx 记录了整个舰队中各航天器的属性数据,例如发动机类型和载客量

spaceflights 入门模板已经将数据集添加到您项目的 data/01_raw 文件夹中。

数据集注册

在Kedro能够加载数据集之前,必须注册以下关于数据集的信息:

  • 文件位置(路径)

  • 给定数据集的参数

  • 数据类型

  • 版本控制

打开太空飞行项目的conf/base/catalog.yml文件查看内容。两个csv数据集注册如下:

Click to expand
companies:
  type: pandas.CSVDataset
  filepath: data/01_raw/companies.csv

reviews:
  type: pandas.CSVDataset
  filepath: data/01_raw/reviews.csv

同样适用于 xlsx 数据集:

Click to expand
shuttles:
  type: pandas.ExcelDataset
  filepath: data/01_raw/shuttles.xlsx
  load_args:
    engine: openpyxl # Use modern Excel engine (the default since Kedro 0.18.0)

额外的参数行load_args会作为关键字参数传递给Excel文件读取方法(pd.read_excel)。虽然此处未指定,但对应的输出参数是save_args,其值将被传递给pd.DataFrame.to_excel方法

测试Kedro能否加载数据

在项目根目录下打开终端中的kedro ipython会话:

kedro ipython

然后在IPython提示符中输入以下内容来测试加载一些csv数据:

companies = catalog.load("companies")
companies.head()
  • 第一条命令创建了一个变量(companies),其类型为pandas.DataFrame,并从底层文件路径data/01_raw/companies.csv加载数据集(根据catalog.yml中的顶层键也命名为companies)。

  • pandas中的head方法会显示DataFrame的前五行数据。

Click to expand
INFO     Loading data from 'companies' (CSVDataset)
Out[1]:
      id company_rating       company_location  total_fleet_count iata_approved
0  35029           100%                   Niue                4.0             f
1  30292            67%               Anguilla                6.0             f
2  19032            67%     Russian Federation                4.0             f
3   8238            91%               Barbados               15.0             t
4  30342            NaN  Sao Tome and Principe                2.0             t


同样地,为了测试xlsx数据是否按预期加载:

shuttles = catalog.load("shuttles")
shuttles.head()

您应该会看到类似以下的输出:

Click to expand
INFO     Loading data from 'shuttles' (ExcelDataset)
Out[1]:
      id       shuttle_location shuttle_type engine_type  ... d_check_complete  moon_clearance_complete     price company_id
0  63561                   Niue      Type V5     Quantum  ...                f                        f  $1,325.0      35029
1  36260               Anguilla      Type V5     Quantum  ...                t                        f  $1,780.0      30292
2  57015     Russian Federation      Type V5     Quantum  ...                f                        f  $1,715.0      19032
3  14035               Barbados      Type V5      Plasma  ...                f                        f  $4,770.0       8238
4  10036  Sao Tome and Principe      Type V2      Plasma  ...                f                        f  $2,820.0      30342


完成后,使用exit()关闭ipython会话。

更多信息

观看视频

自定义数据

Kedro 支持 多种 数据集 开箱即用,但您也可以添加对任何专有数据格式或文件系统的支持。

您可以在涵盖高级用法的特定文档中找到关于如何添加对自定义数据集的支持的更多信息。

支持的数据位置

Kedro 使用 fsspec 从多种数据存储中读取数据,包括本地文件系统、网络文件系统、HDFS 以及所有广泛使用的云对象存储。