Pelage: Defensive analysis for Polars
  • Get started
  • API Reference
  • Examples
  • Coming from dbt
  • Git
  1. Checks with group_by
  2. not_constant
  • API Reference
  • Check functions
    • has_columns
    • has_dtypes
    • has_no_nulls
    • has_no_infs
    • unique
    • unique_combination_of_columns
    • accepted_values
    • not_accepted_values
    • accepted_range
    • maintains_relationships
    • column_is_within_n_std
    • custom_check
  • Checks with group_by
    • has_shape
    • at_least_one
    • not_constant
    • not_null_proportion
    • has_mandatory_values
    • mutually_exclusive_ranges
    • is_monotonic
  • Exceptions
    • PolarsAssertError

On this page

  • not_constant
    • Parameters
    • Returns
    • Examples
  1. Checks with group_by
  2. not_constant

not_constant

checks.not_constant(data, columns=None, group_by=None)

Check if a DataFrame has constant columns.

Parameters

data: PolarsLazyOrDataFrame

The input DataFrame to check for null values.

columns: Optional[PolarsColumnType] = None

Columns to consider for null value check. By default, all columns are checked.

group_by: Optional[PolarsOverClauseInput] = None

When specified perform the check per group instead of the whole column, by default None

Returns

Type Description
PolarsLazyOrDataFrame The original polars DataFrame or LazyFrame when the check passes

Examples

>>> import polars as pl
>>> import pelage as plg
>>> df = pl.DataFrame({"a": [1, 2]})
>>> df.pipe(plg.not_constant, "a")
shape: (2, 1)
┌─────┐
│ a   │
│ --- │
│ i64 │
╞═════╡
│ 1   │
│ 2   │
└─────┘
>>> df = pl.DataFrame({"b": [1, 1]})
>>> df.pipe(plg.not_constant)
Traceback (most recent call last):
...
pelage.checks.PolarsAssertError: Details
shape: (1, 2)
┌────────┬────────────┐
│ column ┆ n_distinct │
│ ---    ┆ ---        │
│ str    ┆ u32        │
╞════════╪════════════╡
│ b      ┆ 1          │
└────────┴────────────┘
Error with the DataFrame passed to the check function:
--> Some columns are constant

The folloing example details how to perform this checks for groups:

>>> import polars as pl
>>> import pelage as plg
>>> df = pl.DataFrame(
...     {
...         "a": [1, 2, 1, 1],
...         "b": ["A", "A", "B", "B"],
...     }
... )
>>> df.pipe(plg.not_constant, "a")
shape: (4, 2)
┌─────┬─────┐
│ a   ┆ b   │
│ --- ┆ --- │
│ i64 ┆ str │
╞═════╪═════╡
│ 1   ┆ A   │
│ 2   ┆ A   │
│ 1   ┆ B   │
│ 1   ┆ B   │
└─────┴─────┘
>>> df.pipe(plg.not_constant, "a", group_by="b")
Traceback (most recent call last):
...
pelage.checks.PolarsAssertError: Details
shape: (1, 3)
┌─────┬────────┬────────────┐
│ b   ┆ column ┆ n_distinct │
│ --- ┆ ---    ┆ ---        │
│ str ┆ str    ┆ u32        │
╞═════╪════════╪════════════╡
│ B   ┆ a      ┆ 1          │
└─────┴────────┴────────────┘
Error with the DataFrame passed to the check function:
--> Some columns are constant within a given group
at_least_one
not_null_proportion