使用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