import pointblank as pb
import polars as pl
= pl.DataFrame(
tbl
{"a": [5, 5, 5, 5, 5, 5],
"b": [5, 6, 3, 6, 5, 8],
}
)
pb.preview(tbl)
Validate.col_vals_ne
Validate.col_vals_ne(
columns,
value,=False,
na_pass=None,
pre=None,
thresholds=None,
actions=None,
brief=True,
active )
Are column data not equal to a fixed value or data in another column?
The col_vals_ne()
validation method checks whether column values in a table are not equal to a specified value=
(the exact comparison used in this function is col_val != value
). The value=
can be specified as a single, literal value or as a column name given in col()
. This validation will operate over the number of test units that is equal to the number of rows in the table (determined after any pre=
mutation has been applied).
Parameters
columns :
str
|list
[str
] |Column
|ColumnSelector
|ColumnSelectorNarwhals
-
A single column or a list of columns to validate. Can also use
col()
with column selectors to specify one or more columns. If multiple columns are supplied or resolved, there will be a separate validation step generated for each column. value :
float
|int
|Column
-
The value to compare against. This can be a single numeric value or a single column name given in
col()
. The latter option allows for a column-column comparison. na_pass :
bool
= False-
Should any encountered None, NA, or Null values be considered as passing test units? By default, this is
False
. Set toTrue
to pass test units with missing values. pre :
Callable
| None = None-
A optional preprocessing function or lambda to apply to the data table during interrogation.
thresholds :
int
|float
|bool
|tuple
|dict
| Thresholds = None-
Optional failure threshold levels for the validation step(s), so that the interrogation can react accordingly when exceeding the set levels for different states (‘warning’, ‘error’, and ‘critical’). This can be created using the
Thresholds
class or more simply as (1) an integer or float denoting the absolute number or fraction of failing test units for the ‘warn’ level, (2) a tuple of 1-3 values, or (3) a dictionary of 1-3 entries. actions : Actions | None = None
-
Optional actions to take when the validation step(s) meets or exceeds any set threshold levels. If provided, the
Actions
class should be used to define the actions. brief :
str
| None = None-
An optional brief description of the validation step. The templating elements
"{col}"
and"{step}"
can be used to insert the column name and step number, respectively. active :
bool
= True-
A boolean value indicating whether the validation step should be active. Using
False
will make the validation step inactive (still reporting its presence and keeping indexes for the steps unchanged).
Returns
: Validate
-
The
Validate
object with the added validation step.
Examples
For the examples here, we’ll use a simple Polars DataFrame with two numeric columns (a
and b
). The table is shown below:
Let’s validate that values in column a
are not equal to the value of 3
. We’ll determine if this validation had any failing test units (there are six test units, one for each row).
= (
validation =tbl)
pb.Validate(data="a", value=3)
.col_vals_ne(columns
.interrogate()
)
validation
STEP | COLUMNS | VALUES | TBL | EVAL | UNITS | PASS | FAIL | W | E | C | EXT | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
#4CA64C | 1 |
|
✓ | 6 | 6 1.00 |
0 0.00 |
— | — | — | — |
Printing the validation
object shows the validation table in an HTML viewing environment. The validation table shows the single entry that corresponds to the validation step created by using col_vals_ne()
. All test units passed, and there are no failing test units.
Aside from checking a column against a literal value, we can also use a column name in the value=
argument (with the helper function col()
) to perform a column-column comparison. For the next example, we’ll use col_vals_ne()
to check whether the values in column a
aren’t equal to the values in column b
.
= (
validation =tbl)
pb.Validate(data="a", value=pb.col("b"))
.col_vals_ne(columns
.interrogate()
)
validation
The validation table reports two failing test units. The specific failing cases are in rows 0 and 4, where a
is 5
and b
is 5
in both cases (i.e., they are equal to each other).