Spaces:
Runtime error
Runtime error
| import pandas as pd | |
| SRC_BINUH = "binuh-scstats.csv" | |
| SRC_CONSOLIDE = "Dataset_Haiti_Consolide_v5.csv" | |
| DST = "Dataset_Haiti_Consolide_v6.csv" | |
| bi = pd.read_csv(SRC_BINUH, low_memory=False) | |
| print("BINUH brut :", bi.shape) | |
| # ------------------------------------------------------------------ mois -> annee | |
| MOIS = {"Jan": 1, "Feb": 2, "Mar": 3, "Apr": 4, "May": 5, "Jun": 6, | |
| "Jul": 7, "Aug": 8, "Sep": 9, "Oct": 10, "Nov": 11, "Dec": 12} | |
| bi["mois_num"] = bi["month"].map(MOIS) | |
| # ------------------------------------------------------------------ colonnes -> indicateurs | |
| # Indicateurs classés par TYPE (Homicides, Meurtre, Lynchage, Enlèvement/ | |
| # Kidnapping) ; la répartition Hommes/Femmes/mineurs devient une simple | |
| # Désagrégation à l'intérieur de chaque type, au lieu d'indicateurs séparés. | |
| COLONNES = { | |
| "ih_total": ("Homicides intentionnels (BINUH)", "Total"), | |
| "ih_male": ("Homicides intentionnels (BINUH)", "Sexe: Hommes"), | |
| "ih_male_minor": ("Homicides intentionnels (BINUH)", "Sexe: Hommes mineurs"), | |
| "ih_female": ("Homicides intentionnels (BINUH)", "Sexe: Femmes"), | |
| "ih_female_minor": ("Homicides intentionnels (BINUH)", "Sexe: Femmes mineures"), | |
| "ih_murder": ("Homicides intentionnels - Meurtre (BINUH)", "Total"), | |
| "ih_lynching": ("Homicides intentionnels - Lynchage (BINUH)", "Total"), | |
| "kidnap_total": ("Enlèvements / Kidnapping (BINUH)", "Total"), | |
| "kidnap_male": ("Enlèvements / Kidnapping (BINUH)", "Sexe: Hommes"), | |
| "kidnap_male_minor": ("Enlèvements / Kidnapping (BINUH)", "Sexe: Hommes mineurs"), | |
| "kidnap_female": ("Enlèvements / Kidnapping (BINUH)", "Sexe: Femmes"), | |
| "kidnap_female_minor": ("Enlèvements / Kidnapping (BINUH)", "Sexe: Femmes mineures"), | |
| } | |
| morceaux = [] | |
| for col, (indicateur, desag) in COLONNES.items(): | |
| sub = bi[bi[col].notna()][["year", "mois_num", col]].copy() | |
| sub = sub.rename(columns={col: "Valeur"}) | |
| sub["Indicateur"] = indicateur | |
| sub["Désagrégation"] = desag | |
| morceaux.append(sub) | |
| long_ = pd.concat(morceaux, ignore_index=True) | |
| long_["Thématique"] = "Justice et Sécurité" | |
| long_["Source"] = "BINUH" | |
| long_["Échelle"] = "National" | |
| long_["Unité"] = "Personnes" | |
| # ------------------------------------------------------------------ agrégation annuelle (somme, cohérent avec le reste du dataset) | |
| annuel = (long_.groupby(["Thématique", "Source", "Indicateur", "Désagrégation", | |
| "Échelle", "year", "Unité"], as_index=False)["Valeur"].sum()) | |
| annuel = annuel.rename(columns={"year": "Période"}) | |
| annuel = annuel[["Thématique", "Source", "Indicateur", "Désagrégation", "Échelle", | |
| "Période", "Valeur", "Unité"]] | |
| print("BINUH annualisé :", annuel.shape) | |
| print(annuel.head(10).to_string()) | |
| # ------------------------------------------------------------------ fusion avec le dataset consolidé | |
| base = pd.read_csv(SRC_CONSOLIDE, encoding="utf-8-sig", low_memory=False) | |
| print("Consolidé avant fusion :", base.shape) | |
| final = pd.concat([base, annuel], ignore_index=True) | |
| final.to_csv(DST, index=False, encoding="utf-8-sig") | |
| print("Consolidé après fusion :", final.shape) | |
| print("\nRépartition Source (Justice et Sécurité) :") | |
| print(final[final["Thématique"] == "Justice et Sécurité"]["Source"].value_counts()) | |