Python 中对数据质量寄予厚望:有效的代码示例
- Claude Paugh

- 10月20日
- 讀畢需時 4 分鐘
在数据科学和分析领域,确保数据质量至关重要。糟糕的数据质量会导致误导性见解、糟糕的决策,并严重损害数据驱动流程的信任。Great Expectations框架是一个帮助数据专业人员保持高标准数据准确性的宝贵工具。在本文中,我们将探讨如何在 Python 中实现 Great Expectations,并提供实用的代码示例,帮助您掌握项目中的数据质量。
《远大前程》是什么?

Great Expectations是一个开源 Python 库,旨在帮助数据团队创建、管理和维护数据质量预期。该框架允许用户定义对其数据的具体预期,并根据这些预期验证数据集。其关键特性之一是能够生成有效传达数据质量指标的文档。通过利用 Great Expectations,数据团队可以确保其数据不仅准确,而且完整可靠。
例如,您可以指定某一列应具有唯一值,或者某个数值列必须位于定义的范围内。自动验证这些期望值可使团队及早发现问题,从而避免对分析造成任何有害影响。
树立远大期望
要在 Python 环境中开始使用 Great Expectations,您可以使用 pip 轻松安装该库:
-->bash
pip install great_expectations安装完成后,通过在终端中执行以下命令创建一个新的 Great Expectations 项目:
-->bash
great_expectations init此命令在您当前的工作目录中创建一个名为“great_expectations”的目录,其中包含开始所需的文件和文件夹。
创建数据上下文
数据上下文是 Great Expectations 项目的核心配置,涵盖所有配置、期望和数据源。要创建数据上下文,请导航到“great_expectations”目录并运行:
-->bash
great_expectations datasource new在此设置过程中,您将连接到各种数据源。例如,您可以连接到流行的 SQL 数据库,从 CSV 文件读取数据,甚至可以从 Amazon S3 和 Google Cloud Storage 等云存储解决方案中提取数据。
定义期望
数据上下文建立后,您就可以开始设置数据预期。假设您有一个包含用户数据的 CSV 文件,并且想要验证“email”列是否包含有效的电子邮件地址。您可以按照以下方式定义此预期:
-->python
import great_expectations as ge
data = ge.read_csv("path/to/your/user_data.csv")创建新的期望套件
suite = data.create_expectation_suite("user_data_expectations")定义电子邮件列的期望
data.expect_column_values_to_be_in_set("email", ["valid_email@example.com", "another_valid@example.com"])在这种情况下,我们从 CSV 文件加载用户数据,创建一个新的期望套件,并指定“电子邮件”列应与特定的有效地址匹配。
验证数据
设定预期后,下一步是根据这些声明验证数据。使用以下代码进行验证:
-->python
results = data.validate(expectation_suite_name="user_data_expectations")
print(results)“validate”方法会生成一个结果对象,显示哪些期望值通过了,哪些没有通过。这可以快速识别任何数据质量问题。
生成文档
Great Expectations 的一个突出特点是它能够根据你既定的期望创建文档。这些文档有助于与利益相关者共享数据质量指标。要生成文档,请运行:
-->bash
great_expectations suite edit user_data_expectations此命令将打开一个 Web 界面来查看和编辑您的期望。您还可以通过执行以下命令生成静态 HTML 报告:
-->bash
great_expectations docs build这些命令共同构建一个包含生成文档的“docs”目录,增强了所有利益相关者的可见性。

高级期望
《远大前程》支持一系列超越简单检查的期望。以下是一些您可以考虑的高级示例:
根据正则表达式检查列值
如果您想验证“email”列中的所有电子邮件地址是否有效,您可以应用正则表达式:
-->python
data.expect_column_values_to_match_strictly_regex("email", r"^[\w\.-]+@[\w\.-]+\.\w+$")确保列值唯一
要确认某列包含唯一值,可以使用以下期望:
-->python
data.expect_column_values_to_be_unique("user_id")验证数字范围
为了确保数字列(例如年龄)保持在特定范围内,请考虑以下示例:
-->python
data.expect_column_values_to_be_between("age", min_value=18, max_value=100)将《远大前程》与数据管道相结合
Great Expectations 可以无缝集成到您的数据管道中。假设您使用Apache Airflow ,您可以轻松创建一个使用 Great Expectations 验证数据的任务。以下是一个简单的示例:
-->python
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
import great_expectations as ge
def validate_data():
data = ge.read_csv("path/to/your/user_data.csv")
results = data.validate(expectation_suite_name="user_data_expectations")
if not results["success"]:
raise ValueError("Data validation failed!")
dag = DAG('data_validation_dag', start_date=datetime(2023, 1, 1))
validate_task = PythonOperator(
task_id='validate_data',
python_callable=validate_data,
dag=dag,
)
validate_task此代码片段定义了一个 Airflow DAG,其中定义了一个用于验证数据的任务。如果验证失败,则会引发错误,从而提示警报或触发数据管道中的其他必要操作。
持续的数据质量监控
数据质量并非一次性工作,需要持续的监督。Great Expectations 提供各种工具,帮助您持续追踪数据质量。您可以建立一个监控系统,定期验证数据,并在出现问题时发出警报。
例如,通过安排每日运行验证脚本,您可以系统地记录结果。这有助于跟踪数据质量随时间的变化趋势,并在问题恶化之前将其解决。
总结
通过在 Python 项目中实现 Great Expectations 框架,您可以显著增强数据质量管理方法。定义期望、验证数据并生成文档可确保您的数据保持准确性和可信度。
本文提供的代码示例为在您自己的项目中运用 Great Expectations 奠定了坚实的基础。请记住,维护数据质量是一个持续的过程,而像 Great Expectations 这样的工具对于实现数据驱动工作的高标准至关重要。
随着你进一步探索《远大前程》,不妨考虑将其集成到你的数据管道和监控系统中,以保障数据的长期可靠性。祝你编程愉快!


