使用Modin进行数据验证

在0.8.0中新增

Modin 是一个分布式计算框架,提供了一个 pandas 的替代数据框实现。您可以使用 pandera 来直接验证 DataFrame()Series() 对象。首先,用 dask 附加组件安装 pandera

pip install 'pandera[modin]'       # installs both ray and dask backends
pip install 'pandera[modin-ray]'   # only ray backend
pip install 'pandera[modin-dask]'  # only dask backend

然后您可以使用 pandera 模式来验证 modin 数据框。在下面的示例中,我们将使用 基于类的 API 来定义一个 DataFrameModel 进行验证。

import modin.pandas as pd
import pandas as pd
import pandera as pa

from pandera.typing.modin import DataFrame, Series


class Schema(pa.DataFrameModel):
    state: Series[str]
    city: Series[str]
    price: Series[int] = pa.Field(in_range={"min_value": 5, "max_value": 20})


# create a modin dataframe that's validated on object initialization
df = DataFrame[Schema](
    {
        'state': ['FL','FL','FL','CA','CA','CA'],
        'city': [
            'Orlando',
            'Miami',
            'Tampa',
            'San Francisco',
            'Los Angeles',
            'San Diego',
        ],
        'price': [8, 12, 10, 16, 20, 18],
    }
)
print(df)
  state           city  price
0    FL        Orlando      8
1    FL          Miami     12
2    FL          Tampa     10
3    CA  San Francisco     16
4    CA    Los Angeles     20
5    CA      San Diego     18

您还可以使用 check_types() 装饰器在运行时验证 modin 数据框:

@pa.check_types
def function(df: DataFrame[Schema]) -> DataFrame[Schema]:
    return df[df["state"] == "CA"]

function(df)
  state           city  price
3    CA  San Francisco     16
4    CA    Los Angeles     20
5    CA      San Diego     18

当然,您可以使用基于对象的API来验证modin数据框:

schema = pa.DataFrameSchema({
    "state": pa.Column(str),
    "city": pa.Column(str),
    "price": pa.Column(int, pa.Check.in_range(min_value=5, max_value=20))
})
schema(df)
  state           city  price
0    FL        Orlando      8
1    FL          Miami     12
2    FL          Tampa     10
3    CA  San Francisco     16
4    CA    Los Angeles     20
5    CA      San Diego     18