使用 pickled pandas 数据框作为 great_expectations 中的数据资产
Use a pickled pandas dataframe as a data asset in great_expectations
可能是一个非常简单的问题,但我无法从 great_expectations 的文档中找出答案。我想 运行 对 pandas 数据帧进行一些测试,该数据帧在本地存储为腌制文件“.pkl”。
当我 运行 great_expectations add-datasource
它忽略了 .pkl 文件并且只为 .csv 文件创建了资产。
从 pandas 读取 csv 文件很慢,所以如果 GE 可以支持其他格式,如 pickle 和 HDF,那就太好了。
如何加载 .pkl 或 .hdf 文件作为 GE 的资产?
我正在使用 v0.8.7 :)
对于 pandas(和 spark),有一种很好的通用方法可以完全控制数据的读取方式,即通过 BatchKwargs 指定一个已经可用的数据框。
因此,对于您的情况,您可以执行以下操作:
my_dataset = pd.read_pickle(filename)
batch_kwargs = {"dataset": my_dataset}
batch = context.get_batch("my_datasource/in_memory_generator/my_dataset", "warning", batch_kwargs)
注意:这是针对 0.8.x 系列 API,并假设数据上下文配置如下:
datasources:
my_datasource:
class_name: PandasDatasource
...
generators:
in_memory_generator:
class_name: InMemoryGenerator
PS - 这个目的是 InMemoryGenerator
.
存在的主要原因
编辑
在 Great Expectations >= 0.9.0 中,get_batch 的 API 已被简化,因此在这种情况下您根本不再需要生成器,并且指定了数据源名称在 批处理参数中。类似的代码片段如下所示:
context = DataContext()
my_dataset = pd.read_pickle(filename)
batch_kwargs = {"datasource": "my_datasource", "dataset": my_dataset}
batch = context.get_batch(batch_kwargs=batch_kwargs, expectation_suite_name="warning")
(不需要发电机)
可能是一个非常简单的问题,但我无法从 great_expectations 的文档中找出答案。我想 运行 对 pandas 数据帧进行一些测试,该数据帧在本地存储为腌制文件“.pkl”。
当我 运行 great_expectations add-datasource
它忽略了 .pkl 文件并且只为 .csv 文件创建了资产。
从 pandas 读取 csv 文件很慢,所以如果 GE 可以支持其他格式,如 pickle 和 HDF,那就太好了。
如何加载 .pkl 或 .hdf 文件作为 GE 的资产?
我正在使用 v0.8.7 :)
对于 pandas(和 spark),有一种很好的通用方法可以完全控制数据的读取方式,即通过 BatchKwargs 指定一个已经可用的数据框。
因此,对于您的情况,您可以执行以下操作:
my_dataset = pd.read_pickle(filename)
batch_kwargs = {"dataset": my_dataset}
batch = context.get_batch("my_datasource/in_memory_generator/my_dataset", "warning", batch_kwargs)
注意:这是针对 0.8.x 系列 API,并假设数据上下文配置如下:
datasources:
my_datasource:
class_name: PandasDatasource
...
generators:
in_memory_generator:
class_name: InMemoryGenerator
PS - 这个目的是 InMemoryGenerator
.
编辑
在 Great Expectations >= 0.9.0 中,get_batch 的 API 已被简化,因此在这种情况下您根本不再需要生成器,并且指定了数据源名称在 批处理参数中。类似的代码片段如下所示:
context = DataContext()
my_dataset = pd.read_pickle(filename)
batch_kwargs = {"datasource": "my_datasource", "dataset": my_dataset}
batch = context.get_batch(batch_kwargs=batch_kwargs, expectation_suite_name="warning")
(不需要发电机)