def validate_data()

in spotify_confidence/analysis/confidence_utils.py [0:0]


def validate_data(df: DataFrame, columns_that_must_exist, group_columns: Iterable, ordinal_group_column: str):
    """Integrity check input dataframe."""
    for col in columns_that_must_exist:
        _validate_column(df, col)

    if not group_columns:
        raise ValueError(
            """At least one of `categorical_group_columns`
                            or `ordinal_group_column` must be specified."""
        )

    for col in group_columns:
        _validate_column(df, col)

    # Ensure there's at most 1 observation per grouping.
    max_one_row_per_grouping = all(df.groupby(group_columns, sort=False).size() <= 1)
    if not max_one_row_per_grouping:
        raise ValueError("""Each grouping should have at most 1 observation.""")

    if ordinal_group_column:
        ordinal_column_type = df[ordinal_group_column].dtype.type
        if not np.issubdtype(ordinal_column_type, np.number) and not issubclass(ordinal_column_type, np.datetime64):
            raise TypeError(