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")