Administration
← Retour
Log : 20260322_200000
=== CRAWL 20260322_200000 ===
Trigger: scheduled
Started: 2026-03-22T20:00:00.002974
============================================================
Récupération de la page 1/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 2/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 3/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=3
→ 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 4/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=4
→ 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 5/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=5
→ 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 6/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=6
→ 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 7/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=7
→ 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 8/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=8
→ 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 9/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=9
→ 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 10/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=10
→ 35 annonces récupérées (total en mémoire: 350)
Export de 350 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 11/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=11
→ 35 annonces récupérées (total en mémoire: 385)
Export de 385 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 12/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=12
→ 35 annonces récupérées (total en mémoire: 420)
Export de 420 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 13/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=13
→ 35 annonces récupérées (total en mémoire: 455)
Export de 455 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 14/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=14
→ 35 annonces récupérées (total en mémoire: 490)
Export de 490 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 15/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=15
→ 35 annonces récupérées (total en mémoire: 525)
Export de 525 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 16/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=16
→ 35 annonces récupérées (total en mémoire: 560)
Export de 560 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 17/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=17
→ 35 annonces récupérées (total en mémoire: 595)
Export de 595 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 18/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=18
→ 35 annonces récupérées (total en mémoire: 630)
Export de 630 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 19/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=19
→ 35 annonces récupérées (total en mémoire: 665)
Export de 665 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 20/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=20
→ 35 annonces récupérées (total en mémoire: 700)
Export de 700 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 21/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=21
→ 35 annonces récupérées (total en mémoire: 735)
Export de 735 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 22/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=22
→ 35 annonces récupérées (total en mémoire: 770)
Export de 770 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 23/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=23
→ 35 annonces récupérées (total en mémoire: 805)
Export de 805 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 24/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=24
→ 35 annonces récupérées (total en mémoire: 840)
Export de 840 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 25/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=25
→ 35 annonces récupérées (total en mémoire: 875)
Export de 875 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 26/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=26
→ 35 annonces récupérées (total en mémoire: 910)
Export de 910 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 27/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=27
→ 35 annonces récupérées (total en mémoire: 945)
Export de 945 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 28/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=28
→ 35 annonces récupérées (total en mémoire: 980)
Export de 980 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 29/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=29
→ 35 annonces récupérées (total en mémoire: 1015)
Export de 1015 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 30/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=30
→ 35 annonces récupérées (total en mémoire: 1050)
Export de 1050 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 31/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=31
→ 35 annonces récupérées (total en mémoire: 1085)
Export de 1085 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 32/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=32
→ 35 annonces récupérées (total en mémoire: 1120)
Export de 1120 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 33/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=33
→ 35 annonces récupérées (total en mémoire: 1155)
Export de 1155 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 34/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=34
→ 35 annonces récupérées (total en mémoire: 1190)
Export de 1190 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 35/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=35
→ 35 annonces récupérées (total en mémoire: 1225)
Export de 1225 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 36/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=36
→ 35 annonces récupérées (total en mémoire: 1260)
Export de 1260 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 37/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=37
→ 35 annonces récupérées (total en mémoire: 1295)
Export de 1295 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 38/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=38
→ 35 annonces récupérées (total en mémoire: 1330)
Export de 1330 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 39/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=39
→ 35 annonces récupérées (total en mémoire: 1365)
Export de 1365 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 40/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=40
→ 35 annonces récupérées (total en mémoire: 1400)
Export de 1400 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Récupération de la page 41/41 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=clio+4&price=3000-9000®date=2016-max&u_car_brand=RENAULT&u_car_model=RENAULT_Clio&gearbox=1&seats=5%2C4&order=asc&page=41
→ 35 annonces récupérées (total en mémoire: 1435)
Export de 1435 annonces vers /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv réussi.
Terminé : 1435 annonces au total dans /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv
INFO: Model override : clio_4
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_clio_4_20260322_200000.csv
✅ 1435 lus, 1435 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 1435 lus, 1435 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6546 annonces en base
════════════════════════════════════════════════════════════
INFO: 1416 list_id lus dans le CSV.
INFO: 1462 annonces actives en base pour renault clio_4.
INFO: 46 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_clio_4_20260322_200000.csv
Brand : renault | Modèle : clio_4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1416
Annonces actives en DB : 1462
Absentes du crawl : 46
Marquées indisponibles : 46
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/clio_4/figures
🔍 Modèle filtré : clio_4
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 2649 annonces chargées (modèle 'clio_4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 2649
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 3127969515 Renault clio 4 7000 2018 82900 essence renault clio_4 pro 2026-01-15 08:48:18
1 3118025641 Renault clio 4 1.5 dci 2019 entretenu chez renault 7990 2019 113000 diesel renault clio_4 private 2025-12-27 01:30:58
2 3143719888 Renault clio 4 phase 2 0.9 tce 90cv energy limited entretien complet 7990 2018 95000 essence renault clio_4 pro 2026-02-12 11:14:08
3 3141083795 Renault Clio 4/IV Authentique / 1.2 16 V 75 ch / 88280 kms / Entretiens à jours 5990 2014 88280 essence renault clio_4 pro 2026-02-07 16:41:23
4 3147329929 Clio 4 4000 2014 100000 essence renault clio_4 private 2026-02-18 19:23:14
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2024-04-05 09:38:00
Dernière publication : 2026-03-22 20:56:40
Durée : 716 jours
👤 Répartition par type de vendeur :
private : 1727 (65.2%)
pro : 922 (34.8%)
⛽ Répartition par carburant :
diesel : 1447 (54.6%)
essence : 1198 (45.2%)
autre : 3 (0.1%)
gpl : 1 (0.0%)
🏭 Top 10 marques :
renault : 2649 (100.0%)
🧮 Création des colonnes calculées...
✅ Colonnes ajoutées : age_years, km_per_year, price_per_km
🧹 Nettoyage des données...
📊 Rapport de nettoyage :
prix_aberrants : 0 lignes supprimées
km_aberrants : 1 lignes supprimées
annee_aberrante : 0 lignes supprimées
age_negatif : 0 lignes supprimées
─────────────────────────────────────────────
Total supprimé : 1
Restantes : 2648 / 2649
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 40 outliers (1.5%)
Bornes IQR : [4,740 ; 10,740]
mileage_km : 44 outliers (1.7%)
Bornes IQR : [20,000 ; 252,000]
age_years : 8 outliers (0.3%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 76 (2.9%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 2648
Dont outliers identifiés : 76
Annonces non-outliers : 2572
Plages de valeurs :
price_eur : [ 3,300 ; 9,000] (moy: 7,611)
mileage_km : [ 125 ; 380,000] (moy: 137,674)
year_model : [ 2,014 ; 2,024] (moy: 2,017)
age_years : [ 2 ; 12] (moy: 9)
km_per_year : [ 18 ; 54,286] (moy: 16,120)
💾 2648 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 9 signaux de suspicion détectés
km_trop_bas_essence: 2
km_trop_bas_diesel: 7
💾 9 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 2648 7610.773792 7900.000000 1103.617584 3300.000000 6990.00000 8490.0 9000.000000 1500.00000
mileage_km 2648 137674.388218 134000.000000 44790.691558 125.000000 107000.00000 165000.0 380000.000000 58000.00000
year_model 2648 2017.277946 2017.000000 1.361879 2014.000000 2016.00000 2018.0 2024.000000 2.00000
age_years 2648 8.722054 9.000000 1.361879 2.000000 8.00000 10.0 12.000000 2.00000
km_per_year 2648 16120.316384 15714.285714 5720.024119 17.857143 12193.59375 19600.0 54285.714286 7406.40625
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 2,648 7,611 7,900 1,103.62 3,300 6,990 8,490 9,000 1,500
mileage_km 2,648 137,674 134,000 44,790.69 125 107,000 165,000 380,000 58,000
year_model 2,648 2,017 2,017 1.36 2,014 2,016 2,018 2,024 2
age_years 2,648 8.7 9.0 1.36 2.0 8.0 10.0 12.0 2.0
km_per_year 2,648 16,120.3 15,714.3 5,720.02 17.9 12,193.6 19,600.0 54,285.7 7,406.4
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 15%, σ = 1,104)
→ Étendue : [3,300 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 33%, σ = 44,791)
→ Étendue : [125 ; 380,000] (IQR = 58,000)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 1)
→ Étendue : [2,014 ; 2,024] (IQR = 2)
📌 age_years :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 16%, σ = 1)
→ Étendue : [2 ; 12] (IQR = 2)
📌 km_per_year :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 35%, σ = 5,720)
→ Étendue : [18 ; 54,286] (IQR = 7,406)
======================================================================
2026-03-22 20:02:25,668 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-22 20:02:25,668 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2014 53 6,972 7,200 N/A
2015 55 7,319 7,600 -5.0%
2016 762 7,293 7,500 +0.4%
2017 702 7,613 7,800 -4.4%
2018 575 7,718 7,980 -1.4%
2019 356 7,967 8,050 -3.2%
2020 112 8,287 8,545 -4.0%
2021 25 8,344 8,490 -0.7%
2022 6 8,838 8,930 -5.9%
2024 2 8,000 8,000 +9.5%
📌 Décote annuelle moyenne : -1.6%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 10 7,363 6,970 N/A
20-50k 17 8,119 8,500 +10.3%
50-80k 167 8,200 8,490 +1.0%
80-120k 824 7,996 8,000 -2.5%
120-160k 846 7,901 7,990 -1.2%
160-200k 539 7,145 7,000 -9.6%
200k+ 245 5,911 5,800 -17.3%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
2 2 8,000 N/A
4 6 8,838 +10.5%
5 25 8,344 -5.6%
6 112 8,287 -0.7%
7 356 7,967 -3.9%
8 575 7,718 -3.1%
9 702 7,613 -1.4%
10 762 7,293 -4.2%
11 55 7,319 +0.4%
12 53 6,972 -4.7%
📌 La décote ralentit significativement à 6 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
autre 3 7,630 6,990
diesel 1447 7,465 7,700
essence 1197 7,786 7,990
📌 Carburant avec prix médian le plus élevé : essence (7,990€)
📌 Carburant avec prix médian le plus bas : autre (6,990€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 1726 7,448 7,600
pro 922 7,915 7,990
📌 Test Mann-Whitney (médiane) : p = 0.0000
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +390€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (clio_4) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/clio_4/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
10k : décote -0.5% (n= 2)
20k : décote -16.7% (n= 5)
30k : décote 1.6% (n= 6)
40k : décote 13.9% (n= 6) ⚡
50k : décote -11.6% (n= 34)
60k : décote -2.4% (n= 50)
70k : décote 2.9% (n= 83)
80k : décote -0.9% (n=125)
90k : décote 0.8% (n=198)
100k : décote 2.6% (n=214)
110k : décote 0.4% (n=287)
120k : décote -2.1% (n=209)
130k : décote 1.4% (n=215)
140k : décote 0.5% (n=220)
150k : décote 2.4% (n=202)
160k : décote 4.0% (n=172)
170k : décote 1.9% (n=151)
180k : décote 3.7% (n=113)
190k : décote 4.1% (n=103)
200k : décote 6.4% (n= 96)
210k : décote 3.1% (n= 48)
220k : décote -3.9% (n= 22)
230k : décote 12.4% (n= 31) ⚡
240k : décote 3.8% (n= 8)
250k : décote 1.8% (n= 15)
260k : décote -3.8% (n= 4)
270k : décote 15.3% (n= 4) ⚡
280k : décote -14.2% (n= 6)
290k : décote 16.5% (n= 6) ⚡
300k+ : décote -10.5% (n= 5)
📌 Seuils où la décote s'accélère (> 8%) :
→ 40k km : 13.9%
→ 230k km : 12.4%
→ 270k km : 15.3%
→ 290k km : 16.5%
✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
4 ans : décote -10.5% (n= 6) 🐢 LENTE
5 ans : décote 5.6% (n= 25)
6 ans : décote 0.7% (n=112) 🐢 LENTE
7 ans : décote 3.9% (n=356)
8 ans : décote 3.1% (n=575)
9 ans : décote 1.4% (n=702) 🐢 LENTE
10 ans : décote 4.2% (n=762)
11 ans : décote -0.4% (n= 55) 🐢 LENTE
12 ans : décote 4.7% (n= 53)
📌 Décote lente (< 5% par an) :
→ 4 ans : -10.5%
→ 6 ans : 0.7%
→ 7 ans : 3.9%
→ 8 ans : 3.1%
→ 9 ans : 1.4%
→ 10 ans : 4.2%
→ 11 ans : -0.4%
→ 12 ans : 4.7%
✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -174.60 × âge + -0.0129 × km + 10,911
📌 R² = 0.340
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 158 ( 6.0%)
👍 Bonne affaire : 337 ( 12.7%)
📊 Prix marché : 1648 ( 62.2%)
💰 Cher : 426 ( 16.1%)
🔴 Très cher : 79 ( 3.0%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3139618502] Renault Clio 4 estate accidenté
Prix: 3,300€ | Attendu: 7,821€ | Écart: -57.8% | Année: 2018 | Km: 131,159
2. [3147790884] Clio 4 phase 2
Prix: 3,500€ | Attendu: 7,836€ | Écart: -55.3% | Année: 2018 | Km: 130,000
3. [3165548491] Renault clio 4
Prix: 3,500€ | Attendu: 7,468€ | Écart: -53.1% | Année: 2017 | Km: 145,000
4. [3150016687] Clio 4
Prix: 4,000€ | Attendu: 7,771€ | Écart: -48.5% | Année: 2016 | Km: 108,000
5. [3162715888] Clio 4 2018
Prix: 4,700€ | Attendu: 8,998€ | Écart: -47.8% | Année: 2018 | Km: 40,000
6. [3154311236] Renault Clio 4 1.5 dCi 2016 – Diesel – Société – 1
Prix: 3,800€ | Attendu: 7,190€ | Écart: -47.1% | Année: 2016 | Km: 153,000
7. [3147329929] Clio 4
Prix: 4,000€ | Attendu: 7,525€ | Écart: -46.8% | Année: 2014 | Km: 100,000
8. [3144664626] Clio 4 retour de vol
Prix: 4,800€ | Attendu: 8,979€ | Écart: -46.5% | Année: 2019 | Km: 55,000
9. [3161045630] Clio 4 75ch
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 4,000€ | Attendu: 6,983€ | Écart: -42.7% | Année: 2016 | Km: 169,000
10. [3138542846] Clio 4 essence retour vol
Prix: 4,500€ | Attendu: 7,700€ | Écart: -41.6% | Année: 2015 | Km: 100,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3147178650] 🚗 Renault Clio 4 en très bon état
Prix: 7,000€ | Attendu: 4,782€ | Écart: +46.4% | Année: 2019 | Km: 380,000
2. [3163754314] Clio 4 initiale paris
Prix: 8,900€ | Attendu: 6,583€ | Écart: +35.2% | Année: 2016 | Km: 200,000
3. [3161126708] RENAULT CLIO IV dCi 110 Initiale Paris | FULL OPTI
Prix: 8,990€ | Attendu: 6,667€ | Écart: +34.8% | Année: 2017 | Km: 207,000
4. [3165923653] RENAULT CLIO IV BUSINESS dCi 90 Energy eco2 82g Bu
Prix: 8,990€ | Attendu: 7,009€ | Écart: +28.3% | Année: 2016 | Km: 166,990
5. [3144046817] Clio 5
Prix: 9,000€ | Attendu: 7,042€ | Écart: +27.8% | Année: 2019 | Km: 205,000
6. [3151967791] Clio 4 initiale Paris
Prix: 8,900€ | Attendu: 6,964€ | Écart: +27.8% | Année: 2017 | Km: 184,000
7. [3155921737] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,653€ | Écart: +27.6% | Année: 2016 | Km: 194,600
8. [3155418369] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,653€ | Écart: +27.6% | Année: 2016 | Km: 194,600
9. [3151279318] Clio 4 ÉDITION ONE
Prix: 8,899€ | Attendu: 7,006€ | Écart: +27.0% | Année: 2016 | Km: 167,264
10. [3136191420] Clio IV
Prix: 7,490€ | Attendu: 5,899€ | Écart: +27.0% | Année: 2018 | Km: 280,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 12 annonces avec prix suspect
💾 12 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 2649
Récupération de la page 1/2 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=toyota+yaris&price=3000-9000®date=2016-max&gearbox=1&seats=5%2C4&u_car_brand=TOYOTA&order=asc&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_yaris_20260322_200227.csv réussi.
Récupération de la page 2/2 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=toyota+yaris&price=3000-9000®date=2016-max&gearbox=1&seats=5%2C4&u_car_brand=TOYOTA&order=asc&page=2
→ 15 annonces récupérées (total en mémoire: 50)
Export de 50 annonces vers /home/ubuntu/app/leboncoin_ads_yaris_20260322_200227.csv réussi.
Terminé : 50 annonces au total dans /home/ubuntu/app/leboncoin_ads_yaris_20260322_200227.csv
INFO: Model override : yaris
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_yaris_20260322_200227.csv
✅ 50 lus, 50 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 50 lus, 50 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6548 annonces en base
════════════════════════════════════════════════════════════
INFO: 50 list_id lus dans le CSV.
INFO: 51 annonces actives en base pour toyota yaris.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_yaris_20260322_200227.csv
Brand : toyota | Modèle : yaris
════════════════════════════════════════════════════════════
Annonces dans le CSV : 50
Annonces actives en DB : 51
Absentes du crawl : 1
Marquées indisponibles : 1
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/yaris/figures
🔍 Modèle filtré : yaris
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 112 annonces chargées (modèle 'yaris')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 112
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 3149141739 TOYOTA YARIS 69 VVT-i Active 7490 2015 132826 essence toyota yaris pro 2026-02-22 05:48:49
1 3045595309 Toyota Yaris 69 VVT-I DYNAMIC 5P 8200 2015 110000 essence toyota yaris pro 2025-08-25 15:40:00
2 3122430376 TOYOTA YARIS 1.3 VVT-i 69 CH TENDANCE 6990 2015 134360 essence toyota yaris pro 2026-01-04 17:35:29
3 3151345668 Toyota Yaris 2500 2016 150000 diesel toyota yaris private 2026-02-25 20:06:54
4 3152706239 Toyota yaris 7700 2017 119800 diesel toyota yaris private 2026-02-28 12:41:35
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2025-06-13 15:11:00
Dernière publication : 2026-03-22 20:20:02
Durée : 282 jours
👤 Répartition par type de vendeur :
pro : 58 (51.8%)
private : 54 (48.2%)
⛽ Répartition par carburant :
essence : 96 (85.7%)
diesel : 16 (14.3%)
🏭 Top 10 marques :
toyota : 112 (100.0%)
🧮 Création des colonnes calculées...
✅ Colonnes ajoutées : age_years, km_per_year, price_per_km
🧹 Nettoyage des données...
📊 Rapport de nettoyage :
prix_aberrants : 0 lignes supprimées
km_aberrants : 0 lignes supprimées
annee_aberrante : 0 lignes supprimées
age_negatif : 0 lignes supprimées
─────────────────────────────────────────────
Total supprimé : 0
Restantes : 112 / 112
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 1 outliers (0.9%)
Bornes IQR : [4,650 ; 11,450]
mileage_km : 2 outliers (1.8%)
Bornes IQR : [21,153 ; 219,708]
age_years : 2 outliers (1.8%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 4 (3.6%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 112
Dont outliers identifiés : 4
Annonces non-outliers : 108
Plages de valeurs :
price_eur : [ 2,500 ; 9,000] (moy: 7,896)
mileage_km : [ 150 ; 200,000] (moy: 117,969)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 15 ; 143,200] (moy: 13,998)
💾 112 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 1 signaux de suspicion détectés
km_trop_bas_essence: 1
💾 1 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 112 7895.660714 8000.00 1152.549454 2500.0 7200.000000 8900.00 9000.0 1700.000000
mileage_km 112 117968.553571 118720.00 37535.323502 150.0 95611.250000 145250.00 200000.0 49638.750000
year_model 112 2016.839286 2016.00 1.602664 2015.0 2016.000000 2018.00 2025.0 2.000000
age_years 112 9.160714 10.00 1.602664 1.0 8.000000 10.00 11.0 2.000000
km_per_year 112 13997.990825 12881.05 13006.983757 15.0 9882.821429 14930.25 143200.0 5047.428571
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 112 7,896 8,000 1,152.55 2,500 7,200 8,900 9,000 1,700
mileage_km 112 117,969 118,720 37,535.32 150 95,611 145,250 200,000 49,639
year_model 112 2,017 2,016 1.60 2,015 2,016 2,018 2,025 2
age_years 112 9.2 10.0 1.60 1.0 8.0 10.0 11.0 2.0
km_per_year 112 13,998.0 12,881.0 13,006.98 15.0 9,882.8 14,930.2 143,200.0 5,047.4
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 15%, σ = 1,153)
→ Étendue : [2,500 ; 9,000] (IQR = 1,700)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 32%, σ = 37,535)
→ Étendue : [150 ; 200,000] (IQR = 49,639)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 2)
→ Étendue : [2,015 ; 2,025] (IQR = 2)
📌 age_years :
→ Distribution asymétrique GAUCHE (moyenne 9 < médiane 10)
Quelques valeurs basses tirent la moyenne vers le bas.
→ Faible dispersion (CV = 17%, σ = 2)
→ Étendue : [1 ; 11] (IQR = 2)
📌 km_per_year :
→ Distribution asymétrique DROITE (moyenne 13,998 > médiane 12,881)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ FORTE dispersion (CV = 93%, σ = 13,007)
→ Étendue : [15 ; 143,200] (IQR = 5,047)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
2026-03-22 20:02:35,005 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-22 20:02:35,006 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
---------------------------------------------------------------------------
2015 16 7,880 7,980 N/A
2016 44 7,592 7,990 +3.7%
2017 22 8,250 8,495 -8.7%
2018 14 8,089 8,500 +2.0%
2019 12 8,443 8,745 -4.4%
2020 2 8,840 8,840 -4.7%
📌 Décote annuelle moyenne : -2.4%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 2 6,125 6,125 N/A
20-50k 2 8,840 8,840 +44.3%
50-80k 13 8,724 8,990 -1.3%
80-120k 40 8,210 8,490 -5.9%
120-160k 40 7,701 7,990 -6.2%
160-200k 14 7,001 6,990 -9.1%
200k+ 1 6,500 6,500 -7.2%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
6 2 8,840 N/A
7 12 8,443 -4.5%
8 14 8,089 -4.2%
9 22 8,250 +2.0%
10 44 7,592 -8.0%
11 16 7,880 +3.8%
📌 La décote ralentit significativement à 11 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 16 7,622 8,000
essence 96 7,941 8,100
📌 Carburant avec prix médian le plus élevé : essence (8,100€)
📌 Carburant avec prix médian le plus bas : diesel (8,000€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 54 7,566 7,950
pro 58 8,203 8,490
📌 Test Mann-Whitney (médiane) : p = 0.0182
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +540€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (yaris) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/yaris/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
60k : décote 0.0% (n= 8)
70k : décote 1.0% (n= 3)
80k : décote 3.6% (n= 4)
90k : décote -1.8% (n= 12)
100k : décote 4.7% (n= 12)
110k : décote 1.4% (n= 12)
120k : décote -4.1% (n= 9)
130k : décote 4.7% (n= 9)
140k : décote 6.1% (n= 15)
150k : décote 3.7% (n= 7)
160k : décote -2.8% (n= 4)
170k : décote 5.8% (n= 8)
180k : décote 6.9% (n= 2)
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
7 ans : décote 4.5% (n= 12)
8 ans : décote 4.2% (n= 14)
9 ans : décote -2.0% (n= 22) 🐢 LENTE
10 ans : décote 8.0% (n= 44)
11 ans : décote -3.8% (n= 16) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 7 ans : 4.5%
→ 8 ans : 4.2%
→ 9 ans : -2.0%
→ 11 ans : -3.8%
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = 70.83 × âge + -0.0115 × km + 8,600
📌 R² = 0.132
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 8 ( 7.1%)
👍 Bonne affaire : 8 ( 7.1%)
📊 Prix marché : 74 ( 66.1%)
💰 Cher : 18 ( 16.1%)
🔴 Très cher : 4 ( 3.6%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3151345668] Toyota Yaris
Prix: 2,500€ | Attendu: 7,588€ | Écart: -67.1% | Année: 2016 | Km: 150,000
2. [3152322073] Toyota Yaris 1.0 VVTI PRO EXPORT (0101261)
Prix: 5,250€ | Attendu: 8,636€ | Écart: -39.2% | Année: 2023 | Km: 15,333
3. [3157660912] Toyota Yaris
Prix: 5,500€ | Attendu: 7,916€ | Écart: -30.5% | Année: 2018 | Km: 109,000
4. [3165225181] Toyota yaris
Prix: 5,300€ | Attendu: 7,358€ | Écart: -28.0% | Année: 2016 | Km: 170,000
5. [3166534631] Toyota yaris
Prix: 5,300€ | Attendu: 7,358€ | Écart: -28.0% | Année: 2016 | Km: 170,000
6. [3157975215] Toyota yaris 2011
Prix: 5,150€ | Attendu: 7,028€ | Écart: -26.7% | Année: 2025 | Km: 143,200
7. [3161632025] Toyota Yaris III - 5P - 2016
Prix: 5,500€ | Attendu: 7,473€ | Écart: -26.4% | Année: 2016 | Km: 160,000
8. [3165747251] Toyota Yaris
Prix: 7,000€ | Attendu: 9,306€ | Écart: -24.8% | Année: 2016 | Km: 150
9. [3160315775] Toyota aygo xplay
Prix: 6,399€ | Attendu: 7,997€ | Écart: -20.0% | Année: 2018 | Km: 102,000
10. [3164108049] Toyota yaris lllphase2
Prix: 6,000€ | Attendu: 7,358€ | Écart: -18.5% | Année: 2016 | Km: 170,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3157352360] Toyota Yaris III 1.5 VVT-i 110 ch – Design Y20-201
Prix: 8,900€ | Attendu: 7,089€ | Écart: +25.6% | Année: 2019 | Km: 175,000
2. [3151218398] TOYOTA Yaris 3 Phase 2 / 1.3 VVTi 16V 100 cv *Fini
Prix: 8,990€ | Attendu: 7,290€ | Écart: +23.3% | Année: 2016 | Km: 176,000
3. [3153117476] Toyota Yaris 70 VVT-i France 5p MY19
Prix: 8,990€ | Attendu: 7,408€ | Écart: +21.4% | Année: 2018 | Km: 153,356
4. [3163742160] Toyota Yaris 90 D-4D Design 5p style
Prix: 8,990€ | Attendu: 7,425€ | Écart: +21.1% | Année: 2016 | Km: 164,156
5. [3135900987] TOYOTA YARIS RC18 110 VVT-i COLLECTION
Prix: 8,990€ | Attendu: 7,618€ | Écart: +18.0% | Année: 2018 | Km: 135,000
6. [3151923222] Toyota Yaris 110 VVT-i Design Y20 5p RC19
Prix: 8,990€ | Attendu: 7,642€ | Écart: +17.6% | Année: 2019 | Km: 126,787
7. [3006906577] Toyota Yaris III 69 VVT-i France
Prix: 8,990€ | Attendu: 7,694€ | Écart: +16.8% | Année: 2016 | Km: 140,770
8. [3146935741] Toyota Yaris 1.4 D-4D 90 Business
Prix: 8,990€ | Attendu: 7,756€ | Écart: +15.9% | Année: 2017 | Km: 129,178
9. [3154060767] Toyota yaris
Prix: 9,000€ | Attendu: 7,791€ | Écart: +15.5% | Année: 2017 | Km: 126,126
10. [3154999177] Toyota Yaris 1.4 l D4D
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 8,900€ | Attendu: 7,792€ | Écart: +14.2% | Année: 2016 | Km: 132,200
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 1 annonces avec prix suspect
💾 1 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 112
Récupération de la page 1/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000®date=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260322_200236.csv réussi.
Récupération de la page 2/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000®date=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260322_200236.csv réussi.
Récupération de la page 3/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000®date=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=3
→ 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260322_200236.csv réussi.
Récupération de la page 4/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000®date=2016-max&gearbox=1&seats=5%2C4&u_car_brand=HYUNDAI&u_car_model=HYUNDAI_i20&order=asc&page=4
→ 17 annonces récupérées (total en mémoire: 122)
Export de 122 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260322_200236.csv réussi.
Terminé : 122 annonces au total dans /home/ubuntu/app/leboncoin_ads_i20_20260322_200236.csv
INFO: Model override : i20
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_i20_20260322_200236.csv
✅ 122 lus, 122 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 122 lus, 122 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6550 annonces en base
════════════════════════════════════════════════════════════
INFO: 121 list_id lus dans le CSV.
INFO: 121 annonces actives en base pour hyundai i20.
INFO: Aucune annonce manquante — toutes présentes dans le crawl.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_i20_20260322_200236.csv
Brand : hyundai | Modèle : i20
════════════════════════════════════════════════════════════
Annonces dans le CSV : 121
Annonces actives en DB : 121
Absentes du crawl : 0
Marquées indisponibles : 0
════════════════════════════════════════════════════════════
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/i20/figures
🔍 Modèle filtré : i20
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 233 annonces chargées (modèle 'i20')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 233
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 3068840554 HYUNDAI i20 1.2 Initia 8990 2020 91000 essence hyundai i20 pro 2025-10-04 11:09:00
1 3150341430 Hyundai i20 1.2 75 Initia 8990 2019 93859 essence hyundai i20 pro 2026-02-24 00:06:00
2 3142118035 Hyundai i20 1.6 CRDI - 16V TURBO 7990 2016 129000 diesel hyundai i20 pro 2026-02-09 11:27:08
3 3144114421 Hyundai I20 1.0 T-GDI 100CH INTUITIVE 8490 2019 138310 essence hyundai i20 pro 2026-02-13 02:48:08
4 3143181277 GARANTIE 12 MOIS / Crit'air 1 / HYUNAI I20 8990 2015 59700 essence hyundai i20 pro 2026-02-11 10:52:53
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2025-04-14 15:12:00
Dernière publication : 2026-03-22 16:29:35
Durée : 342 jours
👤 Répartition par type de vendeur :
private : 131 (56.2%)
pro : 102 (43.8%)
⛽ Répartition par carburant :
essence : 188 (80.7%)
diesel : 44 (18.9%)
autre : 1 (0.4%)
🏭 Top 10 marques :
hyundai : 233 (100.0%)
🧮 Création des colonnes calculées...
✅ Colonnes ajoutées : age_years, km_per_year, price_per_km
🧹 Nettoyage des données...
📊 Rapport de nettoyage :
prix_aberrants : 0 lignes supprimées
km_aberrants : 0 lignes supprimées
annee_aberrante : 0 lignes supprimées
age_negatif : 0 lignes supprimées
─────────────────────────────────────────────
Total supprimé : 0
Restantes : 233 / 233
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 2 outliers (0.9%)
Bornes IQR : [4,750 ; 10,750]
mileage_km : 6 outliers (2.6%)
Bornes IQR : [26,500 ; 217,700]
age_years : 2 outliers (0.9%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 8 (3.4%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 233
Dont outliers identifiés : 8
Annonces non-outliers : 225
Plages de valeurs :
price_eur : [ 3,800 ; 9,000] (moy: 7,786)
mileage_km : [ 95 ; 230,567] (moy: 121,482)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 12 ; 24,308] (moy: 13,359)
💾 233 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 3 signaux de suspicion détectés
km_trop_bas_diesel: 2
km_trop_bas_essence: 1
💾 3 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 233 7785.725322 7990.0 1068.513507 3800.000 7000.0 8500.0 9000.000000 1500.0
mileage_km 233 121481.540773 124500.0 37672.846563 95.000 98200.0 146000.0 230567.000000 47800.0
year_model 233 2016.806867 2017.0 1.352375 2015.000 2016.0 2018.0 2025.000000 2.0
age_years 233 9.193133 9.0 1.352375 1.000 8.0 10.0 11.000000 2.0
km_per_year 233 13358.817977 13284.2 4225.222793 11.875 10400.0 16350.0 24308.166667 5950.0
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 233 7,786 7,990 1,068.51 3,800 7,000 8,500 9,000 1,500
mileage_km 233 121,482 124,500 37,672.85 95 98,200 146,000 230,567 47,800
year_model 233 2,017 2,017 1.35 2,015 2,016 2,018 2,025 2
age_years 233 9.2 9.0 1.35 1.0 8.0 10.0 11.0 2.0
km_per_year 233 13,358.8 13,284.2 4,225.22 11.9 10,400.0 16,350.0 24,308.2 5,950.0
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,069)
→ Étendue : [3,800 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 31%, σ = 37,673)
→ Étendue : [95 ; 230,567] (IQR = 47,800)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 1)
→ Étendue : [2,015 ; 2,025] (IQR = 2)
📌 age_years :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 15%, σ = 1)
→ Étendue : [1 ; 11] (IQR = 2)
📌 km_per_year :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 32%, σ = 4,225)
→ Étendue : [12 ; 24,308] (IQR = 5,950)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2026-03-22 20:02:51,166 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-22 20:02:51,167 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2015 25 7,574 7,800 N/A
2016 91 7,620 7,900 -0.6%
2017 58 7,645 7,945 -0.3%
2018 37 8,169 8,500 -6.9%
2019 15 8,361 8,490 -2.4%
2020 5 8,684 8,980 -3.9%
📌 Décote annuelle moyenne : -2.8%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 3 7,800 8,900 N/A
20-50k 6 8,212 8,240 +5.3%
50-80k 24 8,539 8,725 +4.0%
80-120k 74 8,174 8,490 -4.3%
120-160k 89 7,772 7,900 -4.9%
160-200k 33 6,526 6,000 -16.0%
200k+ 4 6,148 6,050 -5.8%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
6 5 8,684 N/A
7 15 8,361 -3.7%
8 37 8,169 -2.3%
9 58 7,645 -6.4%
10 91 7,620 -0.3%
11 25 7,574 -0.6%
📌 La décote ralentit significativement à 10 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 44 7,188 7,290
essence 188 7,923 8,000
📌 Carburant avec prix médian le plus élevé : essence (8,000€)
📌 Carburant avec prix médian le plus bas : diesel (7,290€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 131 7,659 7,900
pro 102 7,948 7,994
📌 Test Mann-Whitney (médiane) : p = 0.0983
❌ Différence NON significative (p >= 0.05)
📌 Écart médian Pro - Particulier : +94€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (i20) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/i20/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
40k : décote -6.1% (n= 5)
50k : décote -5.6% (n= 2)
60k : décote 4.2% (n= 10)
70k : décote -3.3% (n= 12)
80k : décote 2.9% (n= 7)
90k : décote 0.6% (n= 22)
100k : décote 2.5% (n= 28)
110k : décote 2.5% (n= 17)
120k : décote 3.7% (n= 27)
130k : décote -1.5% (n= 26)
140k : décote -1.3% (n= 23)
150k : décote -1.1% (n= 13)
160k : décote 6.7% (n= 14)
170k : décote 22.5% (n= 13) ⚡
180k : décote -8.0% (n= 5)
200k : décote 2.4% (n= 2)
📌 Seuils où la décote s'accélère (> 8%) :
→ 170k km : 22.5%
✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
7 ans : décote 3.7% (n= 15)
8 ans : décote 2.3% (n= 37) 🐢 LENTE
9 ans : décote 6.4% (n= 58)
10 ans : décote 0.3% (n= 91) 🐢 LENTE
11 ans : décote 0.6% (n= 25) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 7 ans : 3.7%
→ 8 ans : 2.3%
→ 10 ans : 0.3%
→ 11 ans : 0.6%
✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -116.03 × âge + -0.0129 × km + 10,417
📌 R² = 0.255
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 15 ( 6.4%)
👍 Bonne affaire : 31 ( 13.3%)
📊 Prix marché : 138 ( 59.2%)
💰 Cher : 45 ( 19.3%)
🔴 Très cher : 4 ( 1.7%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3150513139] Hyundai i20 essence
Prix: 3,800€ | Attendu: 7,775€ | Écart: -51.1% | Année: 2015 | Km: 106,000
2. [3160167161] Hyundai i20 2017
Prix: 4,000€ | Attendu: 7,814€ | Écart: -48.8% | Année: 2017 | Km: 121,054
3. [3132112485] Vend ou échange
Prix: 5,500€ | Attendu: 9,137€ | Écart: -39.8% | Année: 2015 | Km: 296
4. [3146778483] HYUNDAI i20 II 5 Portes Phase 2 1.2 i 16V 84 cv
Prix: 4,990€ | Attendu: 7,299€ | Écart: -31.6% | Année: 2018 | Km: 170,000
5. [3141044598] Hyundai i20
Prix: 5,600€ | Attendu: 7,947€ | Écart: -29.5% | Année: 2016 | Km: 101,653
6. [3154012812] Hyundai
Prix: 5,100€ | Attendu: 7,067€ | Écart: -27.8% | Année: 2016 | Km: 170,000
7. [3159144757] Hyundai i20 1.2 essence 2016 – CT OK – pneus neufs
Prix: 5,400€ | Attendu: 7,214€ | Écart: -25.1% | Année: 2016 | Km: 158,600
8. [3144748405] Hyundai i20 1.2 Go Klima RadioCD
Prix: 5,385€ | Attendu: 7,108€ | Écart: -24.2% | Année: 2017 | Km: 175,866
9. [3139554030] Hyundai i20 coupe 1.2 84 cv intuitive 3 portes
Prix: 5,500€ | Attendu: 7,209€ | Écart: -23.7% | Année: 2018 | Km: 177,000
10. [3157664571] Hyundai i20 1.1 CRDI
Prix: 5,300€ | Attendu: 6,887€ | Écart: -23.0% | Année: 2016 | Km: 184,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3105795045] HYUNDAI I20 Coupé 1.0 TGDi 120 CV 03/2016 1 ERE MA
Prix: 8,990€ | Attendu: 7,132€ | Écart: +26.1% | Année: 2016 | Km: 165,000
2. [3164886925] Hyundai i20 Coupé
Prix: 9,000€ | Attendu: 7,376€ | Écart: +22.0% | Année: 2017 | Km: 155,000
3. [3158481657] Hyundai i20
Prix: 8,900€ | Attendu: 7,394€ | Écart: +20.4% | Année: 2016 | Km: 144,600
4. [3109227704] Hyundai i20 crdi 75ch edition navy
Prix: 8,900€ | Attendu: 7,413€ | Écart: +20.1% | Année: 2017 | Km: 152,154
5. [3152500439] Hyundai i20 1.0 T-GDi 100 UEFA EURO 2016
Prix: 8,489€ | Attendu: 7,242€ | Écart: +17.2% | Année: 2016 | Km: 156,400
6. [3151384014] Hyundai i20
Prix: 8,500€ | Attendu: 7,299€ | Écart: +16.5% | Année: 2015 | Km: 143,000
7. [2972084163] HYUNDAI I20 1.2i - 84 BERLINE Initia
Prix: 8,990€ | Attendu: 7,737€ | Écart: +16.2% | Année: 2015 | Km: 109,000
8. [3155001248] Vente voiture hyundai i20
Prix: 8,500€ | Attendu: 7,325€ | Écart: +16.0% | Année: 2018 | Km: 168,000
9. [3140396976] HYUNDAI i20 1.1 CRDi 75 Intuitive
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 8,900€ | Attendu: 7,698€ | Écart: +15.6% | Année: 2016 | Km: 121,000
10. [3164815335] Hyundai I20 1.2 84 GO NAVI
Prix: 8,990€ | Attendu: 7,841€ | Écart: +14.7% | Année: 2016 | Km: 109,939
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 2 annonces avec prix suspect
💾 2 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 233
Récupération de la page 1/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 2/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 3/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=3
→ 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 4/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=4
→ 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 5/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=5
→ 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 6/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=6
→ 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 7/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=7
→ 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 8/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=8
→ 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 9/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=9
→ 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Récupération de la page 10/10 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=CITROEN&u_utility_model=CITROEN_Berlingo&page=10
→ 15 annonces récupérées (total en mémoire: 330)
Export de 330 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv réussi.
Terminé : 330 annonces au total dans /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv
INFO: Model override : berlingo
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_berlingo_20260322_200252.csv
✅ 330 lus, 330 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 330 lus, 330 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6552 annonces en base
════════════════════════════════════════════════════════════
INFO: 329 list_id lus dans le CSV.
INFO: 330 annonces actives en base pour citroen berlingo.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_berlingo_20260322_200252.csv
Brand : citroen | Modèle : berlingo
════════════════════════════════════════════════════════════
Annonces dans le CSV : 329
Annonces actives en DB : 330
Absentes du crawl : 1
Marquées indisponibles : 1
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/berlingo/figures
🔍 Modèle filtré : berlingo
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 528 annonces chargées (modèle 'berlingo')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 528
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 3137494988 Citroen berlingo xl 3 places 130 ch eat8 19990 ht 23988 2025 50 diesel citroen berlingo pro 2026-02-01 11:46:21
1 3127792883 CITROEN BERLINGO XL 950kg 1.5 BlueHDi 100ch Control BVM5 S&S 2pl - GARANTIE 6 MOIS MINIMUM 14990 2020 25000 diesel citroen berlingo pro 2026-01-14 15:23:00
2 3140287724 Berlingo XL 2019 12500 2019 70000 diesel citroen berlingo private 2026-02-06 10:22:45
3 3088625727 Citroën Berlingo BHDI 100 CLUB XL BVM 13990 2020 105583 diesel citroen berlingo pro 2025-11-07 09:24:00
4 3136059936 Berlingo xl 17000 2021 65000 diesel citroen berlingo private 2026-01-29 18:26:54
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2025-02-11 15:13:00
Dernière publication : 2026-03-22 17:43:51
Durée : 404 jours
👤 Répartition par type de vendeur :
pro : 431 (81.6%)
private : 97 (18.4%)
⛽ Répartition par carburant :
diesel : 513 (97.2%)
électrique : 10 (1.9%)
essence : 5 (0.9%)
🏭 Top 10 marques :
citroen : 528 (100.0%)
🧮 Création des colonnes calculées...
✅ Colonnes ajoutées : age_years, km_per_year, price_per_km
🧹 Nettoyage des données...
📊 Rapport de nettoyage :
prix_aberrants : 0 lignes supprimées
km_aberrants : 2 lignes supprimées
annee_aberrante : 0 lignes supprimées
age_negatif : 14 lignes supprimées
─────────────────────────────────────────────
Total supprimé : 16
Restantes : 512 / 528
Pourcentage conservé : 97.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 6 outliers (1.2%)
Bornes IQR : [199 ; 28,664]
mileage_km : 4 outliers (0.8%)
Bornes IQR : [-82,737 ; 242,006]
age_years : 3 outliers (0.6%)
Bornes IQR : [-3 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 10 (2.0%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 512
Dont outliers identifiés : 10
Annonces non-outliers : 502
Plages de valeurs :
price_eur : [ 2,800 ; 38,190] (moy: 14,838)
mileage_km : [ 1 ; 309,000] (moy: 83,696)
year_model : [ 2,009 ; 2,025] (moy: 2,021)
age_years : [ 1 ; 17] (moy: 5)
km_per_year : [ 1 ; 56,667] (moy: 14,136)
💾 512 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 6 signaux de suspicion détectés
km_trop_bas_diesel: 6
💾 6 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 512 14837.548828 13695.000000 5777.234196 2800.0 10873.75 17990.000 38190.000000 7116.250
mileage_km 512 83695.763672 85825.000000 57485.292303 1.0 39041.25 120227.000 309000.000000 81185.750
year_model 512 2020.667969 2020.000000 2.729686 2009.0 2019.00 2023.000 2025.000000 4.000
age_years 512 5.332031 6.000000 2.729686 1.0 3.00 7.000 17.000000 4.000
km_per_year 512 14135.653793 14456.333333 9234.552412 1.0 8468.75 19538.875 56666.666667 11070.125
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 512 14,838 13,695 5,777.23 2,800 10,874 17,990 38,190 7,116
mileage_km 512 83,696 85,825 57,485.29 1 39,041 120,227 309,000 81,186
year_model 512 2,021 2,020 2.73 2,009 2,019 2,023 2,025 4
age_years 512 5.3 6.0 2.73 1.0 3.0 7.0 17.0 4.0
km_per_year 512 14,135.7 14,456.3 9,234.55 1.0 8,468.8 19,538.9 56,666.7 11,070.1
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 14,838 > médiane 13,695)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 39%, σ = 5,777)
→ Étendue : [2,800 ; 38,190] (IQR = 7,116)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ FORTE dispersion (CV = 69%, σ = 57,485)
→ Étendue : [1 ; 309,000] (IQR = 81,186)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 3)
→ Étendue : [2,009 ; 2,025] (IQR = 4)
📌 age_years :
→ Distribution asymétrique GAUCHE (moyenne 5 < médiane 6)
Quelques valeurs basses tirent la moyenne vers le bas.
→ FORTE dispersion (CV = 51%, σ = 3)
→ Étendue : [1 ; 17] (IQR = 4)
📌 km_per_year :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ FORTE dispersion (CV = 65%, σ = 9,235)
→ Étendue : [1 ; 56,667] (IQR = 11,070)
2026-03-22 20:03:25,875 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-22 20:03:25,875 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2009 2 4,800 4,800 N/A
2013 2 6,850 6,850 -42.7%
2014 2 9,345 9,345 -36.4%
2016 12 8,057 8,200 +13.8%
2017 33 8,908 8,940 -10.6%
2018 59 10,179 9,490 -14.3%
2019 59 12,076 11,988 -18.6%
2020 95 13,157 12,690 -8.9%
2021 65 14,236 13,800 -8.2%
2022 51 14,714 14,500 -3.4%
2023 39 18,103 17,900 -23.0%
2024 20 21,073 20,235 -16.4%
2025 72 24,898 24,480 -18.2%
📌 Décote annuelle moyenne : -15.6%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 95 23,774 23,900 N/A
20-50k 55 17,427 17,760 -26.7%
50-80k 84 15,282 15,990 -12.3%
80-120k 141 12,546 12,590 -17.9%
120-160k 89 10,516 10,490 -16.2%
160-200k 36 8,738 8,915 -16.9%
200k+ 12 6,388 6,000 -26.9%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
1 72 24,898 N/A
2 20 21,073 -15.4%
3 39 18,103 -14.1%
4 51 14,714 -18.7%
5 65 14,236 -3.2%
6 95 13,157 -7.6%
7 59 12,076 -8.2%
8 59 10,179 -15.7%
9 33 8,908 -12.5%
10 12 8,057 -9.6%
12 2 9,345 +16.0%
13 2 6,850 -26.7%
17 2 4,800 -29.9%
📌 La décote ralentit significativement à 5 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 498 14,840 13,695
essence 5 11,744 9,990
électrique 9 16,439 15,990
📌 Carburant avec prix médian le plus élevé : électrique (15,990€)
📌 Carburant avec prix médian le plus bas : essence (9,990€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 96 12,351 11,650
pro 416 15,411 13,990
📌 Test Mann-Whitney (médiane) : p = 0.0000
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +2,340€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (berlingo) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/berlingo/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
10k : décote 22.6% (n= 8) ⚡
20k : décote 6.1% (n= 14)
30k : décote -0.2% (n= 23)
40k : décote 3.8% (n= 18)
50k : décote 9.1% (n= 28)
60k : décote -0.8% (n= 30)
70k : décote 4.7% (n= 26)
80k : décote 5.8% (n= 35)
90k : décote 6.1% (n= 37)
100k : décote 7.8% (n= 35)
110k : décote 9.2% (n= 34)
120k : décote 1.5% (n= 31)
130k : décote 2.5% (n= 24)
140k : décote 1.7% (n= 13)
150k : décote 2.0% (n= 21)
160k : décote 9.9% (n= 18)
170k : décote 2.5% (n= 11)
180k : décote 16.9% (n= 7) ⚡
200k : décote 7.5% (n= 5)
210k : décote -4.0% (n= 3)
300k+ : décote 32.7% (n= 2) ⚡
📌 Seuils où la décote s'accélère (> 8%) :
→ 10k km : 22.6%
→ 50k km : 9.1%
→ 110k km : 9.2%
→ 160k km : 9.9%
→ 180k km : 16.9%
→ 300k+ km : 32.7%
✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
2 ans : décote 15.4% (n= 20) ⚡ FORTE
3 ans : décote 14.1% (n= 39)
4 ans : décote 18.7% (n= 51) ⚡ FORTE
5 ans : décote 3.2% (n= 65)
6 ans : décote 7.6% (n= 95)
7 ans : décote 8.2% (n= 59)
8 ans : décote 15.7% (n= 59) ⚡ FORTE
9 ans : décote 12.5% (n= 33)
10 ans : décote 9.6% (n= 12)
12 ans : décote -16.0% (n= 2) 🐢 LENTE
13 ans : décote 26.7% (n= 2) ⚡ FORTE
17 ans : décote 29.9% (n= 2) ⚡ FORTE
📌 Décote rapide (> 10% par an) :
→ 2 ans : 15.4%
→ 3 ans : 14.1%
→ 4 ans : 18.7%
→ 8 ans : 15.7%
→ 9 ans : 12.5%
→ 13 ans : 26.7%
→ 17 ans : 29.9%
📌 Décote lente (< 5% par an) :
→ 5 ans : 3.2%
→ 12 ans : -16.0%
✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -931.03 × âge + -0.0502 × km + 24,005
📌 R² = 0.773
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 46 ( 9.0%)
👍 Bonne affaire : 91 ( 17.9%)
📊 Prix marché : 262 ( 51.5%)
💰 Cher : 53 ( 10.4%)
🔴 Très cher : 57 ( 11.2%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3156231773] Citroën Berlingo XL BLUEHDI 100 S&S ETG6 CLUB
Prix: 3,000€ | Attendu: 9,955€ | Écart: -69.9% | Année: 2018 | Km: 131,461
2. [3156023107] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
Prix: 8,000€ | Attendu: 16,405€ | Écart: -51.2% | Année: 2021 | Km: 58,647
3. [3158805212] EZ-923 Citroen BERLINGO XL TOLLÉE L2 1.6 BLUEHDI 1
Prix: 7,990€ | Attendu: 16,096€ | Écart: -50.4% | Année: 2018 | Km: 9,173
4. [3144063650] Citroën Berlingo 1.5 BLUEDHI 100 STE XL DRIVER
Prix: 8,000€ | Attendu: 15,904€ | Écart: -49.7% | Année: 2022 | Km: 87,146
5. [3156192309] Citroën Berlingo FOURGON XL BLUEHDI 100 S&S ETG6 C
Prix: 2,800€ | Attendu: 5,380€ | Écart: -48.0% | Année: 2017 | Km: 203,997
6. [3156023444] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 8,000€ | Attendu: 15,167€ | Écart: -47.3% | Année: 2021 | Km: 83,293
7. [3157282073] Citroen berlingo xl 1.6 bluehdi 100 cv club
Prix: 5,980€ | Attendu: 11,114€ | Écart: -46.2% | Année: 2018 | Km: 108,380
8. [3163320492] Citroën Berlingo VAN XL 950 PURETECH 130 S&S EAT8
Prix: 8,250€ | Attendu: 14,974€ | Écart: -44.9% | Année: 2020 | Km: 68,597
9. [2984931973] Citroën Berlingo Electrique Taille XL Club
Prix: 8,590€ | Attendu: 15,269€ | Écart: -43.7% | Année: 2018 | Km: 25,657
10. [3156133024] Citroën berlingo xl électrique confort isotherme T
Prix: 7,990€ | Attendu: 13,694€ | Écart: -41.7% | Année: 2018 | Km: 57,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3153561957] Citroën Berlingo XL 1.6 BlueHDI 100 Cabine Approfo
Prix: 6,000€ | Attendu: 1,463€ | Écart: +310.2% | Année: 2017 | Km: 282,000
2. [3155307735] Citroën berlingo
Prix: 7,000€ | Attendu: 1,832€ | Écart: +282.1% | Année: 2013 | Km: 200,500
3. [3115315205] Citroën Jumpy CAB APPROFONDIE XL BLUEHDI 180 S&S E
Prix: 38,190€ | Attendu: 23,072€ | Écart: +65.5% | Année: 2025 | Km: 40
4. [3130621009] Citroen BERLINGO XL 1.6 HDI 90 ch CABINE APPROFOND
Prix: 11,490€ | Attendu: 7,007€ | Écart: +64.0% | Année: 2014 | Km: 116,000
5. [3148392923] CITROEN BERLINGO 1.5 BlueHDi S&S - 130 XL Feel 7 P
Prix: 19,990€ | Attendu: 12,338€ | Écart: +62.0% | Année: 2018 | Km: 84,000
6. [3140204221] Citroen Berlingo Van XL BlueHDi 100 S&S Cabine App
Prix: 9,490€ | Attendu: 5,864€ | Écart: +61.8% | Année: 2018 | Km: 212,912
7. [3097892706] Citroën Berlingo CABINE APPROFONDIE CA TAILLE XL B
Prix: 37,140€ | Attendu: 23,074€ | Écart: +61.0% | Année: 2025 | Km: 1
8. [3158708742] Berlingo XL 1.6L bluehdi aménagé
Prix: 15,000€ | Attendu: 10,028€ | Écart: +49.6% | Année: 2018 | Km: 130,000
9. [3156325212] À vendre - Citroën Berlingo rallongée - Boîte auto
Prix: 9,500€ | Attendu: 6,358€ | Écart: +49.4% | Année: 2016 | Km: 166,000
10. [3144316655] Citroën Berlingo XL / Rallongé - 1.6 HDI 90cv - BV
Prix: 6,700€ | Attendu: 4,619€ | Écart: +45.0% | Année: 2013 | Km: 145,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 12 annonces avec prix suspect
💾 12 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 528
Récupération de la page 1/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000®date=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv réussi.
Récupération de la page 2/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000®date=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv réussi.
Récupération de la page 3/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000®date=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=3
→ 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv réussi.
Récupération de la page 4/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000®date=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=4
→ 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv réussi.
Récupération de la page 5/5 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000®date=2015-max&mileage=min-150000&u_car_brand=CITROEN&seats=999999&u_car_model=CITROEN_C4%2CCITROEN_C4+Aircross%2CCITROEN_C4+Cactus%2CCITROEN_C4+Picasso%2CCITROEN_C4+SpaceTourer%2CCITROEN_C4+X&page=5
→ 25 annonces récupérées (total en mémoire: 165)
Export de 165 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv réussi.
Terminé : 165 annonces au total dans /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv
INFO: Model override : c4
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_c4_20260322_200327.csv
✅ 165 lus, 165 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 165 lus, 165 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6553 annonces en base
════════════════════════════════════════════════════════════
INFO: 165 list_id lus dans le CSV.
INFO: 167 annonces actives en base pour citroen c4.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_c4_20260322_200327.csv
Brand : citroen | Modèle : c4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 165
Annonces actives en DB : 167
Absentes du crawl : 2
Marquées indisponibles : 2
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/c4/figures
🔍 Modèle filtré : c4
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 275 annonces chargées (modèle 'c4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 275
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 3114906971 Citroen c4 spacetourer 1.2 130cv business 9500 2019 114200 essence citroen c4 pro 2026-02-17 16:35:09
1 3120070348 Citroen GRAND C4 PICASSO BLUEHDI 120CH BUSINESS + S&S 98G 9990 2015 149515 diesel citroen c4 pro 2025-12-30 11:37:00
2 3150919595 Citroen GRAND C4 SPACETOURER PURETECH 130CH S&S BUSINESS + E6.D 10990 2019 109477 essence citroen c4 pro 2026-02-25 04:59:50
3 3067498742 CITROEN C4 SPACETOURER 1.2 130 Business EAT8 7 Places / DISTRIBUTION NEUVE 10990 2019 68000 essence citroen c4 pro 2025-10-01 09:38:00
4 3034772801 Citroen C4 Grand Picasso 1.6 BLUEHDI 120 FEEL EAT BVA START-STOP 10490 2017 143000 diesel citroen c4 pro 2025-08-04 09:52:00
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2023-11-09 04:54:09
Dernière publication : 2026-03-22 17:50:06
Durée : 864 jours
👤 Répartition par type de vendeur :
pro : 141 (51.3%)
private : 134 (48.7%)
⛽ Répartition par carburant :
diesel : 153 (55.6%)
essence : 122 (44.4%)
🏭 Top 10 marques :
citroen : 275 (100.0%)
🧮 Création des colonnes calculées...
✅ Colonnes ajoutées : age_years, km_per_year, price_per_km
🧹 Nettoyage des données...
📊 Rapport de nettoyage :
prix_aberrants : 1 lignes supprimées
km_aberrants : 0 lignes supprimées
annee_aberrante : 0 lignes supprimées
age_negatif : 0 lignes supprimées
─────────────────────────────────────────────
Total supprimé : 1
Restantes : 274 / 275
Pourcentage conservé : 99.6%
🔍 Détection des outliers (méthode IQR)...
price_eur : 12 outliers (4.4%)
Bornes IQR : [6,404 ; 13,114]
mileage_km : 12 outliers (4.4%)
Bornes IQR : [66,312 ; 185,812]
age_years : 0 outliers (0.0%)
Bornes IQR : [2 ; 14]
📌 Total d'annonces outliers (au moins 1 variable) : 24 (8.8%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 274
Dont outliers identifiés : 24
Annonces non-outliers : 250
Plages de valeurs :
price_eur : [ 4,500 ; 11,000] (moy: 9,525)
mileage_km : [ 186 ; 150,000] (moy: 120,974)
year_model : [ 2,015 ; 2,022] (moy: 2,017)
age_years : [ 4 ; 11] (moy: 9)
km_per_year : [ 17 ; 37,387] (moy: 14,698)
💾 274 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 8 signaux de suspicion détectés
km_trop_bas_diesel: 7
km_trop_bas_essence: 1
💾 8 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 274 9524.967153 9990.0 1463.615312 4500.000000 8920.0 10597.500000 11000.00 1677.500000
mileage_km 274 120974.328467 129750.0 29695.076939 186.000000 111125.0 141000.000000 150000.00 29875.000000
year_model 274 2017.321168 2017.0 1.793085 2015.000000 2016.0 2019.000000 2022.00 3.000000
age_years 274 8.678832 9.0 1.793085 4.000000 7.0 10.000000 11.00 3.000000
km_per_year 274 14697.963841 14210.0 5149.628664 16.909091 12000.0 16666.666667 37386.75 4666.666667
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 274 9,525 9,990 1,463.62 4,500 8,920 10,598 11,000 1,678
mileage_km 274 120,974 129,750 29,695.08 186 111,125 141,000 150,000 29,875
year_model 274 2,017 2,017 1.79 2,015 2,016 2,019 2,022 3
age_years 274 8.7 9.0 1.79 4.0 7.0 10.0 11.0 3.0
km_per_year 274 14,698.0 14,210.0 5,149.63 16.9 12,000.0 16,666.7 37,386.8 4,666.7
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 15%, σ = 1,464)
→ Étendue : [4,500 ; 11,000] (IQR = 1,678)
📌 mileage_km :
→ Distribution asymétrique GAUCHE (moyenne 120,974 < médiane 129,750)
Quelques valeurs basses tirent la moyenne vers le bas.
→ Faible dispersion (CV = 25%, σ = 29,695)
→ Étendue : [186 ; 150,000] (IQR = 29,875)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 2)
→ Étendue : [2,015 ; 2,022] (IQR = 3)
📌 age_years :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 21%, σ = 2)
→ Étendue : [4 ; 11] (IQR = 3)
📌 km_per_year :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 35%, σ = 5,150)
→ Étendue : [17 ; 37,387] (IQR = 4,667)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
2026-03-22 20:03:46,915 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-22 20:03:46,915 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2015 52 8,889 9,000 N/A
2016 53 9,019 9,490 -1.5%
2017 53 9,754 10,200 -8.2%
2018 39 9,654 9,990 +1.0%
2019 42 10,047 10,000 -4.1%
2020 20 9,820 10,240 +2.3%
2021 13 10,521 10,700 -7.1%
2022 2 10,495 10,495 +0.2%
📌 Décote annuelle moyenne : -2.5%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 7 8,527 8,500 N/A
20-50k 1 10,980 10,980 +28.8%
50-80k 15 10,164 10,449 -7.4%
80-120k 73 9,553 9,990 -6.0%
120-160k 178 9,491 9,990 -0.6%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
4 2 10,495 N/A
5 13 10,521 +0.2%
6 20 9,820 -6.7%
7 42 10,047 +2.3%
8 39 9,654 -3.9%
9 53 9,754 +1.0%
10 53 9,019 -7.5%
11 52 8,889 -1.4%
📌 La décote ralentit significativement à 7 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 152 9,928 10,000
essence 122 9,023 9,500
📌 Carburant avec prix médian le plus élevé : diesel (10,000€)
📌 Carburant avec prix médian le plus bas : essence (9,500€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 133 9,198 9,500
pro 141 9,833 9,990
📌 Test Mann-Whitney (médiane) : p = 0.0065
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +490€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (c4) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/c4/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
60k : décote -23.9% (n= 6)
70k : décote 6.1% (n= 8)
80k : décote -1.1% (n= 10)
90k : décote 6.1% (n= 17)
100k : décote -6.6% (n= 15)
110k : décote 7.9% (n= 31)
120k : décote -5.2% (n= 41)
130k : décote 1.6% (n= 57)
140k : décote 2.9% (n= 72)
150k : décote -1.6% (n= 8)
✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
5 ans : décote -0.2% (n= 13) 🐢 LENTE
6 ans : décote 6.7% (n= 20)
7 ans : décote -2.3% (n= 42) 🐢 LENTE
8 ans : décote 3.9% (n= 39)
9 ans : décote -1.0% (n= 53) 🐢 LENTE
10 ans : décote 7.5% (n= 53)
11 ans : décote 1.4% (n= 52) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 5 ans : -0.2%
→ 7 ans : -2.3%
→ 8 ans : 3.9%
→ 9 ans : -1.0%
→ 11 ans : 1.4%
✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -252.48 × âge + -0.0013 × km + 11,879
📌 R² = 0.096
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 32 ( 11.7%)
👍 Bonne affaire : 28 ( 10.2%)
📊 Prix marché : 142 ( 51.8%)
💰 Cher : 60 ( 21.9%)
🔴 Très cher : 12 ( 4.4%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3159491862] CITROEN GRANDE C4 PICASSO 1.2 130Ch Exclusive
Prix: 4,590€ | Attendu: 9,206€ | Écart: -50.1% | Année: 2016 | Km: 110,000
2. [3144627553] Grand C4 Picasso
Prix: 4,500€ | Attendu: 8,913€ | Écart: -49.5% | Année: 2015 | Km: 140,000
3. [3148620999] C4 Picasso
Prix: 4,600€ | Attendu: 8,911€ | Écart: -48.4% | Année: 2015 | Km: 142,000
4. [3155010351] C4 Picasso
Prix: 4,600€ | Attendu: 8,911€ | Écart: -48.4% | Année: 2015 | Km: 142,000
5. [3159599228] Vends C4 Grand Picasso II 7 places
Prix: 6,000€ | Attendu: 9,677€ | Écart: -38.0% | Année: 2018 | Km: 135,000
6. [3148926526] C4 grand Picasso 2l hdi 150cv exclusive
Prix: 5,800€ | Attendu: 9,186€ | Écart: -36.9% | Année: 2016 | Km: 125,000
7. [3158296763] C4 grand Picasso 2l hdi 150 cv pack exclusive
Prix: 5,800€ | Attendu: 9,186€ | Écart: -36.9% | Année: 2016 | Km: 125,000
8. [3159003549] Vends CITROEN GRAND C4 PICASSO Intensive
Prix: 5,900€ | Attendu: 9,168€ | Écart: -35.6% | Année: 2016 | Km: 138,000
9. [3162574098] Citroën c4 Picasso 7 places
Prix: 6,000€ | Attendu: 9,195€ | Écart: -34.7% | Année: 2016 | Km: 118,000
10. [3147269001] CITROEN GRAND C4 PICASSO Spacetourer
Prix: 6,000€ | Attendu: 9,169€ | Écart: -34.6% | Année: 2016 | Km: 137,500
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3017985052] CITROEN C4 PICASSO Grand 1.6 HDi - 120 Intensive 7
Prix: 10,990€ | Attendu: 8,900€ | Écart: +23.5% | Année: 2015 | Km: 149,900
2. [3146221969] Citroen C4 Grand Picasso 7 Places - 2.0 BlueHDi 15
Prix: 10,990€ | Attendu: 8,911€ | Écart: +23.3% | Année: 2015 | Km: 142,000
3. [2934302132] Citroen Grand C4 Picasso PureTech 130ch Confort S&
Prix: 10,990€ | Attendu: 8,935€ | Écart: +23.0% | Année: 2015 | Km: 123,901
4. [3136798926] Grand C4 Picasso 120 HDI
Prix: 11,000€ | Attendu: 8,946€ | Écart: +23.0% | Année: 2015 | Km: 116,000
5. [3155706473] Citroën Grand C4 Picasso 1.6 BlueHdi 115 Intensive
Prix: 10,995€ | Attendu: 8,948€ | Écart: +22.9% | Année: 2015 | Km: 113,981
6. [3138161286] Citroën C4 PICASSO II Exclusive 2.0 BLUEHDI 150CV
Prix: 10,990€ | Attendu: 8,957€ | Écart: +22.7% | Année: 2015 | Km: 107,256
7. [3161244489] Citroën Grand C4 Picasso e-HDi 115 Exclusive ETG6
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 10,980€ | Attendu: 9,037€ | Écart: +21.5% | Année: 2015 | Km: 47,966
8. [3149154360] Grand c4
Prix: 11,000€ | Attendu: 9,157€ | Écart: +20.1% | Année: 2016 | Km: 146,230
9. [3071933719] Citroën C4 grand Picasso
Prix: 11,000€ | Attendu: 9,159€ | Écart: +20.1% | Année: 2016 | Km: 145,000
10. [3160469081] Grand C4 Picasso 7 places
Prix: 10,800€ | Attendu: 8,996€ | Écart: +20.0% | Année: 2015 | Km: 78,300
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 4 annonces avec prix suspect
💾 4 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 275
Récupération de la page 1/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000®date=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260322_200348.csv réussi.
Récupération de la page 2/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000®date=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260322_200348.csv réussi.
Récupération de la page 3/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000®date=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=3
→ 32 annonces récupérées (total en mémoire: 102)
Export de 102 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260322_200348.csv réussi.
Récupération de la page 4/4 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000®date=2015-max&mileage=min-150000&seats=999999&u_car_brand=RENAULT&page=4
Erreur lors de l'appel à l'API: 404 Client Error: Not Found for url: https://piloterr.com/api/v2/leboncoin/search?query=https%3A%2F%2Fwww.leboncoin.fr%2Frecherche%3Fcategory%3D2%26text%3Dscenic%26price%3Dmin-11000%26regdate%3D2015-max%26mileage%3Dmin-150000%26seats%3D999999%26u_car_brand%3DRENAULT%26page%3D4
Récupération de la page 1/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 2/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 3/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=3
→ 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 4/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=4
→ 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 5/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=5
→ 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 6/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=6
→ 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 7/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=7
→ 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 8/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=8
→ 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 9/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=9
→ 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 10/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=10
→ 35 annonces récupérées (total en mémoire: 350)
Export de 350 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 11/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=11
→ 35 annonces récupérées (total en mémoire: 385)
Export de 385 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 12/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=12
→ 35 annonces récupérées (total en mémoire: 420)
Export de 420 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 13/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=13
→ 35 annonces récupérées (total en mémoire: 455)
Export de 455 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 14/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=14
→ 35 annonces récupérées (total en mémoire: 490)
Export de 490 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 15/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=15
→ 35 annonces récupérées (total en mémoire: 525)
Export de 525 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 16/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=16
→ 35 annonces récupérées (total en mémoire: 560)
Export de 560 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 17/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=17
→ 35 annonces récupérées (total en mémoire: 595)
Export de 595 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 18/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=18
→ 35 annonces récupérées (total en mémoire: 630)
Export de 630 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 19/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=19
→ 35 annonces récupérées (total en mémoire: 665)
Export de 665 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 20/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=20
→ 35 annonces récupérées (total en mémoire: 700)
Export de 700 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 21/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=21
→ 35 annonces récupérées (total en mémoire: 735)
Export de 735 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 22/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=22
→ 35 annonces récupérées (total en mémoire: 770)
Export de 770 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 23/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=23
→ 35 annonces récupérées (total en mémoire: 805)
Export de 805 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 24/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=24
→ 35 annonces récupérées (total en mémoire: 840)
Export de 840 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 25/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=25
→ 35 annonces récupérées (total en mémoire: 875)
Export de 875 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 26/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=26
→ 35 annonces récupérées (total en mémoire: 910)
Export de 910 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 27/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=27
→ 35 annonces récupérées (total en mémoire: 945)
Export de 945 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 28/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=28
→ 35 annonces récupérées (total en mémoire: 980)
Export de 980 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 29/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=29
→ 35 annonces récupérées (total en mémoire: 1015)
Export de 1015 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 30/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=30
→ 35 annonces récupérées (total en mémoire: 1050)
Export de 1050 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Récupération de la page 31/31 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_brand=PEUGEOT&seats=999999&u_car_model=PEUGEOT_5008&page=31
→ 13 annonces récupérées (total en mémoire: 1063)
Export de 1063 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv réussi.
Terminé : 1063 annonces au total dans /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv
INFO: Model override : 5008
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_5008_20260322_200358.csv
✅ 1063 lus, 1063 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 1063 lus, 1063 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6575 annonces en base
════════════════════════════════════════════════════════════
INFO: 1052 list_id lus dans le CSV.
INFO: 1080 annonces actives en base pour peugeot 5008.
INFO: 28 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_5008_20260322_200358.csv
Brand : peugeot | Modèle : 5008
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1052
Annonces actives en DB : 1080
Absentes du crawl : 28
Marquées indisponibles : 28
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/5008/figures
🔍 Modèle filtré : 5008
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 1637 annonces chargées (modèle '5008')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 1637
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 3105496930 Peugeot 5008 1.6 HDI 115 ALLURE 7PL 9990 2016 145460 diesel peugeot 5008 pro 2025-12-03 14:49:00
1 3150966962 PEUGEOT 5008 1.6 BlueHDi 120ch SS BVM6 Allure 10990 2015 131475 diesel peugeot 5008 pro 2026-02-25 09:13:36
2 3076705800 PEUGEOT 5008 1.6 HDi 120ch BVM6 Style - SUIVI COMPLET 8990 2015 142500 diesel peugeot 5008 pro 2025-10-18 09:09:00
3 3035013147 Peugeot 5008 1.6 HDI 115CH FAP ALLURE 7 PLACES 8990 2015 144500 diesel peugeot 5008 pro 2025-08-04 18:43:00
4 3138259074 Peugeot 5008 GENERATION-II 1.2 PURETECH 130 ALLURE START-STOP 5990 2016 105000 essence peugeot 5008 pro 2026-02-02 14:34:28
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2024-06-06 10:10:00
Dernière publication : 2026-03-22 20:58:26
Durée : 654 jours
👤 Répartition par type de vendeur :
private : 1058 (64.6%)
pro : 579 (35.4%)
⛽ Répartition par carburant :
diesel : 1502 (91.8%)
essence : 134 (8.2%)
hybride : 1 (0.1%)
🏭 Top 10 marques :
peugeot : 1637 (100.0%)
🧮 Création des colonnes calculées...
✅ Colonnes ajoutées : age_years, km_per_year, price_per_km
🧹 Nettoyage des données...
📊 Rapport de nettoyage :
prix_aberrants : 2 lignes supprimées
km_aberrants : 0 lignes supprimées
annee_aberrante : 0 lignes supprimées
age_negatif : 0 lignes supprimées
─────────────────────────────────────────────
Total supprimé : 2
Restantes : 1635 / 1637
Pourcentage conservé : 99.9%
🔍 Détection des outliers (méthode IQR)...
price_eur : 0 outliers (0.0%)
Bornes IQR : [-350 ; 12,850]
mileage_km : 32 outliers (2.0%)
Bornes IQR : [59,250 ; 350,050]
age_years : 0 outliers (0.0%)
Bornes IQR : [5 ; 21]
📌 Total d'annonces outliers (au moins 1 variable) : 32 (2.0%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 1635
Dont outliers identifiés : 32
Annonces non-outliers : 1603
Plages de valeurs :
price_eur : [ 700 ; 11,000] (moy: 6,295)
mileage_km : [ 1 ; 410,000] (moy: 206,004)
year_model : [ 2,009 ; 2,021] (moy: 2,013)
age_years : [ 5 ; 17] (moy: 13)
km_per_year : [ 0 ; 53,776] (moy: 16,230)
💾 1635 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 18 signaux de suspicion détectés
km_trop_bas_essence: 1
km_trop_bas_diesel: 17
💾 18 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 1635 6294.600612 5990.000000 2317.513634 700.000000 4600.00000 7900.000000 11000.000000 3300.000000
mileage_km 1635 206004.314373 206100.000000 56972.360131 1.000000 168300.00000 241000.000000 410000.000000 72700.000000
year_model 1635 2012.984098 2012.000000 2.483432 2009.000000 2011.00000 2015.000000 2021.000000 4.000000
age_years 1635 13.015902 14.000000 2.483432 5.000000 11.00000 15.000000 17.000000 4.000000
km_per_year 1635 16230.323564 15714.285714 5010.213632 0.111111 13270.25641 18531.372549 53776.166667 5261.116139
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 1,635 6,295 5,990 2,317.51 700 4,600 7,900 11,000 3,300
mileage_km 1,635 206,004 206,100 56,972.36 1 168,300 241,000 410,000 72,700
year_model 1,635 2,013 2,012 2.48 2,009 2,011 2,015 2,021 4
age_years 1,635 13.0 14.0 2.48 5.0 11.0 15.0 17.0 4.0
km_per_year 1,635 16,230.3 15,714.3 5,010.21 0.1 13,270.3 18,531.4 53,776.2 5,261.1
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 6,295 > médiane 5,990)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 37%, σ = 2,318)
→ Étendue : [700 ; 11,000] (IQR = 3,300)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 28%, σ = 56,972)
→ Étendue : [1 ; 410,000] (IQR = 72,700)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 2)
→ Étendue : [2,009 ; 2,021] (IQR = 4)
📌 age_years :
→ Distribution asymétrique GAUCHE (moyenne 13 < médiane 14)
Quelques valeurs basses tirent la moyenne vers le bas.
→ Faible dispersion (CV = 19%, σ = 2)
→ Étendue : [5 ; 17] (IQR = 4)
📌 km_per_year :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 31%, σ = 5,010)
→ Étendue : [0 ; 53,776] (IQR = 5,261)
======================================================================
2026-03-22 20:05:37,680 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-22 20:05:37,681 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2009 30 4,497 4,250 N/A
2010 248 4,559 4,500 -1.4%
2011 281 4,903 4,990 -7.5%
2012 263 5,509 5,500 -12.4%
2013 202 5,896 5,595 -7.0%
2014 161 7,005 6,990 -18.8%
2015 138 7,936 7,990 -13.3%
2016 164 8,076 7,990 -1.8%
2017 62 9,718 10,000 -20.3%
2018 45 9,848 10,200 -1.3%
2019 27 10,446 10,490 -6.1%
2020 13 9,489 9,990 +9.2%
📌 Décote annuelle moyenne : -7.3%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 12 5,712 4,775 N/A
20-50k 6 6,180 5,400 +8.2%
50-80k 7 9,153 9,450 +48.1%
80-120k 51 8,824 9,490 -3.6%
120-160k 243 8,575 9,000 -2.8%
160-200k 414 7,109 6,990 -17.1%
200k+ 902 5,150 4,990 -27.6%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
6 13 9,489 N/A
7 27 10,446 +10.1%
8 45 9,848 -5.7%
9 62 9,718 -1.3%
10 164 8,076 -16.9%
11 138 7,936 -1.7%
12 161 7,005 -11.7%
13 202 5,896 -15.8%
14 263 5,509 -6.6%
15 281 4,903 -11.0%
16 248 4,559 -7.0%
17 30 4,497 -1.4%
📌 La décote ralentit significativement à 9 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 1501 6,149 5,990
essence 133 7,902 8,800
📌 Carburant avec prix médian le plus élevé : essence (8,800€)
📌 Carburant avec prix médian le plus bas : diesel (5,990€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 1057 5,861 5,500
pro 578 7,087 6,575
📌 Test Mann-Whitney (médiane) : p = 0.0000
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +1,075€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (5008) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/5008/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
20k : décote 17.2% (n= 2) ⚡
30k : décote -21.5% (n= 3)
50k : décote -62.9% (n= 2)
60k : décote -13.1% (n= 2)
70k : décote 26.8% (n= 3) ⚡
80k : décote -12.1% (n= 4)
90k : décote -0.7% (n= 11)
100k : décote -4.1% (n= 14)
110k : décote 7.7% (n= 22)
120k : décote -10.1% (n= 40)
130k : décote 0.1% (n= 51)
140k : décote 11.7% (n= 71) ⚡
150k : décote 4.2% (n= 81)
160k : décote 0.7% (n= 99)
170k : décote 5.7% (n=111)
180k : décote 10.4% (n=104) ⚡
190k : décote 2.5% (n=100)
200k : décote 4.9% (n=114)
210k : décote 2.2% (n=122)
220k : décote 4.9% (n=124)
230k : décote 7.1% (n=102)
240k : décote -0.3% (n=112)
250k : décote 6.4% (n= 65)
260k : décote 12.4% (n= 67) ⚡
270k : décote 6.6% (n= 48)
280k : décote -19.3% (n= 32)
290k : décote 29.0% (n= 29) ⚡
300k+ : décote 5.1% (n= 87)
📌 Seuils où la décote s'accélère (> 8%) :
→ 20k km : 17.2%
→ 70k km : 26.8%
→ 140k km : 11.7%
→ 180k km : 10.4%
→ 260k km : 12.4%
→ 290k km : 29.0%
✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
7 ans : décote -10.1% (n= 27) 🐢 LENTE
8 ans : décote 5.7% (n= 45)
9 ans : décote 1.3% (n= 62) 🐢 LENTE
10 ans : décote 16.9% (n=164) ⚡ FORTE
11 ans : décote 1.7% (n=138) 🐢 LENTE
12 ans : décote 11.7% (n=161)
13 ans : décote 15.8% (n=202) ⚡ FORTE
14 ans : décote 6.6% (n=263)
15 ans : décote 11.0% (n=281)
16 ans : décote 7.0% (n=248)
17 ans : décote 1.4% (n= 30) 🐢 LENTE
📌 Décote rapide (> 10% par an) :
→ 10 ans : 16.9%
→ 12 ans : 11.7%
→ 13 ans : 15.8%
→ 15 ans : 11.0%
📌 Décote lente (< 5% par an) :
→ 7 ans : -10.1%
→ 9 ans : 1.3%
→ 11 ans : 1.7%
→ 17 ans : 1.4%
✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -517.86 × âge + -0.0174 × km + 16,617
📌 R² = 0.651
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 245 ( 15.0%)
👍 Bonne affaire : 243 ( 14.9%)
📊 Prix marché : 642 ( 39.3%)
💰 Cher : 221 ( 13.5%)
🔴 Très cher : 284 ( 17.4%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3163345953] Peugeot 5008 1.6, 120cv B.hdi
Prix: 1,000€ | Attendu: 5,708€ | Écart: -82.5% | Année: 2014 | Km: 270,000
2. [3098662962] Peugeot 5008 hdi
Prix: 1,900€ | Attendu: 8,728€ | Écart: -78.2% | Année: 2016 | Km: 155,900
3. [3163979849] Opel Corsa 2009 232000km
Prix: 1,900€ | Attendu: 8,440€ | Écart: -77.5% | Année: 2018 | Km: 232,000
4. [3161987772] 5008 7 places
Prix: 1,000€ | Attendu: 4,154€ | Écart: -75.9% | Année: 2011 | Km: 270,000
5. [3154103448] Vend Peugeot 5008 dans l etat
Prix: 1,000€ | Attendu: 4,071€ | Écart: -75.4% | Année: 2010 | Km: 245,000
6. [3145452074] Peugeot 5008
Prix: 1,000€ | Attendu: 3,681€ | Écart: -72.8% | Année: 2012 | Km: 327,000
7. [3151017355] Vends Peugeot 5008 a spécialiste
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 1,500€ | Attendu: 5,368€ | Écart: -72.1% | Année: 2012 | Km: 230,000
8. [3154289763] 5008 essence sur l'état
Prix: 1,700€ | Attendu: 6,073€ | Écart: -72.0% | Année: 2011 | Km: 159,660
9. [3162529124] Peugeot 5008
Prix: 1,500€ | Attendu: 5,120€ | Écart: -70.7% | Année: 2013 | Km: 274,000
10. [3164455221] Peugeot 5008
Prix: 1,800€ | Attendu: 5,712€ | Écart: -68.5% | Année: 2013 | Km: 240,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3146000438] 5008 hdi
Prix: 7,500€ | Attendu: 3,745€ | Écart: +100.3% | Année: 2009 | Km: 234,000
2. [3152738100] Peugeot 5008 2l hdi 150cv
Prix: 8,000€ | Attendu: 4,374€ | Écart: +82.9% | Année: 2010 | Km: 227,600
3. [3126969597] Peugeot 5008
Prix: 4,200€ | Attendu: 2,336€ | Écart: +79.8% | Année: 2009 | Km: 315,000
4. [3157618424] Peugeot 5008
Prix: 3,500€ | Attendu: 1,984€ | Écart: +76.4% | Année: 2010 | Km: 365,000
5. [3165438627] Vend peugeot 5008 1l6 hdi année 2009
Caroserie 31
Prix: 4,000€ | Attendu: 2,284€ | Écart: +75.1% | Année: 2009 | Km: 318,000
6. [3126598226] Peugeot 5008 1.6 hdi fap confort pack 7pl
Prix: 7,990€ | Attendu: 4,567€ | Écart: +75.0% | Année: 2010 | Km: 216,500
7. [3155918327] Peugeot 5008
Prix: 6,500€ | Attendu: 3,745€ | Écart: +73.6% | Année: 2009 | Km: 234,000
8. [3147840406] Peugeot 5008 1.6 hdi FAP Premium 7pls
Prix: 6,990€ | Attendu: 4,054€ | Écart: +72.4% | Année: 2010 | Km: 246,000
9. [3159646980] PEUGEOT 5008 2.0 HDI 163cv
Prix: 7,500€ | Attendu: 4,411€ | Écart: +70.0% | Année: 2012 | Km: 285,000
10. [3129737643] 🚗 Peugeot 5008 1.6 HDi 110 Premium – 7 places
Prix: 10,000€ | Attendu: 5,932€ | Écart: +68.6% | Année: 2010 | Km: 138,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 78 annonces avec prix suspect
💾 78 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 1637
Récupération de la page 1/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 2/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 3/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=3
→ 35 annonces récupérées (total en mémoire: 105)
Export de 105 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 4/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=4
→ 35 annonces récupérées (total en mémoire: 140)
Export de 140 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 5/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=5
→ 35 annonces récupérées (total en mémoire: 175)
Export de 175 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 6/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=6
→ 35 annonces récupérées (total en mémoire: 210)
Export de 210 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 7/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=7
→ 35 annonces récupérées (total en mémoire: 245)
Export de 245 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 8/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=8
→ 35 annonces récupérées (total en mémoire: 280)
Export de 280 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 9/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=9
→ 35 annonces récupérées (total en mémoire: 315)
Export de 315 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 10/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=10
→ 35 annonces récupérées (total en mémoire: 350)
Export de 350 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 11/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=11
→ 35 annonces récupérées (total en mémoire: 385)
Export de 385 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 12/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=12
→ 35 annonces récupérées (total en mémoire: 420)
Export de 420 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 13/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=13
→ 35 annonces récupérées (total en mémoire: 455)
Export de 455 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 14/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=14
→ 35 annonces récupérées (total en mémoire: 490)
Export de 490 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 15/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=15
→ 35 annonces récupérées (total en mémoire: 525)
Export de 525 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 16/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=16
→ 35 annonces récupérées (total en mémoire: 560)
Export de 560 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 17/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=17
→ 35 annonces récupérées (total en mémoire: 595)
Export de 595 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 18/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=18
→ 35 annonces récupérées (total en mémoire: 630)
Export de 630 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 19/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=19
→ 35 annonces récupérées (total en mémoire: 665)
Export de 665 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 20/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=20
→ 35 annonces récupérées (total en mémoire: 700)
Export de 700 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 21/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=21
→ 35 annonces récupérées (total en mémoire: 735)
Export de 735 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 22/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=22
→ 35 annonces récupérées (total en mémoire: 770)
Export de 770 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 23/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=23
→ 35 annonces récupérées (total en mémoire: 805)
Export de 805 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 24/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=24
→ 35 annonces récupérées (total en mémoire: 840)
Export de 840 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 25/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=25
→ 35 annonces récupérées (total en mémoire: 875)
Export de 875 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 26/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=26
→ 35 annonces récupérées (total en mémoire: 910)
Export de 910 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 27/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=27
→ 35 annonces récupérées (total en mémoire: 945)
Export de 945 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 28/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=28
→ 35 annonces récupérées (total en mémoire: 980)
Export de 980 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 29/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=29
→ 35 annonces récupérées (total en mémoire: 1015)
Export de 1015 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 30/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=30
→ 35 annonces récupérées (total en mémoire: 1050)
Export de 1050 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 31/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=31
→ 35 annonces récupérées (total en mémoire: 1085)
Export de 1085 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 32/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=32
→ 35 annonces récupérées (total en mémoire: 1120)
Export de 1120 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 33/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=33
→ 35 annonces récupérées (total en mémoire: 1155)
Export de 1155 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 34/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=34
→ 35 annonces récupérées (total en mémoire: 1190)
Export de 1190 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 35/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=35
→ 35 annonces récupérées (total en mémoire: 1225)
Export de 1225 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 36/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=36
→ 35 annonces récupérées (total en mémoire: 1260)
Export de 1260 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 37/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=37
→ 35 annonces récupérées (total en mémoire: 1295)
Export de 1295 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 38/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=38
→ 35 annonces récupérées (total en mémoire: 1330)
Export de 1330 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 39/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=39
→ 35 annonces récupérées (total en mémoire: 1365)
Export de 1365 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 40/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=40
→ 35 annonces récupérées (total en mémoire: 1400)
Export de 1400 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 41/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=41
→ 35 annonces récupérées (total en mémoire: 1435)
Export de 1435 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 42/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=42
→ 35 annonces récupérées (total en mémoire: 1470)
Export de 1470 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 43/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=43
→ 19 annonces récupérées (total en mémoire: 1489)
Export de 1489 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260322_200539.csv réussi.
Récupération de la page 44/44 avec l'URL: https://www.leboncoin.fr/recherche?category=2&text=ford+fiesta&price=3000-10000®date=2014-max&u_car_brand=FORD&fuel=1%2C2&u_car_model=FORD_Fiesta&page=44
Erreur lors de l'appel à l'API: 404 Client Error: Not Found for url: https://piloterr.com/api/v2/leboncoin/search?query=https%3A%2F%2Fwww.leboncoin.fr%2Frecherche%3Fcategory%3D2%26text%3Dford%2Bfiesta%26price%3D3000-10000%26regdate%3D2014-max%26u_car_brand%3DFORD%26fuel%3D1%252C2%26u_car_model%3DFORD_Fiesta%26page%3D44
Récupération de la page 1/3 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&u_utility_model=NISSAN_NV200&fuel=2&page=1
→ 35 annonces récupérées (total en mémoire: 35)
Export de 35 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260322_200814.csv réussi.
Récupération de la page 2/3 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&u_utility_model=NISSAN_NV200&fuel=2&page=2
→ 35 annonces récupérées (total en mémoire: 70)
Export de 70 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260322_200814.csv réussi.
Récupération de la page 3/3 avec l'URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&u_utility_model=NISSAN_NV200&fuel=2&page=3
→ 25 annonces récupérées (total en mémoire: 95)
Export de 95 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260322_200814.csv réussi.
Terminé : 95 annonces au total dans /home/ubuntu/app/leboncoin_ads_nv200_20260322_200814.csv
INFO: Model override : nv200
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_nv200_20260322_200814.csv
✅ 95 lus, 95 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 95 lus, 95 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6575 annonces en base
════════════════════════════════════════════════════════════
INFO: 95 list_id lus dans le CSV.
INFO: 97 annonces actives en base pour nissan nv200.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_nv200_20260322_200814.csv
Brand : nissan | Modèle : nv200
════════════════════════════════════════════════════════════
Annonces dans le CSV : 95
Annonces actives en DB : 97
Absentes du crawl : 2
Marquées indisponibles : 2
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/nv200/figures
🔍 Modèle filtré : nv200
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 182 annonces chargées (modèle 'nv200')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 182
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 2859214095 Nissan NV200 N CONNNECTA 90CV 12990 2017 94500 diesel nissan nv200 pro 2024-10-05 17:02:00
1 3139983877 Nissan NV200 1,5L dCi 90ch Acenta 11990 2013 106800 diesel nissan nv200 pro 2026-02-05 16:52:21
2 3083668151 Nissan NV200 1.5 DCI 90CH VAN AMENAGE 14999 2014 121041 diesel nissan nv200 pro 2025-10-29 21:10:00
3 3131716141 Nissan NV200 1.5 DCI 110 N-CONNECTA 9890 2016 194000 diesel nissan nv200 pro 2026-01-21 20:45:17
4 3131492774 Nissan NV200 Fourgon 1.5 dCi 110cv 1ère Main N-Connecta 8990 2017 187000 diesel nissan nv200 pro 2026-01-21 14:43:24
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2024-09-27 22:07:00
Dernière publication : 2026-03-22 12:30:32
Durée : 540 jours
👤 Répartition par type de vendeur :
private : 126 (69.2%)
pro : 56 (30.8%)
⛽ Répartition par carburant :
diesel : 182 (100.0%)
🏭 Top 10 marques :
nissan : 182 (100.0%)
🧮 Création des colonnes calculées...
✅ Colonnes ajoutées : age_years, km_per_year, price_per_km
🧹 Nettoyage des données...
📊 Rapport de nettoyage :
prix_aberrants : 0 lignes supprimées
km_aberrants : 0 lignes supprimées
annee_aberrante : 0 lignes supprimées
age_negatif : 0 lignes supprimées
─────────────────────────────────────────────
Total supprimé : 0
Restantes : 182 / 182
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 1 outliers (0.5%)
Bornes IQR : [-2,735 ; 19,225]
mileage_km : 1 outliers (0.5%)
Bornes IQR : [-41,242 ; 367,938]
age_years : 0 outliers (0.0%)
Bornes IQR : [3 ; 19]
📌 Total d'annonces outliers (au moins 1 variable) : 2 (1.1%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 182
Dont outliers identifiés : 2
Annonces non-outliers : 180
Plages de valeurs :
price_eur : [ 2,000 ; 19,990] (moy: 8,596)
mileage_km : [ 1 ; 420,000] (moy: 164,995)
year_model : [ 2,009 ; 2,019] (moy: 2,015)
age_years : [ 7 ; 17] (moy: 11)
km_per_year : [ 0 ; 30,000] (moy: 14,934)
💾 182 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 5 signaux de suspicion détectés
km_trop_bas_diesel: 5
💾 5 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 182 8596.225275 8125.0 3723.671133 2000.000000 5500.00000 10990.000000 19990.0 5490.000000
mileage_km 182 164995.384615 152000.0 71497.422830 1.000000 112200.00000 214495.000000 420000.0 102295.000000
year_model 182 2014.807692 2015.0 2.713043 2009.000000 2013.00000 2017.000000 2019.0 4.000000
age_years 182 11.192308 11.0 2.713043 7.000000 9.00000 13.000000 17.0 4.000000
km_per_year 182 14934.066895 13900.0 5996.391612 0.066667 10440.08774 18661.111111 30000.0 8221.023371
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 182 8,596 8,125 3,723.67 2,000 5,500 10,990 19,990 5,490
mileage_km 182 164,995 152,000 71,497.42 1 112,200 214,495 420,000 102,295
year_model 182 2,015 2,015 2.71 2,009 2,013 2,017 2,019 4
age_years 182 11.2 11.0 2.71 7.0 9.0 13.0 17.0 4.0
km_per_year 182 14,934.1 13,900.0 5,996.39 0.1 10,440.1 18,661.1 30,000.0 8,221.0
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 8,596 > médiane 8,125)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 43%, σ = 3,724)
→ Étendue : [2,000 ; 19,990] (IQR = 5,490)
📌 mileage_km :
→ Distribution asymétrique DROITE (moyenne 164,995 > médiane 152,000)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 43%, σ = 71,497)
→ Étendue : [1 ; 420,000] (IQR = 102,295)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 3)
→ Étendue : [2,009 ; 2,019] (IQR = 4)
📌 age_years :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 24%, σ = 3)
→ Étendue : [7 ; 17] (IQR = 4)
📌 km_per_year :
→ Distribution asymétrique DROITE (moyenne 14,934 > médiane 13,900)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 40%, σ = 5,996)
→ Étendue : [0 ; 30,000] (IQR = 8,221)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
2026-03-22 20:08:27,799 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
2026-03-22 20:08:27,800 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2009 2 3,600 3,600 N/A
2010 9 4,764 4,200 -32.3%
2011 16 5,056 4,795 -6.1%
2012 13 6,548 5,200 -29.5%
2013 24 7,259 7,690 -10.9%
2014 22 8,752 8,740 -20.6%
2015 12 8,299 9,000 +5.2%
2016 25 8,914 8,000 -7.4%
2017 22 10,629 9,895 -19.2%
2018 22 11,668 11,750 -9.8%
2019 15 11,246 10,990 +3.6%
📌 Décote annuelle moyenne : -12.7%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 1 2,000 2,000 N/A
20-50k 5 13,656 12,800 +582.8%
50-80k 10 13,644 13,000 -0.1%
80-120k 37 11,597 10,980 -15.0%
120-160k 42 9,756 9,745 -15.9%
160-200k 31 6,857 7,000 -29.7%
200k+ 56 5,471 5,200 -20.2%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
7 15 11,246 N/A
8 22 11,668 +3.8%
9 22 10,629 -8.9%
10 25 8,914 -16.1%
11 12 8,299 -6.9%
12 22 8,752 +5.5%
13 24 7,259 -17.1%
14 13 6,548 -9.8%
15 16 5,056 -22.8%
16 9 4,764 -5.8%
17 2 3,600 -24.4%
📌 La décote ralentit significativement à 11 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 182 8,596 8,125
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 126 8,039 7,500
pro 56 9,849 9,890
📌 Test Mann-Whitney (médiane) : p = 0.0015
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +2,390€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (nv200) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/nv200/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
50k : décote -11.8% (n= 3)
60k : décote 15.9% (n= 2) ⚡
70k : décote 1.4% (n= 5)
80k : décote 4.5% (n= 9)
90k : décote -0.2% (n= 10)
100k : décote 5.9% (n= 8)
110k : décote 10.1% (n= 10) ⚡
120k : décote -14.0% (n= 11)
130k : décote 14.3% (n= 12) ⚡
140k : décote 12.6% (n= 13) ⚡
150k : décote 19.7% (n= 6) ⚡
160k : décote -13.1% (n= 6)
170k : décote 31.3% (n= 7) ⚡
180k : décote -15.2% (n= 6)
190k : décote -14.5% (n= 12)
200k : décote -1.5% (n= 5)
210k : décote 21.0% (n= 7) ⚡
220k : décote 0.8% (n= 8)
230k : décote -2.8% (n= 7)
240k : décote -2.9% (n= 8)
250k : décote 26.0% (n= 5) ⚡
260k : décote 15.2% (n= 2) ⚡
290k : décote -21.6% (n= 6)
300k+ : décote 15.3% (n= 6) ⚡
📌 Seuils où la décote s'accélère (> 8%) :
→ 60k km : 15.9%
→ 110k km : 10.1%
→ 130k km : 14.3%
→ 140k km : 12.6%
→ 150k km : 19.7%
→ 170k km : 31.3%
→ 210k km : 21.0%
→ 250k km : 26.0%
→ 260k km : 15.2%
→ 300k+ km : 15.3%
✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
8 ans : décote -3.8% (n= 22) 🐢 LENTE
9 ans : décote 8.9% (n= 22)
10 ans : décote 16.1% (n= 25) ⚡ FORTE
11 ans : décote 6.9% (n= 12)
12 ans : décote -5.5% (n= 22) 🐢 LENTE
13 ans : décote 17.1% (n= 24) ⚡ FORTE
14 ans : décote 9.8% (n= 13)
15 ans : décote 22.8% (n= 16) ⚡ FORTE
16 ans : décote 5.8% (n= 9)
17 ans : décote 24.4% (n= 2) ⚡ FORTE
📌 Décote rapide (> 10% par an) :
→ 10 ans : 16.1%
→ 13 ans : 17.1%
→ 15 ans : 22.8%
→ 17 ans : 24.4%
📌 Décote lente (< 5% par an) :
→ 8 ans : -3.8%
→ 12 ans : -5.5%
✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -457.32 × âge + -0.0298 × km + 18,625
📌 R² = 0.601
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 35 ( 19.3%)
👍 Bonne affaire : 35 ( 19.3%)
📊 Prix marché : 58 ( 32.0%)
💰 Cher : 23 ( 12.7%)
🔴 Très cher : 30 ( 16.6%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3138843536] Vehicule camionnette nissan nv200
Prix: 2,000€ | Attendu: 11,766€ | Écart: -83.0% | Année: 2011 | Km: 1
2. [3159812831] Vend utilitaires nv200 nissan
Prix: 2,000€ | Attendu: 6,706€ | Écart: -70.2% | Année: 2011 | Km: 170,000
3. [3160668277] Nissan nv 200
Prix: 3,000€ | Attendu: 7,085€ | Écart: -57.7% | Année: 2013 | Km: 188,000
4. [3164906877] Nissan
Prix: 3,500€ | Attendu: 6,612€ | Écart: -47.1% | Année: 2016 | Km: 250,000
5. [3109648143] Nissan nv200 1.5 dci turbo
Prix: 3,990€ | Attendu: 6,985€ | Écart: -42.9% | Année: 2012 | Km: 176,000
6. [3154995725] Nissan NV200 Fourgon 1.5 DCi 110ch BVM5 Optima - 2
Prix: 4,000€ | Attendu: 6,772€ | Écart: -40.9% | Année: 2014 | Km: 213,880
7. [3116605709] Nissan NV200
Prix: 4,500€ | Attendu: 7,599€ | Écart: -40.8% | Année: 2011 | Km: 140,000
8. [3127367839] Nissan NV200 1.5 DCI
Prix: 5,490€ | Attendu: 8,795€ | Écart: -37.6% | Année: 2014 | Km: 145,899
9. [3142568361] Nissan nv 200 1.5 90ch
Prix: 5,200€ | Attendu: 8,308€ | Écart: -37.4% | Année: 2016 | Km: 193,000
10. [3164561805] Nissan nv200
Prix: 5,290€ | Attendu: 8,100€ | Écart: -34.7% | Année: 2016 | Km: 200,000
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3156635875] Nissan NV200
Prix: 3,500€ | Attendu: 564€ | Écart: +520.7% | Année: 2010 | Km: 361,000
2. [3154023820] Camion
Prix: 3,500€ | Attendu: 742€ | Écart: +371.4% | Année: 2010 | Km: 355,000
3. [3153372541] Nissan nv 200
Prix: 10,500€ | Attendu: 5,537€ | Écart: +89.6% | Année: 2013 | Km: 240,000
4. [3114600758] Van
Prix: 18,500€ | Attendu: 10,221€ | Écart: +81.0% | Année: 2014 | Km: 98,000
5. [3156516616] 🚐 Nissan NV200 aménagé – Prêt à voyager
Prix: 9,300€ | Attendu: 5,724€ | Écart: +62.5% | Année: 2011 | Km: 203,000
6. [3158536730] Véhicule aménagé
Prix: 13,500€ | Attendu: 8,354€ | Écart: +61.6% | Année: 2012 | Km: 130,000
7. [3083668151] Nissan NV200 1.5 DCI 90CH VAN AMENAGE
Prix: 14,999€ | Attendu: 9,535€ | Écart: +57.3% | Année: 2014 | Km: 121,041
8. [3163982347] Utilitaire aménagé Van NV200 2016 84000 km
Prix: 17,900€ | Attendu: 11,552€ | Écart: +54.9% | Année: 2016 | Km: 84,000
9. [3155364135] Utilitaire Van Nissan NV200 2016
Prix: 17,900€ | Attendu: 11,582€ | Écart: +54.6% | Année: 2016 | Km: 83,000
10. [3150255673] Van aménagé Nissan NV200
Prix: 8,500€ | Attendu: 5,594€ | Écart: +52.0% | Année: 2010 | Km: 192,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 7 annonces avec prix suspect
💾 7 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 182
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 245, in <module>
run_llm_title_analysis(
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 6575
============================================================
CRAWL ALL — 9 modèle(s)
============================================================
[1/9] CLIO_4 (brand=renault, pages=41)
URL: https://www.leboncoin.fr/recherche?category=2&text=clio%204&price=3000-9000®d...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 41 --model clio_4
CSV : leboncoin_ads_clio_4_20260322_200000.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv --db /home/ubuntu/app/db/lbc.sqlite --model clio_4
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_clio_4_20260322_200000.csv --brand renault --model clio_4 --db /home/ubuntu/app/db/lbc.sqlite
$ /home/ubuntu/app/.venv/bin/python -m stats.main --model clio_4 --skip-plots
AVERTISSEMENT : stats échouées pour clio_4
[2/9] YARIS (brand=toyota, pages=2)
URL: https://www.leboncoin.fr/recherche?category=2&text=toyota%20yaris&price=3000-900...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 2 --model yaris
CSV : leboncoin_ads_yaris_20260322_200227.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_yaris_20260322_200227.csv --db /home/ubuntu/app/db/lbc.sqlite --model yaris
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_yaris_20260322_200227.csv --brand toyota --model yaris --db /home/ubuntu/app/db/lbc.sqlite
$ /home/ubuntu/app/.venv/bin/python -m stats.main --model yaris --skip-plots
AVERTISSEMENT : stats échouées pour yaris
[3/9] I20 (brand=hyundai, pages=4)
URL: https://www.leboncoin.fr/recherche?category=2&text=i20&price=3000-9000®date=2...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 4 --model i20
CSV : leboncoin_ads_i20_20260322_200236.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_i20_20260322_200236.csv --db /home/ubuntu/app/db/lbc.sqlite --model i20
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_i20_20260322_200236.csv --brand hyundai --model i20 --db /home/ubuntu/app/db/lbc.sqlite
$ /home/ubuntu/app/.venv/bin/python -m stats.main --model i20 --skip-plots
AVERTISSEMENT : stats échouées pour i20
[4/9] BERLINGO (brand=citroen, pages=10)
URL: https://www.leboncoin.fr/recherche?category=5&text=berlingo+xl&u_utility_brand=C...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 10 --model berlingo
CSV : leboncoin_ads_berlingo_20260322_200252.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv --db /home/ubuntu/app/db/lbc.sqlite --model berlingo
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_berlingo_20260322_200252.csv --brand citroen --model berlingo --db /home/ubuntu/app/db/lbc.sqlite
$ /home/ubuntu/app/.venv/bin/python -m stats.main --model berlingo --skip-plots
AVERTISSEMENT : stats échouées pour berlingo
[5/9] C4 (brand=citroen, pages=5)
URL: https://www.leboncoin.fr/recherche?category=2&text=c4&price=min-11000®date=20...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 5 --model c4
CSV : leboncoin_ads_c4_20260322_200327.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv --db /home/ubuntu/app/db/lbc.sqlite --model c4
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_c4_20260322_200327.csv --brand citroen --model c4 --db /home/ubuntu/app/db/lbc.sqlite
$ /home/ubuntu/app/.venv/bin/python -m stats.main --model c4 --skip-plots
AVERTISSEMENT : stats échouées pour c4
[6/9] SCENIC (brand=renault, pages=4)
URL: https://www.leboncoin.fr/recherche?category=2&text=scenic&price=min-11000®dat...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 4 --model scenic
ERREUR : crawler échoué pour scenic
[7/9] 5008 (brand=peugeot, pages=31)
URL: https://www.leboncoin.fr/recherche?category=2&text=5008&price=min-11000&u_car_br...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 31 --model 5008
CSV : leboncoin_ads_5008_20260322_200358.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv --db /home/ubuntu/app/db/lbc.sqlite --model 5008
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_5008_20260322_200358.csv --brand peugeot --model 5008 --db /home/ubuntu/app/db/lbc.sqlite
$ /home/ubuntu/app/.venv/bin/python -m stats.main --model 5008 --skip-plots
AVERTISSEMENT : stats échouées pour 5008
[8/9] FIESTA (brand=ford, pages=44)
URL: https://www.leboncoin.fr/recherche?category=2&text=ford%20fiesta&price=3000-1000...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 44 --model fiesta
ERREUR : crawler échoué pour fiesta
[9/9] NV200 (brand=nissan, pages=3)
URL: https://www.leboncoin.fr/recherche?category=5&text=nv200&u_utility_brand=NISSAN&...
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/crawler/leboncoin_search_export.py --output-file /home/ubuntu/app/leboncoin_ads.csv --pages 3 --model nv200
CSV : leboncoin_ads_nv200_20260322_200814.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_nv200_20260322_200814.csv --db /home/ubuntu/app/db/lbc.sqlite --model nv200
$ /home/ubuntu/app/.venv/bin/python /home/ubuntu/app/scripts/check_availability.py --csv /home/ubuntu/app/leboncoin_ads_nv200_20260322_200814.csv --brand nissan --model nv200 --db /home/ubuntu/app/db/lbc.sqlite
$ /home/ubuntu/app/.venv/bin/python -m stats.main --model nv200 --skip-plots
AVERTISSEMENT : stats échouées pour nv200
.env restauré
============================================================
LLM — Extraction des titres (toutes les annonces)
============================================================
$ /home/ubuntu/app/.venv/bin/python -m stats.m05_llm_title_analysis
AVERTISSEMENT : extraction LLM échouée
============================================================
RÉSUMÉ
============================================================
✓ clio_4 → OK
✓ yaris → OK
✓ i20 → OK
✓ berlingo → OK
✓ c4 → OK
✗ scenic → ERREUR crawler
✓ 5008 → OK
✗ fiesta → ERREUR crawler
✓ nv200 → OK
============================================================
============================================================
Finished: 2026-03-22T20:08:29.524969
Duration: 509.5s
STATUS:SUCCESS