beac_inflation_app / data_processing.py
Arvador237's picture
Update data_processing.py
698c870 verified
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)}")