今天为大家分享一个非常好用的 Python 库 - pandera。
Github地址:https://github.com/unionai-oss/pandera
在数据科学和数据分析中,数据的质量至关重要。不良的数据质量可能导致不准确的分析和决策。为了确保数据的质量,Python Pandera 库应运而生。本文将深入介绍 Python Pandera,这是一个用于数据验证和清洗的库,并提供丰富的示例代码,帮助大家充分利用它来提高数据质量。
Python Pandera 是一个用于数据验证和清洗的库,它的目标是帮助数据科学家和分析师确保数据的质量,并使数据准备过程更加可维护和可重复。Pandera 提供了一种声明性的方式来定义数据的验证规则,可以轻松地将这些规则应用于数据集,以识别和纠正不良数据。
Pandera 的设计理念是将数据验证和清洗与数据分析代码分离,从而降低了错误的风险,并提高了代码的可读性和可维护性。
要开始使用 Python Pandera,需要在 Python 环境中安装它。可以使用 pip 包管理器来安装 Pandera。
在终端或命令提示符中运行以下命令:
pip?install?pandera
安装完成后,可以在 Python 代码中导入 Pandera 并开始使用它。
import?pandera?as?pa
通过一个简单的示例来了解 Python Pandera 的基本用法。
假设有一个包含学生信息的数据集,希望验证数据是否满足以下规则:
学生年龄必须介于 18 到 30 岁之间。
学生成绩必须是 0 到 100 之间的整数。
首先,需要定义数据验证规则。在 Pandera 中,可以使用?Schema
?对象来定义规则。
以下是如何定义上述规则的代码:
#?导入?Pandera?库
import?pandera?as?pa
#?定义数据验证规则
schema?=?pa.DataFrameSchema({
????"age":?pa.Column(pa.Int,?checks=[
????????pa.Check(lambda?age:?18?<=?age?<=?30,?element_wise=True)
????]),
????"score":?pa.Column(pa.Int,?checks=[
????????pa.Check(lambda?score:?0?<=?score?<=?100,?element_wise=True)
????])
})
在上述代码中,使用?pa.Column
?来定义每列的数据类型,并使用?pa.Check
?来定义数据验证规则。这些规则是通过 lambda 函数来定义的,用于检查每个元素是否符合规则。
一旦定义了数据验证规则,可以将其应用于数据集以验证数据的质量。
#?创建包含学生信息的数据集
data?=?{
????"age":?[25,?19,?32,?28,?22],
????"score":?[90,?75,?110,?88,?95]
}
df?=?pa.DataFrame(data)
#?应用数据验证规则
schema.validate(df)
在上述代码中,首先创建了包含学生信息的 DataFrame,然后使用?schema.validate
?方法来验证数据是否符合规则。如果数据不符合规则,Pandera 将引发异常并指出哪些数据不合格。
除了基本用法外,Python Pandera 还提供了一些进阶功能,以满足更复杂的数据验证和清洗需求。
有时候,可能需要将数据从一种类型转换为另一种类型,以满足验证规则。Pandera 可以定义数据类型转换函数并将其应用于数据。
#?定义数据类型转换函数
def?convert_age_to_float(age):
????return?float(age)
#?定义数据验证规则
schema?=?pa.DataFrameSchema({
????"age":?pa.Column(pa.Float,?checks=[
????????pa.Check(lambda?age:?18.0?<=?age?<=?30.0,?element_wise=True)
????]),
????"score":?pa.Column(pa.Int,?checks=[
????????pa.Check(lambda?score:?0?<=?score?<=?100,?element_wise=True)
????])
})
#?创建包含学生信息的数据集
data?=?{
????"age":?["25",?"19",?"32",?"28",?"22"],
????"score":?[90,?75,?110,?88,?95]
}
df?=?pa.DataFrame(data)
#?应用数据验证规则
schema.validate(df,?convert_dtype=True)
在上述代码中,首先定义了一个数据类型转换函数?convert_age_to_float
,然后在验证规则中将年龄列的数据类型设置为浮点型。通过设置?convert_dtype=True
,告诉 Pandera 在验证之前将数据类型转换为指定的类型。
还可以自定义错误消息,以便更清晰地指出哪些数据不符合规则。
#?定义自定义错误消息函数
def?custom_error_message(check,?series):
????return?f"Validation?failed?for?column?'{series.name}':?{check.get_error_description(series)}"
#?定义数据验证规则
schema?=?pa.DataFrameSchema({
????"age":?pa.Column(pa.Float,?checks=[
????????pa.Check(lambda?age:?18.0?<=?age?<=?30.0,?element_wise=True,?error=custom_error_message)
????]),
????"score":?pa.Column(pa.Int,?checks=[
????????pa.Check(lambda?score:?0?<=?score?<=?100,?element_wise=True,?error=custom_error_message)
????])
})
#?创建包含学生信息的数据集
data?=?{
????"age":?["25",?"19",?"32",?"28",?"22"],
????"score":?[90,?75,?110,?88,?95]
}
df?=?pa.DataFrame(data)
#?应用数据验证规则
try:
????schema.validate(df,?convert_dtype=True)
except?pa.errors.SchemaErrors?as?e:
????for?error?in?e.schema_errors:
????????print(error)
在上述代码中,定义了一个自定义错误消息函数?custom_error_message
,然后将其应用于数据验证规则中的错误消息。当数据不符合规则时,Pandera 将显示自定义错误消息。
Python Pandera 是一个强大的工具,用于数据验证和清洗。它提供了一种声明性的方式来定义数据验证规则,使数据质量的管理变得更加轻松。通过本文提供的示例代码,可以开始使用 Pandera 来提高数据质量,确保数据分析的准确性。希望本文对大家有所帮助,可以更好地利用 Pandera 进行数据验证和清洗工作。