mcp / test_analysis.py
Tracy André
updated
8b09855
raw
history blame
3.49 kB
"""
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")