File size: 2,669 Bytes
ffe1030
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pandas as pd
import sqlite3
import streamlit as st
from pathlib import Path

@st.cache_data
def load_data():
    """Charge les données depuis le fichier CSV"""
    try:
        data_path = Path(__file__).parent.parent.parent / "data/transformed/Rugby_Stats.csv"
        df = pd.read_csv(data_path)
        return df
    except Exception as e:
        st.error(f"Impossible de charger les données : {e}")
        return pd.DataFrame()

@st.cache_data
def load_from_database():
    """Charge les données depuis la base SQLite"""
    try:
        db_path = Path(__file__).parent.parent.parent / "data/transformed/Rugby_Stats.db"
        conn = sqlite3.connect(db_path)
        
        query = '''

        SELECT j.prenom, j.nom, m.nom_match, s.numero, a.nom_action, 

               n.id_niveau, s.nb_actions

        FROM Statistiques s

        JOIN Joueuse j ON s.id_joueuse = j.id_joueuse

        JOIN Match m ON s.id_match = m.id_match

        JOIN Action a ON s.id_action = a.id_action

        JOIN Niveau n ON s.id_niveau = n.id_niveau

        '''
        
        df = pd.read_sql_query(query, conn)
        conn.close()
        return df
    except Exception as e:
        st.error(f"Impossible de charger depuis la base : {e}")
        return pd.DataFrame()

def get_database_stats():
    """Retourne les statistiques générales de la base"""
    try:
        db_path = Path(__file__).parent.parent.parent / "data/transformed/Rugby_Stats.db"
        conn = sqlite3.connect(db_path)
        
        # Nombre de joueuses
        nb_joueuses = pd.read_sql_query("SELECT COUNT(*) as count FROM Joueuse", conn).iloc[0]['count']
        
        # Nombre de matchs
        nb_matchs = pd.read_sql_query("SELECT COUNT(*) as count FROM Match", conn).iloc[0]['count']
        
        # Nombre total de statistiques
        nb_stats = pd.read_sql_query("SELECT COUNT(*) as count FROM Statistiques", conn).iloc[0]['count']
        
        conn.close()
        
        return {
            'nb_joueuses': nb_joueuses,
            'nb_matchs': nb_matchs,
            'nb_stats': nb_stats
        }
    except Exception as e:
        return {'nb_joueuses': 0, 'nb_matchs': 0, 'nb_stats': 0}

def get_player_stats(df, player_name=None):
    """Retourne les statistiques d'une joueuse spécifique"""
    if player_name:
        return df[df['Nom'].str.contains(player_name, case=False, na=False)]
    return df

def get_match_stats(df, match_name=None):
    """Retourne les statistiques d'un match spécifique"""
    if match_name:
        return df[df['Match'] == match_name]
    return df