Download app/utils/data_processing.py from 2nzi/Rugby: direct link, hf CLI and curl.
- Browser
- Download file 2.73 kB
-
https://huggingface.co/spaces/2nzi/Rugby/resolve/main/app/utils/data_processing.py
- Command line
-
hf download hf://spaces/2nzi/Rugby/app/utils/data_processing.py
-
curl -L -o data_processing.py https://huggingface.co/spaces/2nzi/Rugby/resolve/main/app/utils/data_processing.py
2.73 kB
| 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 | |
| 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 | |