top of page

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

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


《远大前程》是什么?


Python 的伟大期望得以实现

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”目录,增强了所有利益相关者的可见性。


数据可视化仪表板的视线水平视图
A data visualization dashboard showcasing various metrics.

高级期望

《远大前程》支持一系列超越简单检查的期望。以下是一些您可以考虑的高级示例:


根据正则表达式检查列值

如果您想验证“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 这样的工具对于实现数据驱动工作的高标准至关重要。


随着你进一步探索《远大前程》,不妨考虑将其集成到你的数据管道和监控系统中,以保障数据的长期可靠性。祝你编程愉快!

bottom of page