File size: 2,733 Bytes
1900d51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import pandas as pd
import streamlit as st
from config.config import EXCEL_PATH


def clean_dataframe(df):
    # Récupérer les catégories principales (ligne 0)
    categories = df.iloc[0]
    # Récupérer les sous-catégories (ligne 2)
    sub_categories = df.iloc[2]
    
    # Créer un dictionnaire pour stocker les nouvelles colonnes
    new_columns = {}
    current_category = None
    
    # Parcourir toutes les colonnes pour créer les nouveaux noms
    for i, (cat, subcat) in enumerate(zip(categories, sub_categories)):
        if pd.notna(cat):
            current_category = cat
        if pd.notna(subcat) and current_category is not None:
            new_name = f"{current_category}_{subcat}"
            new_columns[df.columns[i]] = new_name
    
    # Garder la colonne 'name' telle quelle
    new_columns[df.columns[0]] = 'name'
    
    # Renommer les colonnes
    df = df.rename(columns=new_columns)
    
    # Supprimer les trois premières lignes et réinitialiser l'index
    df = df.iloc[3:].reset_index(drop=True)
    
    # Supprimer les lignes où le nom est vide ou NaN
    df = df.dropna(subset=['name']).reset_index(drop=True)
    
    # Extraire le numéro et nettoyer le nom AVANT d'ajouter la colonne Ville
    df['numero'] = df['name'].str.extract(r'^(\d+)').fillna('')
    df['name'] = df['name'].str.replace(r'^\d+\s*-\s*', '', regex=True).str.strip()
    
    # Ne garder que les colonnes nécessaires
    columns_to_keep = ['numero', 'name'] + [col for col in df.columns if '_' in str(col)]
    df = df[columns_to_keep]
    
    return df

@st.cache_data
def load_data():
    """Charge et prépare les données depuis le fichier Excel"""
    try:
        if not EXCEL_PATH.exists():
            st.error(f"Le fichier Excel n'a pas été trouvé à l'emplacement : {EXCEL_PATH}")
            st.info("Veuillez placer votre fichier stats.xlsx dans le dossier 'data'")
            return None
            
        all_sheets = pd.read_excel(EXCEL_PATH, sheet_name=None)
        clean_data = []
        
        for ville, df in all_sheets.items():
            if ville != "Promedio partidos":
                clean_df = clean_dataframe(df)
                if not clean_df.empty:
                    clean_df['Ville'] = ville
                    clean_data.append(clean_df)
        
        # st.write(clean_data)

        if not clean_data:
            st.warning("Aucune donnée trouvée")
            return None
            
        return pd.concat(clean_data, ignore_index=True)
        
    except Exception as e:
        st.error(f"Erreur lors du chargement des données: {str(e)}")
        return None