Skip to content

Commit b98cbc8

Browse files
Add error handling for plot part.
1 parent b53d405 commit b98cbc8

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/project_mbb/analysis/desc_analysis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,9 @@ def _fail_if_no_total_communes(enusc_clean, commune_mapping):
133133

134134
def _fail_if_ses_not_categorical(enusc_clean, ses_column="socioecon_status"):
135135
"""Raise a TypeError if 'socioecon_status' is not categorical."""
136-
if not pd.api.types.is_categorical_dtype(enusc_clean[ses_column]):
136+
if not isinstance(enusc_clean[ses_column].dtype, pd.CategoricalDtype):
137137
error_msg = (
138-
f"Column '{ses_column}' must be of type 'category',"
138+
f"Column '{ses_column}' must be of type 'category', "
139139
f"but got {enusc_clean[ses_column].dtype}."
140140
)
141141
raise TypeError(error_msg)

src/project_mbb/final/plot.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212

1313
def plot_crime_perception(enusc_clean):
14+
_fail_if_only_missing_values(enusc_clean)
15+
_fail_if_missing_or_empty_columns(enusc_clean)
16+
1417
crime_columns = {
1518
"crime_increase_perception_nation": "Crime Perception - Nation",
1619
"crime_increase_perception_commune": "Crime Perception - Commune",
@@ -45,3 +48,33 @@ def plot_crime_perception(enusc_clean):
4548
)
4649

4750
fig.write_image(i)
51+
52+
53+
# Error Handling
54+
55+
56+
def _fail_if_missing_or_empty_columns(enusc_clean):
57+
"""Raises an error if required columns are missing."""
58+
required_columns = {
59+
"crime_increase_perception_nation",
60+
"crime_increase_perception_commune",
61+
"crime_increase_perception_neighborhood",
62+
}
63+
64+
missing_columns = required_columns - set(enusc_clean.columns)
65+
if missing_columns:
66+
error_msg = f"Missing required columns: {missing_columns}"
67+
raise ValueError(error_msg)
68+
69+
70+
def _fail_if_only_missing_values(enusc_clean):
71+
"""Raises an error if required columns contain only missing values."""
72+
required_columns = {
73+
"crime_increase_perception_nation",
74+
"crime_increase_perception_commune",
75+
"crime_increase_perception_neighborhood",
76+
}
77+
empty_columns = {col for col in required_columns if enusc_clean[col].dropna().empty}
78+
if empty_columns:
79+
error_msg = f"Columns contain only missing values: {empty_columns}"
80+
raise ValueError(error_msg)

0 commit comments

Comments
 (0)