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源代码。