Spaces:
Sleeping
Sleeping
File size: 3,490 Bytes
8b09855 |
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
"""
Script de test pour diagnostiquer les problèmes d'analyse des tendances
"""
import pandas as pd
import numpy as np
from data_loader import AgriculturalDataLoader
def test_data_loading():
"""Test du chargement des données"""
print("🔍 Test du chargement des données...")
try:
loader = AgriculturalDataLoader()
df = loader.load_all_files()
print(f"✅ Données chargées: {len(df)} lignes")
print(f"📋 Colonnes disponibles: {list(df.columns)}")
print(f"📊 Types de données:")
print(df.dtypes)
return df
except Exception as e:
print(f"❌ Erreur lors du chargement: {e}")
return None
def test_herbicide_analysis(df):
"""Test de l'analyse des herbicides"""
print("\n🧪 Test de l'analyse des herbicides...")
if df is None:
return
# Vérifier les colonnes nécessaires
required_cols = ['is_herbicide', 'plot_name', 'year', 'crop_type', 'produit', 'plot_surface']
missing_cols = [col for col in required_cols if col not in df.columns]
if missing_cols:
print(f"❌ Colonnes manquantes: {missing_cols}")
return
# Filtrer les herbicides
herbicide_df = df[df['is_herbicide'] == True].copy()
print(f"📊 Nombre d'applications herbicides: {len(herbicide_df)}")
if len(herbicide_df) == 0:
print("❌ Aucune donnée d'herbicides trouvée")
print("🔍 Vérification des valeurs 'is_herbicide':")
print(df['is_herbicide'].value_counts())
print("🔍 Vérification des familles de produits:")
if 'familleprod' in df.columns:
print(df['familleprod'].value_counts())
return
print(f"✅ Données herbicides trouvées: {len(herbicide_df)} applications")
# Test du calcul IFT
print("\n📈 Test du calcul IFT...")
try:
ift_summary = herbicide_df.groupby(['plot_name', 'year', 'crop_type']).agg({
'produit': 'count',
'plot_surface': 'first',
'quantitetot': 'sum'
}).reset_index()
ift_summary['ift_herbicide'] = ift_summary['produit'] / ift_summary['plot_surface']
print(f"✅ IFT calculé pour {len(ift_summary)} combinaisons parcelle/année/culture")
print(f"📊 IFT moyen: {ift_summary['ift_herbicide'].mean():.2f}")
print(f"📊 IFT max: {ift_summary['ift_herbicide'].max():.2f}")
print("\n📋 Échantillon des données IFT:")
print(ift_summary.head())
return ift_summary
except Exception as e:
print(f"❌ Erreur dans le calcul IFT: {e}")
return None
def test_years_and_plots(df):
"""Test des années et parcelles disponibles"""
print("\n📅 Test des années et parcelles...")
if df is None:
return
years = sorted(df['year'].dropna().unique())
plots = sorted(df['plot_name'].dropna().unique())
print(f"📅 Années disponibles: {years}")
print(f"🏞️ Parcelles disponibles: {plots}")
# Test par année
print("\n📊 Données par année:")
year_counts = df.groupby('year').size()
print(year_counts)
if __name__ == "__main__":
print("🚜 Test de l'analyse des tendances herbicides\n")
df = test_data_loading()
test_herbicide_analysis(df)
test_years_and_plots(df)
print("\n✅ Tests terminés")
|