Kedro 数据目录

KedroDataCatalog 保留了 DataCatalog 的核心功能,并做了一些API增强。为了全面理解,我们建议在探索 KedroDataCatalog 的附加功能之前,先查阅现有的 DataCatalog 文档

本页面重点介绍新特性并提供使用示例:

如何将KedroDataCatalog设为Kedro run的默认目录

要将KedroDataCatalog设置为kedro run命令及其他CLI命令的默认目录,请按以下方式更新您的settings.py文件:

from kedro.io import KedroDataCatalog

DATA_CATALOG_CLASS = KedroDataCatalog

完成此更改后,您可以像往常一样运行您的Kedro项目。

有关settings.py的更多信息,请参阅项目设置文档

如何访问目录中的数据集

你可以通过类似字典的语法或get方法从目录中检索数据集:

reviews_ds = catalog["reviews"]
reviews_ds = catalog.get("reviews", default=default_ds)

如何将数据集添加到目录

新API允许您直接将数据集以及原始数据添加到目录中:

from kedro_datasets.pandas import CSVDataset

bikes_ds = CSVDataset(filepath="../data/01_raw/bikes.csv")
catalog["bikes"] = bikes_ds  # Adding a dataset
catalog["cars"] = ["Ferrari", "Audi"]  # Adding raw data

当你添加原始数据时,它会在底层自动封装到MemoryDataset中。

如何遍历目录中的数据集

KedroDataCatalog 支持对数据集名称(键)、数据集(值)以及两者(条目)进行迭代。默认情况下,迭代操作针对数据集名称,类似于标准的Python字典:

for ds_name in catalog:  # __iter__ defaults to keys
    pass

for ds_name in catalog.keys():  # Iterate over dataset names
    pass

for ds in catalog.values():  # Iterate over datasets
    pass

for ds_name, ds in catalog.items():  # Iterate over (name, dataset) tuples
    pass

如何获取目录中的数据集数量

你可以使用len()函数获取目录中的数据集数量:

ds_count = len(catalog)

如何打印完整目录及单个数据集

要以编程方式打印目录或单个数据集,可使用print()函数;在IPython或JupyterLab等交互式环境中,直接输入变量即可:

In [1]: catalog
Out[1]: {'shuttles': kedro_datasets.pandas.excel_dataset.ExcelDataset(filepath=PurePosixPath('/data/01_raw/shuttles.xlsx'), protocol='file', load_args={'engine': 'openpyxl'}, save_args={'index': False}, writer_args={'engine': 'openpyxl'}), 'preprocessed_companies': kedro_datasets.pandas.parquet_dataset.ParquetDataset(filepath=PurePosixPath('/data/02_intermediate/preprocessed_companies.pq'), protocol='file', load_args={}, save_args={}), 'params:model_options.test_size': kedro.io.memory_dataset.MemoryDataset(data='<float>'), 'params:model_options.features': kedro.io.memory_dataset.MemoryDataset(data='<list>'))}

In [2]: catalog["shuttles"]
Out[2]: kedro_datasets.pandas.excel_dataset.ExcelDataset(filepath=PurePosixPath('/data/01_raw/shuttles.xlsx'), protocol='file', load_args={'engine': 'openpyxl'}, save_args={'index': False}, writer_args={'engine': 'openpyxl'})

如何访问数据集模式

KedroDataCatalog中的模式解析逻辑由config_resolver处理,可以通过目录的属性访问:

config_resolver = catalog.config_resolver
ds_config = catalog.config_resolver.resolve_pattern(ds_name)  # Resolving a dataset pattern
patterns = catalog.config_resolver.list_patterns() # Listing all available patterns

注意

KedroDataCatalog 不支持所有字典特有的方法,例如 pop()popitem() 或按键删除 (del)。

如需查看完整支持的方法列表,请参阅KedroDataCatalog源代码