Spaces:
Running
Running
import pandas as pd | |
import numpy as np | |
from sklearn.preprocessing import MinMaxScaler | |
from sklearn.model_selection import train_test_split | |
def load_and_preprocess_data(): | |
"""Charge les données sans renommer les colonnes""" | |
try: | |
data = pd.read_csv("inflation_beac_complet_2010_2025.csv") | |
data['Année'] = pd.to_datetime(data['Année'], format='%Y').dt.strftime('%Y-%m-%d') | |
# Nettoyage | |
data = data.dropna() | |
# Normalisation (en utilisant les noms exacts des colonnes) | |
scaler = MinMaxScaler() | |
numeric_cols = [ | |
"Taux d'inflation (%)", | |
"Taux directeur", | |
"Masse monétaire (M2)", | |
"Croissance PIB (%)", | |
"Balance commerciale", | |
"Taux de change FCFA/USD" | |
] | |
data[numeric_cols] = scaler.fit_transform(data[numeric_cols]) | |
return data | |
except Exception as e: | |
raise ValueError(f"Erreur de prétraitement: {str(e)}") | |
def prepare_timeseries_data(data, country, start_date, end_date, look_back=12): | |
"""Prépare les séries temporelles avec vos noms de colonnes""" | |
try: | |
country_data = data[data['Pays'] == country] | |
filtered_data = country_data[ | |
(country_data['Année'] >= str(start_date)) & | |
(country_data['Année'] <= str(end_date)) | |
].sort_values('Année') | |
# Préparation des séquences | |
X, y = [], [] | |
for i in range(look_back, len(filtered_data)): | |
X.append(filtered_data.iloc[i-look_back:i][[ | |
"Taux d'inflation (%)", | |
"Masse monétaire (M2)", | |
"Croissance PIB (%)", | |
"Taux directeur", | |
"Balance commerciale", | |
"Taux de change FCFA/USD" | |
]].values) | |
y.append(filtered_data.iloc[i]["Taux d'inflation (%)"]) | |
X = np.array(X) | |
y = np.array(y) | |
# Séparation train/test | |
X_train, X_test, y_train, y_test = train_test_split( | |
X, y, test_size=0.2, shuffle=False | |
) | |
return X_train, X_test, y_train, y_test, filtered_data | |
except Exception as e: | |
raise ValueError(f"Erreur de préparation des données: {str(e)}") | |
def apply_scenarios(data, taux_directeur_change, pib_change, m2_change): | |
"""Applique les scénarios avec vos noms de colonnes exacts""" | |
try: | |
modified_data = data.copy() | |
# Application des modifications | |
modified_data["Taux directeur"] = modified_data["Taux directeur"] * (1 + taux_directeur_change/100) | |
modified_data["Croissance PIB (%)"] = modified_data["Croissance PIB (%)"] * (1 + pib_change/100) | |
modified_data["Masse monétaire (M2)"] = modified_data["Masse monétaire (M2)"] * (1 + m2_change/100) | |
return modified_data | |
except Exception as e: | |
raise ValueError(f"Erreur d'application des scénarios: {str(e)}") |