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(