在数据科学管道中使用Great Expectations实现数据质量保证

2025年01月08日 由 佚名 发表 2480 0

在数据科学中,数据质量非常重要。准确的模型和有用的分析需要良好的数据。缺失值和异常值等问题可能会损害模型的性能,也会使洞察力变得不可靠。


微信截图_20250109111923


在本文中,我们将学习如何使用Great Expectations (GE)。我们将展示一个验证数据集的示例。这个示例将演示如何设置和检查期望。GE有助于及早发现数据问题,从而提高管道中的数据质量。


什么是Great Expectations?

   
Great Expectations是一个用于数据质量检查的工具。它是免费的开源软件。数据团队使用它来确保数据的准确性和可靠性。GE允许您为数据创建“期望”。这些期望是描述数据应有样子的规则。例如,您可以设置规则来检查缺失值或确保数字在某个范围内。


GE有许多内置检查。这些检查涵盖了常见的数据问题,如数据类型、唯一值和数值范围。它还支持更复杂规则的自定义检查。Great Expectations在数据管道中表现良好,这意味着它可以在数据通过管道时自动检查数据质量。数据团队可以定期运行这些检查,以便及早发现问题。

 

数据质量维度

 

数据质量保证关注数据质量的重要方面。这些维度通常包括:

  • 完整性: 检查是否有数据缺失。所有必要的值都应该存在
  • 唯一性: 确保没有重复值。每条记录应该只出现一次。
  • 一致性: 确认数据在各个来源之间一致。数据在系统的所有部分都应匹配。
  • 有效性: 检查数据是否遵循特定规则。例如,日期应为某种格式。

 

设置环境

 
首先,安装Great Expectations并导入必要的库。

pip install great_expectations

 

安装后,创建一个DataContext。这是Great Expectations (GX) 的主要设置。

# 从Great Expectations导入所需模块import great_expectations as gximport pandas as pd# 初始化数据上下文context = gx.get_context()

 

在这个例子中,假设您有一个CSV格式的员工数据集。我们将其加载到一个Pandas DataFrame中。

# 将员工数据导入Pandas DataFramedf = pd.read_csv("employee_data.csv")df.head()

 

连接到数据

 
现在,我们需要将其连接到Great Expectations。首先,我们创建一个数据源。接下来,我们创建一个数据资产。然后,我们为数据定义一个批次。这些组件对于构建Great Expectations与我们数据的交互方式至关重要。

# 创建数据源、数据资产、批次定义和批次data_source = context.data_sources.add_pandas("pandas")data_asset = data_source.add_dataframe_asset(name="pd dataframe asset")batch_definition = data_asset.add_batch_definition_whole_dataframe("batch definition")batch = batch_definition.get_batch(batch_parameters={"dataframe": df})

 

定义期望

 
一旦数据连接好,我们将为特定数据列定义期望。这些期望就像数据应该遵循的规则。对于员工数据集,让我们定义以下期望:


  1. ID: 员工ID不应为空。
  2. 年龄: 每位员工的年龄应在18到65岁之间。
  3. 部门: 部门名称应与预定义集合匹配。
# 员工ID期望:不应为空expectation_employee_id_not_null = gx.expectations.ExpectColumnValuesToNotBeNull(    column="EmployeeID")# 年龄期望:年龄应在18到65岁之间expectation_age = gx.expectations.ExpectColumnValuesToBeBetween(    column="age", min_value=18, max_value=65)# 部门期望:部门应为预定义值之一expectation_department = gx.expectations.ExpectColumnValuesToBeInSet(    column="department", value_set=["Human Resources", "Engineering", "Marketing", "Finance"])

 

 

运行验证

 
有了期望,我们现在可以验证数据。验证会根据规则检查每条记录,并显示数据是否遵循或违反了这些规则。

# 使用所有列的期望验证批次validation_result_employee_id_not_null = batch.validate(expectation_employee_id_not_null)validation_result_age = batch.validate(expectation_age)validation_result_department = batch.validate(expectation_department)# 打印每个期望的验证结果print("员工ID不为空验证结果:", validation_result_employee_id_not_null)print("年龄验证结果:", validation_result_age)print("部门验证结果:", validation_result_department)

 

处理数据质量失败

 
如果数据不符合期望,您需要决定如何处理。可能的操作包括:

  • 警报: 向相关利益相关者发送有关数据质量问题的通知。
  • 数据拒绝: 拒绝当前数据批次并重新处理。
  • 记录并继续: 记录失败以供将来分析,但继续处理其他有效数据。

 

使用Great Expectations的好处

 
Great Expectations为数据科学和工程团队提供了几个好处:

  • 自动化数据质量检查: 它在使用数据之前自动检查数据。这确保只有良好的数据用于分析或建模。
  • 标准化期望: 您可以在不同项目中使用相同的数据规则。这有助于保持数据质量的一致性。
  • 详细报告: 它提供显示数据质量随时间变化的报告。这有助于发现和解决问题。
  • 灵活性: Great Expectations支持多种数据源和格式。它还与Pandas、SQL和Spark等工具配合良好。

 

结论

 
数据质量在数据科学中非常重要。Great Expectations有助于自动化数据检查。它很好地融入数据管道。使用这个工具,您可以随时检查数据质量。它保持您的数据准确、一致和可靠。这对于良好的决策制定非常重要。Great Expectations可以检查简单的规则,如非空值,也可以检查更复杂的规则。它在满足您所有数据质量需求方面既灵活又强大。
 

文章来源:https://www.kdnuggets.com/implementing-data-quality-assurance-data-science-pipelines-great-expectations
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消