Tracy André commited on
Commit
4adb707
·
1 Parent(s): 65b1dae
Files changed (1) hide show
  1. app.py +29 -6
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
- return None
 
 
 
 
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
- return None
 
 
 
 
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
- return None
 
 
 
 
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(),