Pelage: Defensive analysis for Polars
  • Get started
  • API Reference
  • Examples
  • Coming from dbt
  • Git
  1. Checks with group_by
  2. at_least_one
  • 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

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

at_least_one

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

Ensure that there is at least one not null value in the designated columns.

Parameters

data: PolarsLazyOrDataFrame

Polars DataFrame or LazyFrame containing data to check.

columns: Optional[PolarsColumnType] = None

Columns to consider to check the presence of at least one value. 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": [None, None], "b": [1, None]})
>>> df.pipe(plg.at_least_one, "b")
shape: (2, 2)
┌──────┬──────┐
│ a    ┆ b    │
│ ---  ┆ ---  │
│ null ┆ i64  │
╞══════╪══════╡
│ null ┆ 1    │
│ null ┆ null │
└──────┴──────┘
>>> df.pipe(plg.at_least_one)
Traceback (most recent call last):
...
pelage.checks.PolarsAssertError: Details
Error with the DataFrame passed to the check function:
--> Some columns contains only null values: ['a']

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

>>> df = pl.DataFrame(
...         {
...             "a": [None, None, None, 2],
...             "group": ["G1", "G1", "G2", "G2"],
...         }
...     )
>>> df.pipe(plg.at_least_one, "a")
shape: (4, 2)
┌──────┬───────┐
│ a    ┆ group │
│ ---  ┆ ---   │
│ i64  ┆ str   │
╞══════╪═══════╡
│ null ┆ G1    │
│ null ┆ G1    │
│ null ┆ G2    │
│ 2    ┆ G2    │
└──────┴───────┘
>>> df.pipe(plg.at_least_one, "a", group_by="group")
Traceback (most recent call last):
...
pelage.checks.PolarsAssertError: Details
shape: (1, 3)
┌───────┬─────────┬──────────────┐
│ group ┆ columns ┆ at_least_one │
│ ---   ┆ ---     ┆ ---          │
│ str   ┆ str     ┆ bool         │
╞═══════╪═════════╪══════════════╡
│ G1    ┆ a       ┆ false        │
└───────┴─────────┴──────────────┘
Error with the DataFrame passed to the check function:
--> Some columns contains only null values per group
has_shape
not_constant