Spaces:
Sleeping
Sleeping
Tracy André
commited on
Commit
·
4adb707
1
Parent(s):
65b1dae
updated
Browse files
app.py
CHANGED
|
@@ -38,12 +38,21 @@ class AgricultureAnalyzer:
|
|
| 38 |
token=hf_token # ou use_auth_token=hf_token selon la version
|
| 39 |
).to_pandas()
|
| 40 |
|
|
|
|
|
|
|
|
|
|
| 41 |
# Nettoyage éventuel (ex: suppression NA)
|
| 42 |
self.df = self.df.dropna(subset=["numparcell", "surfparc", "millesime"])
|
| 43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
return f"✅ Données chargées avec succès : {len(self.df)} enregistrements"
|
| 45 |
|
| 46 |
except Exception as e:
|
|
|
|
| 47 |
return f"❌ Erreur lors du chargement du dataset : {str(e)}"
|
| 48 |
|
| 49 |
|
|
@@ -187,8 +196,12 @@ class AgricultureAnalyzer:
|
|
| 187 |
|
| 188 |
def create_risk_visualization(self):
|
| 189 |
"""Crée la visualisation des risques"""
|
| 190 |
-
if self.risk_analysis is None:
|
| 191 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 192 |
|
| 193 |
risk_df = self.risk_analysis.reset_index()
|
| 194 |
|
|
@@ -217,8 +230,12 @@ class AgricultureAnalyzer:
|
|
| 217 |
|
| 218 |
def create_culture_analysis(self):
|
| 219 |
"""Analyse par type de culture"""
|
| 220 |
-
if self.df is None:
|
| 221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 222 |
|
| 223 |
culture_counts = self.df['libelleusag'].value_counts()
|
| 224 |
|
|
@@ -231,8 +248,12 @@ class AgricultureAnalyzer:
|
|
| 231 |
|
| 232 |
def create_risk_distribution(self):
|
| 233 |
"""Distribution des niveaux de risque"""
|
| 234 |
-
if self.risk_analysis is None:
|
| 235 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 236 |
|
| 237 |
risk_counts = self.risk_analysis['Risque_adventice'].value_counts()
|
| 238 |
|
|
@@ -255,6 +276,7 @@ class AgricultureAnalyzer:
|
|
| 255 |
# Initialisation de l'analyseur
|
| 256 |
analyzer = AgricultureAnalyzer()
|
| 257 |
analyzer.load_data()
|
|
|
|
| 258 |
|
| 259 |
# Interface Gradio
|
| 260 |
def create_interface():
|
|
@@ -354,6 +376,7 @@ def create_interface():
|
|
| 354 |
|
| 355 |
def refresh_data():
|
| 356 |
analyzer.load_data()
|
|
|
|
| 357 |
return (
|
| 358 |
analyzer.get_summary_stats(),
|
| 359 |
analyzer.create_culture_analysis(),
|
|
|
|
| 38 |
token=hf_token # ou use_auth_token=hf_token selon la version
|
| 39 |
).to_pandas()
|
| 40 |
|
| 41 |
+
print(f"📊 Données brutes chargées: {len(self.df)} lignes")
|
| 42 |
+
print(f"📊 Colonnes disponibles: {list(self.df.columns)}")
|
| 43 |
+
|
| 44 |
# Nettoyage éventuel (ex: suppression NA)
|
| 45 |
self.df = self.df.dropna(subset=["numparcell", "surfparc", "millesime"])
|
| 46 |
|
| 47 |
+
print(f"📊 Après nettoyage: {len(self.df)} lignes")
|
| 48 |
+
if len(self.df) > 0:
|
| 49 |
+
print(f"📊 Herbicides présents: {(self.df['familleprod'] == 'Herbicides').sum()} interventions")
|
| 50 |
+
print(f"📊 Cultures: {self.df['libelleusag'].nunique()} types différents")
|
| 51 |
+
|
| 52 |
return f"✅ Données chargées avec succès : {len(self.df)} enregistrements"
|
| 53 |
|
| 54 |
except Exception as e:
|
| 55 |
+
print(f"❌ Erreur détaillée: {str(e)}")
|
| 56 |
return f"❌ Erreur lors du chargement du dataset : {str(e)}"
|
| 57 |
|
| 58 |
|
|
|
|
| 196 |
|
| 197 |
def create_risk_visualization(self):
|
| 198 |
"""Crée la visualisation des risques"""
|
| 199 |
+
if self.risk_analysis is None or len(self.risk_analysis) == 0:
|
| 200 |
+
# Créer un graphique vide avec message d'erreur
|
| 201 |
+
fig = px.scatter(title="❌ Aucune donnée d'analyse des risques disponible")
|
| 202 |
+
fig.add_annotation(text="Veuillez charger les données d'abord",
|
| 203 |
+
xref="paper", yref="paper", x=0.5, y=0.5, showarrow=False)
|
| 204 |
+
return fig
|
| 205 |
|
| 206 |
risk_df = self.risk_analysis.reset_index()
|
| 207 |
|
|
|
|
| 230 |
|
| 231 |
def create_culture_analysis(self):
|
| 232 |
"""Analyse par type de culture"""
|
| 233 |
+
if self.df is None or len(self.df) == 0:
|
| 234 |
+
# Créer un graphique vide avec message d'erreur
|
| 235 |
+
fig = px.pie(title="❌ Aucune donnée disponible")
|
| 236 |
+
fig.add_annotation(text="Veuillez charger les données d'abord",
|
| 237 |
+
xref="paper", yref="paper", x=0.5, y=0.5, showarrow=False)
|
| 238 |
+
return fig
|
| 239 |
|
| 240 |
culture_counts = self.df['libelleusag'].value_counts()
|
| 241 |
|
|
|
|
| 248 |
|
| 249 |
def create_risk_distribution(self):
|
| 250 |
"""Distribution des niveaux de risque"""
|
| 251 |
+
if self.risk_analysis is None or len(self.risk_analysis) == 0:
|
| 252 |
+
# Créer un graphique vide avec message d'erreur
|
| 253 |
+
fig = px.bar(title="❌ Aucune analyse des risques disponible")
|
| 254 |
+
fig.add_annotation(text="Veuillez charger les données d'abord",
|
| 255 |
+
xref="paper", yref="paper", x=0.5, y=0.5, showarrow=False)
|
| 256 |
+
return fig
|
| 257 |
|
| 258 |
risk_counts = self.risk_analysis['Risque_adventice'].value_counts()
|
| 259 |
|
|
|
|
| 276 |
# Initialisation de l'analyseur
|
| 277 |
analyzer = AgricultureAnalyzer()
|
| 278 |
analyzer.load_data()
|
| 279 |
+
analyzer.analyze_data() # Analyse des données après chargement
|
| 280 |
|
| 281 |
# Interface Gradio
|
| 282 |
def create_interface():
|
|
|
|
| 376 |
|
| 377 |
def refresh_data():
|
| 378 |
analyzer.load_data()
|
| 379 |
+
analyzer.analyze_data() # Recalculer l'analyse après rechargement
|
| 380 |
return (
|
| 381 |
analyzer.get_summary_stats(),
|
| 382 |
analyzer.create_culture_analysis(),
|