【问题标题】:Use a pickled pandas dataframe as a data asset in great_expectations在 great_expectations 中使用腌制的 pandas 数据框作为数据资产
【发布时间】:2020-05-03 03:08:27
【问题描述】:

可能是一个非常简单的问题,但我无法从 great_expectations 的文档中弄清楚。我想在本地存储为腌制文件“.pkl”的 pandas 数据帧上运行一些测试。

当我运行 great_expectations add-datasource 时,它忽略了 .pkl 文件,只为 .csv 文件创建了资产。 从 pandas 读取 csv 文件很慢,所以如果 GE 可以支持其他格式,例如 pickle 和 HDF,那就太好了。

如何将 .pkl 或 .hdf 文件加载为 GE 的资产?

我正在使用 v0.8.7 :)

【问题讨论】:

  • 能否请您添加您使用@Manu 的哪个版本?

标签: python pandas great-expectations


【解决方案1】:

对于 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 已被简化,因此在这种情况下您将不再需要生成器,并且在批处理中指定了数据源名称​​夸格斯。类似的代码 sn-p 如下所示:

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")

(并且不需要生成器)

【讨论】:

  • 感谢詹姆斯,它工作得很好。准确地说,在调用 Jame 的代码之前,我们需要创建一个数据上下文和期望套件,如下所示:context = GE.data_context.DataContext(); context.create_expectation_suite( data_asset_name="my_datasource/in_memory_generator/my_dataset", expectation_suite_name="warning", overwrite_existing=True)
猜你喜欢
  • 1970-01-01
  • 2014-04-11
  • 2021-01-22
  • 1970-01-01
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多