Administration
← Retour
Log : 20260320_200000
=== CRAWL 20260320_200000 ===
Trigger: scheduled
Started: 2026-03-20T20:00:00.000265
============================================================
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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_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_20260320_200000.csv réussi.
Terminé : 1435 annonces au total dans /home/ubuntu/app/leboncoin_ads_clio_4_20260320_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_20260320_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
📌 6265 annonces en base
════════════════════════════════════════════════════════════
INFO: 1423 list_id lus dans le CSV.
INFO: 1464 annonces actives en base pour renault clio_4.
INFO: 41 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_clio_4_20260320_200000.csv
Brand : renault | Modèle : clio_4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1423
Annonces actives en DB : 1464
Absentes du crawl : 41
Marquées indisponibles : 41
════════════════════════════════════════════════════════════
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
✅ 2495 annonces chargées (modèle 'clio_4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 2495
📋 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-20 20:57:16
Durée : 714 jours
👤 Répartition par type de vendeur :
private : 1605 (64.3%)
pro : 890 (35.7%)
⛽ Répartition par carburant :
diesel : 1361 (54.5%)
essence : 1130 (45.3%)
autre : 3 (0.1%)
gpl : 1 (0.0%)
🏭 Top 10 marques :
renault : 2495 (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 : 2494 / 2495
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 36 outliers (1.4%)
Bornes IQR : [4,740 ; 10,740]
mileage_km : 38 outliers (1.5%)
Bornes IQR : [18,266 ; 253,041]
age_years : 8 outliers (0.3%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 67 (2.7%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 2494
Dont outliers identifiés : 67
Annonces non-outliers : 2427
Plages de valeurs :
price_eur : [ 3,300 ; 9,000] (moy: 7,616)
mileage_km : [ 125 ; 380,000] (moy: 137,628)
year_model : [ 2,014 ; 2,024] (moy: 2,017)
age_years : [ 2 ; 12] (moy: 9)
km_per_year : [ 18 ; 54,286] (moy: 16,095)
💾 2494 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 7 signaux de suspicion détectés
km_trop_bas_essence: 2
km_trop_bas_diesel: 5
💾 7 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 2494 7616.316760 7900.0 1098.419801 3300.000000 6990.000000 8490.000000 9000.000000 1500.000000
mileage_km 2494 137627.938252 134000.0 44515.637434 125.000000 106306.250000 165000.000000 380000.000000 58693.750000
year_model 2494 2017.266640 2017.0 1.364216 2014.000000 2016.000000 2018.000000 2024.000000 2.000000
age_years 2494 8.733360 9.0 1.364216 2.000000 8.000000 10.000000 12.000000 2.000000
km_per_year 2494 16094.708595 15671.0 5692.237530 17.857143 12143.253968 19582.357143 54285.714286 7439.103175
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 2,494 7,616 7,900 1,098.42 3,300 6,990 8,490 9,000 1,500
mileage_km 2,494 137,628 134,000 44,515.64 125 106,306 165,000 380,000 58,694
year_model 2,494 2,017 2,017 1.36 2,014 2,016 2,018 2,024 2
age_years 2,494 8.7 9.0 1.36 2.0 8.0 10.0 12.0 2.0
km_per_year 2,494 16,094.7 15,671.0 5,692.24 17.9 12,143.3 19,582.4 54,285.7 7,439.1
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,098)
→ Étendue : [3,300 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 32%, σ = 44,516)
→ Étendue : [125 ; 380,000] (IQR = 58,694)
📌 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,692)
→ Étendue : [18 ; 54,286] (IQR = 7,439)
======================================================================
2026-03-20 20:03:19,408 [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-20 20:03:19,409 [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 712 7,283 7,500 +0.5%
2017 673 7,643 7,900 -4.9%
2018 531 7,729 7,990 -1.1%
2019 338 7,966 8,200 -3.1%
2020 101 8,267 8,590 -3.8%
2021 23 8,389 8,490 -1.5%
2022 6 8,838 8,930 -5.4%
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 8 7,580 7,725 N/A
20-50k 15 8,108 8,500 +7.0%
50-80k 156 8,194 8,490 +1.1%
80-120k 785 7,993 8,000 -2.4%
120-160k 793 7,905 7,990 -1.1%
160-200k 513 7,147 7,000 -9.6%
200k+ 224 5,916 5,825 -17.2%
📊 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 23 8,389 -5.1%
6 101 8,267 -1.5%
7 338 7,966 -3.6%
8 531 7,729 -3.0%
9 673 7,643 -1.1%
10 712 7,283 -4.7%
11 55 7,319 +0.5%
12 53 6,972 -4.7%
📌 La décote ralentit significativement à 5 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
autre 3 7,630 6,990
diesel 1361 7,475 7,700
essence 1129 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 1604 7,454 7,600
pro 890 7,909 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 3.2% (n= 2)
20k : décote -15.8% (n= 4)
30k : décote 0.8% (n= 6)
40k : décote 14.3% (n= 5) ⚡
50k : décote -11.6% (n= 30)
60k : décote -3.1% (n= 47)
70k : décote 3.1% (n= 79)
80k : décote -0.7% (n=121)
90k : décote 0.9% (n=187)
100k : décote 2.2% (n=206)
110k : décote 0.3% (n=271)
120k : décote -1.8% (n=190)
130k : décote 1.3% (n=202)
140k : décote -0.0% (n=206)
150k : décote 3.1% (n=195)
160k : décote 3.8% (n=168)
170k : décote 2.0% (n=138)
180k : décote 4.0% (n=108)
190k : décote 3.4% (n= 99)
200k : décote 6.0% (n= 87)
210k : décote 4.6% (n= 45)
220k : décote -3.7% (n= 20)
230k : décote 11.0% (n= 27) ⚡
240k : décote 4.4% (n= 8)
250k : décote 1.3% (n= 14)
260k : décote 0.5% (n= 3)
270k : décote 12.2% (n= 4) ⚡
280k : décote -17.0% (n= 5)
290k : décote 18.5% (n= 6) ⚡
300k+ : décote -10.5% (n= 5)
📌 Seuils où la décote s'accélère (> 8%) :
→ 40k km : 14.3%
→ 230k km : 11.0%
→ 270k km : 12.2%
→ 290k km : 18.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.1% (n= 23)
6 ans : décote 1.5% (n=101) 🐢 LENTE
7 ans : décote 3.6% (n=338)
8 ans : décote 3.0% (n=531) 🐢 LENTE
9 ans : décote 1.1% (n=673) 🐢 LENTE
10 ans : décote 4.7% (n=712)
11 ans : décote -0.5% (n= 55) 🐢 LENTE
12 ans : décote 4.7% (n= 53)
📌 Décote lente (< 5% par an) :
→ 4 ans : -10.5%
→ 6 ans : 1.5%
→ 7 ans : 3.6%
→ 8 ans : 3.0%
→ 9 ans : 1.1%
→ 10 ans : 4.7%
→ 11 ans : -0.5%
→ 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 = -176.18 × âge + -0.0129 × km + 10,928
📌 R² = 0.339
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 150 ( 6.0%)
👍 Bonne affaire : 311 ( 12.5%)
📊 Prix marché : 1553 ( 62.3%)
💰 Cher : 406 ( 16.3%)
🔴 Très cher : 74 ( 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,829€ | Écart: -57.8% | Année: 2018 | Km: 131,159
2. [3147790884] Clio 4 phase 2
Prix: 3,500€ | Attendu: 7,844€ | Écart: -55.4% | Année: 2018 | Km: 130,000
3. [3150016687] Clio 4
Prix: 4,000€ | Attendu: 7,775€ | Écart: -48.6% | Année: 2016 | Km: 108,000
4. [3162715888] Clio 4 2018
Prix: 4,700€ | Attendu: 9,003€ | Écart: -47.8% | Année: 2018 | Km: 40,000
5. [3154311236] Renault Clio 4 1.5 dCi 2016 – Diesel – Société – 1
Prix: 3,800€ | Attendu: 7,195€ | Écart: -47.2% | Année: 2016 | Km: 153,000
6. [3147329929] Clio 4
Prix: 4,000€ | Attendu: 7,526€ | Écart: -46.8% | Année: 2014 | Km: 100,000
7. [3144664626] Clio 4 retour de vol
Prix: 4,800€ | Attendu: 8,986€ | Écart: -46.6% | Année: 2019 | Km: 55,000
8. [3161045630] Clio 4 75ch
Prix: 4,000€ | Attendu: 6,989€ | Écart: -42.8% | Année: 2016 | Km: 169,000
9. [3138542846] Clio 4 essence retour vol
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,500€ | Attendu: 7,702€ | Écart: -41.6% | Année: 2015 | Km: 100,000
10. [3144128404] Clio 4
Prix: 4,980€ | Attendu: 8,406€ | Écart: -40.8% | Année: 2019 | 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,799€ | Écart: +45.9% | Année: 2019 | Km: 380,000
2. [3163754314] Clio 4 initiale paris
Prix: 8,900€ | Attendu: 6,590€ | Écart: +35.1% | Année: 2016 | Km: 200,000
3. [3161126708] RENAULT CLIO IV dCi 110 Initiale Paris | FULL OPTI
Prix: 8,990€ | Attendu: 6,676€ | Écart: +34.7% | Année: 2017 | Km: 207,000
4. [3151967791] Clio 4 initiale Paris
Prix: 8,900€ | Attendu: 6,972€ | Écart: +27.7% | Année: 2017 | Km: 184,000
5. [3144046817] Clio 5
Prix: 9,000€ | Attendu: 7,054€ | Écart: +27.6% | Année: 2019 | Km: 205,000
6. [3155921737] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,659€ | Écart: +27.5% | Année: 2016 | Km: 194,600
7. [3155418369] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,659€ | Écart: +27.5% | Année: 2016 | Km: 194,600
8. [3151279318] Clio 4 ÉDITION ONE
Prix: 8,899€ | Attendu: 7,011€ | Écart: +26.9% | Année: 2016 | Km: 167,264
9. [3162574180] RENAULT CLIO IV BUSINESS dCi 90 eco2 90g Business
Prix: 8,990€ | Attendu: 7,092€ | Écart: +26.8% | Année: 2016 | Km: 161,000
10. [3136191420] Clio IV
Prix: 7,490€ | Attendu: 5,911€ | Écart: +26.7% | Année: 2018 | Km: 280,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 11 annonces avec prix suspect
💾 11 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 2495
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_20260320_200321.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
→ 16 annonces récupérées (total en mémoire: 51)
Export de 51 annonces vers /home/ubuntu/app/leboncoin_ads_yaris_20260320_200321.csv réussi.
Terminé : 51 annonces au total dans /home/ubuntu/app/leboncoin_ads_yaris_20260320_200321.csv
INFO: Model override : yaris
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_yaris_20260320_200321.csv
✅ 51 lus, 51 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 51 lus, 51 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6267 annonces en base
════════════════════════════════════════════════════════════
INFO: 51 list_id lus dans le CSV.
INFO: 54 annonces actives en base pour toyota yaris.
INFO: 3 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_yaris_20260320_200321.csv
Brand : toyota | Modèle : yaris
════════════════════════════════════════════════════════════
Annonces dans le CSV : 51
Annonces actives en DB : 54
Absentes du crawl : 3
Marquées indisponibles : 3
════════════════════════════════════════════════════════════
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
✅ 104 annonces chargées (modèle 'yaris')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 104
📋 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-20 19:39:09
Durée : 280 jours
👤 Répartition par type de vendeur :
pro : 57 (54.8%)
private : 47 (45.2%)
⛽ Répartition par carburant :
essence : 89 (85.6%)
diesel : 15 (14.4%)
🏭 Top 10 marques :
toyota : 104 (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 : 104 / 104
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 1 outliers (1.0%)
Bornes IQR : [5,121 ; 11,312]
mileage_km : 1 outliers (1.0%)
Bornes IQR : [21,866 ; 218,521]
age_years : 2 outliers (1.9%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 3 (2.9%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 104
Dont outliers identifiés : 3
Annonces non-outliers : 101
Plages de valeurs :
price_eur : [ 2,500 ; 9,000] (moy: 7,930)
mileage_km : [ 15,333 ; 200,000] (moy: 118,697)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 5,111 ; 143,200] (moy: 14,168)
💾 104 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
✅ Aucune annonce suspecte détectée
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 104 7930.432692 8100.00 1158.587127 2500.0 7442.250000 8990.000000 9000.0 1547.750000
mileage_km 104 118697.298077 118720.00 35531.277247 15333.0 95611.250000 144775.000000 200000.0 49163.750000
year_model 104 2016.836538 2016.00 1.619724 2015.0 2016.000000 2018.000000 2025.0 2.000000
age_years 104 9.163462 10.00 1.619724 1.0 8.000000 10.000000 11.0 2.000000
km_per_year 104 14168.041294 12881.05 13392.134861 5111.0 9882.821429 14896.392857 143200.0 5013.571429
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 104 7,930 8,100 1,158.59 2,500 7,442 8,990 9,000 1,548
mileage_km 104 118,697 118,720 35,531.28 15,333 95,611 144,775 200,000 49,164
year_model 104 2,017 2,016 1.62 2,015 2,016 2,018 2,025 2
age_years 104 9.2 10.0 1.62 1.0 8.0 10.0 11.0 2.0
km_per_year 104 14,168.0 12,881.0 13,392.13 5,111.0 9,882.8 14,896.4 143,200.0 5,013.6
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 15%, σ = 1,159)
→ Étendue : [2,500 ; 9,000] (IQR = 1,548)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 30%, σ = 35,531)
→ Étendue : [15,333 ; 200,000] (IQR = 49,164)
📌 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 = 18%, σ = 2)
→ Étendue : [1 ; 11] (IQR = 2)
📌 km_per_year :
→ Distribution asymétrique DROITE (moyenne 14,168 > médiane 12,881)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ FORTE dispersion (CV = 95%, σ = 13,392)
→ Étendue : [5,111 ; 143,200] (IQR = 5,014)
======================================================================
📊 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-20 20:03:35,380 [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-20 20:03:35,381 [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 39 7,639 7,990 +3.1%
2017 21 8,300 8,500 -8.7%
2018 13 8,134 8,900 +2.0%
2019 12 8,443 8,745 -3.8%
📌 Décote annuelle moyenne : -1.8%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 1 5,250 5,250 N/A
20-50k 1 8,990 8,990 +71.2%
50-80k 13 8,724 8,990 -3.0%
80-120k 38 8,246 8,490 -5.5%
120-160k 38 7,673 7,990 -7.0%
160-200k 12 7,142 6,990 -6.9%
200k+ 1 6,500 6,500 -9.0%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
7 12 8,443 N/A
8 13 8,134 -3.7%
9 21 8,300 +2.1%
10 39 7,639 -8.0%
11 16 7,880 +3.2%
📌 La décote ralentit significativement à 11 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 15 7,564 8,000
essence 89 7,992 8,200
📌 Carburant avec prix médian le plus élevé : essence (8,200€)
📌 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 47 7,596 7,999
pro 57 8,206 8,490
📌 Test Mann-Whitney (médiane) : p = 0.0511
❌ Différence NON significative (p >= 0.05)
📌 Écart médian Pro - Particulier : +491€
📊 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 -2.5% (n= 11)
100k : décote 5.3% (n= 12)
110k : décote 0.5% (n= 11)
120k : décote -3.1% (n= 9)
130k : décote 5.5% (n= 8)
140k : décote 5.7% (n= 14)
150k : décote 3.2% (n= 7)
160k : décote -4.6% (n= 3)
170k : décote 4.2% (n= 7)
180k : décote 9.9% (n= 2)
📌 Seuils où la décote s'accélère (> 8%) :
→ 180k km : 9.9%
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
8 ans : décote 3.7% (n= 13)
9 ans : décote -2.1% (n= 21) 🐢 LENTE
10 ans : décote 8.0% (n= 39)
11 ans : décote -3.2% (n= 16) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 8 ans : 3.7%
→ 9 ans : -2.1%
→ 11 ans : -3.2%
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = 91.79 × âge + -0.0131 × km + 8,643
📌 R² = 0.154
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 7 ( 6.7%)
👍 Bonne affaire : 8 ( 7.7%)
📊 Prix marché : 67 ( 64.4%)
💰 Cher : 18 ( 17.3%)
🔴 Très cher : 4 ( 3.8%)
📊 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,597€ | Écart: -67.1% | Année: 2016 | Km: 150,000
2. [3152322073] Toyota Yaris 1.0 VVTI PRO EXPORT (0101261)
Prix: 5,250€ | Attendu: 8,718€ | Écart: -39.8% | Année: 2023 | Km: 15,333
3. [3157660912] Toyota Yaris
Prix: 5,500€ | Attendu: 7,951€ | Écart: -30.8% | Année: 2018 | Km: 109,000
4. [3165225181] Toyota yaris
Prix: 5,300€ | Attendu: 7,336€ | Écart: -27.8% | Année: 2016 | Km: 170,000
5. [3161632025] Toyota Yaris III - 5P - 2016
Prix: 5,500€ | Attendu: 7,467€ | Écart: -26.3% | Année: 2016 | Km: 160,000
6. [3157975215] Toyota yaris 2011
Prix: 5,150€ | Attendu: 6,860€ | Écart: -24.9% | Année: 2025 | Km: 143,200
7. [3160315775] Toyota aygo xplay
Prix: 6,399€ | Attendu: 8,042€ | Écart: -20.4% | Année: 2018 | Km: 102,000
8. [3096659493] Toyota Yaris 3
Prix: 6,300€ | Attendu: 7,742€ | Écart: -18.6% | Année: 2015 | Km: 146,000
9. [3164108049] Toyota yaris lllphase2
Prix: 6,000€ | Attendu: 7,336€ | Écart: -18.2% | Année: 2016 | Km: 170,000
10. [3159781517] Toyota Yaris-III Phase-2 1.3VTTi 16V 99Cv 1ère Mai
Prix: 5,950€ | Attendu: 7,190€ | Écart: -17.3% | Année: 2016 | Km: 181,093
🔴 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: 6,995€ | Écart: +27.2% | 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,257€ | Écart: +23.9% | Année: 2016 | Km: 176,000
3. [3153117476] Toyota Yaris 70 VVT-i France 5p MY19
Prix: 8,990€ | Attendu: 7,370€ | Écart: +22.0% | Année: 2018 | Km: 153,356
4. [3163742160] Toyota Yaris 90 D-4D Design 5p style
Prix: 8,990€ | Attendu: 7,412€ | Écart: +21.3% | Année: 2016 | Km: 164,156
5. [3135900987] TOYOTA YARIS RC18 110 VVT-i COLLECTION
Prix: 8,990€ | Attendu: 7,610€ | Écart: +18.1% | Année: 2018 | Km: 135,000
6. [3151923222] Toyota Yaris 110 VVT-i Design Y20 5p RC19
Prix: 8,990€ | Attendu: 7,626€ | Écart: +17.9% | Année: 2019 | Km: 126,787
7. [3006906577] Toyota Yaris III 69 VVT-i France
Prix: 8,990€ | Attendu: 7,718€ | Écart: +16.5% | Année: 2016 | Km: 140,770
8. [3146935741] Toyota Yaris 1.4 D-4D 90 Business
Prix: 8,990€ | Attendu: 7,778€ | Écart: +15.6% | Année: 2017 | Km: 129,178
9. [3154060767] Toyota yaris
Prix: 9,000€ | Attendu: 7,818€ | Écart: +15.1% | 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,830€ | Écart: +13.7% | 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 : 104
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_20260320_200336.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_20260320_200336.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_20260320_200336.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
→ 13 annonces récupérées (total en mémoire: 118)
Export de 118 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260320_200336.csv réussi.
Terminé : 118 annonces au total dans /home/ubuntu/app/leboncoin_ads_i20_20260320_200336.csv
INFO: Model override : i20
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_i20_20260320_200336.csv
✅ 118 lus, 118 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 118 lus, 118 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6270 annonces en base
════════════════════════════════════════════════════════════
INFO: 118 list_id lus dans le CSV.
INFO: 120 annonces actives en base pour hyundai i20.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_i20_20260320_200336.csv
Brand : hyundai | Modèle : i20
════════════════════════════════════════════════════════════
Annonces dans le CSV : 118
Annonces actives en DB : 120
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/i20/figures
🔍 Modèle filtré : i20
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 219 annonces chargées (modèle 'i20')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 219
📋 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-20 19:39:51
Durée : 340 jours
👤 Répartition par type de vendeur :
private : 121 (55.3%)
pro : 98 (44.7%)
⛽ Répartition par carburant :
essence : 175 (79.9%)
diesel : 43 (19.6%)
autre : 1 (0.5%)
🏭 Top 10 marques :
hyundai : 219 (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 : 219 / 219
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.7%)
Bornes IQR : [26,850 ; 220,850]
age_years : 21 outliers (9.6%)
Bornes IQR : [8 ; 12]
📌 Total d'annonces outliers (au moins 1 variable) : 27 (12.3%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 219
Dont outliers identifiés : 27
Annonces non-outliers : 192
Plages de valeurs :
price_eur : [ 3,800 ; 9,000] (moy: 7,759)
mileage_km : [ 95 ; 230,567] (moy: 122,618)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 12 ; 24,308] (moy: 13,470)
💾 219 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 3 signaux de suspicion détectés
km_trop_bas_essence: 1
km_trop_bas_diesel: 2
💾 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 219 7759.150685 7990.000000 1081.503664 3800.000 7000.000000 8500.000000 9000.000000 1500.000000
mileage_km 219 122617.707763 125742.000000 37590.307210 95.000 99600.000000 148100.000000 230567.000000 48500.000000
year_model 219 2016.785388 2016.000000 1.369580 2015.000 2016.000000 2017.000000 2025.000000 1.000000
age_years 219 9.214612 10.000000 1.369580 1.000 9.000000 10.000000 11.000000 1.000000
km_per_year 219 13470.414680 13333.333333 4244.406578 11.875 10520.859091 16433.333333 24308.166667 5912.474242
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 219 7,759 7,990 1,081.50 3,800 7,000 8,500 9,000 1,500
mileage_km 219 122,618 125,742 37,590.31 95 99,600 148,100 230,567 48,500
year_model 219 2,017 2,016 1.37 2,015 2,016 2,017 2,025 1
age_years 219 9.2 10.0 1.37 1.0 9.0 10.0 11.0 1.0
km_per_year 219 13,470.4 13,333.3 4,244.41 11.9 10,520.9 16,433.3 24,308.2 5,912.5
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,082)
→ Étendue : [3,800 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 31%, σ = 37,590)
→ Étendue : [95 ; 230,567] (IQR = 48,500)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 1)
→ Étendue : [2,015 ; 2,025] (IQR = 1)
📌 age_years :
→ Distribution asymétrique GAUCHE (moyenne 9 < médiane 10)
Quelques valeurs basses tirent la moyenne vers le bas.
→ Faible dispersion (CV = 15%, σ = 1)
→ Étendue : [1 ; 11] (IQR = 1)
📌 km_per_year :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 32%, σ = 4,244)
→ Étendue : [12 ; 24,308] (IQR = 5,912)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
2026-03-20 20:03:50,859 [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-20 20:03:50,860 [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.
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2015 25 7,574 7,800 N/A
2016 86 7,611 7,900 -0.5%
2017 55 7,635 7,900 -0.3%
2018 32 8,085 8,385 -5.9%
2019 14 8,316 8,490 -2.9%
2020 5 8,684 8,980 -4.4%
📌 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 5 8,156 7,990 +4.6%
50-80k 20 8,485 8,600 +4.0%
80-120k 72 8,185 8,495 -3.5%
120-160k 82 7,757 7,900 -5.2%
160-200k 33 6,526 6,000 -15.9%
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 14 8,316 -4.2%
8 32 8,085 -2.8%
9 55 7,635 -5.6%
10 86 7,611 -0.3%
11 25 7,574 -0.5%
📌 La décote ralentit significativement à 10 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 43 7,173 7,290
essence 175 7,900 7,999
📌 Carburant avec prix médian le plus élevé : essence (7,999€)
📌 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 121 7,613 7,800
pro 98 7,940 7,990
📌 Test Mann-Whitney (médiane) : p = 0.0726
❌ Différence NON significative (p >= 0.05)
📌 Écart médian Pro - Particulier : +190€
📊 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 -5.4% (n= 4)
50k : décote -6.3% (n= 2)
60k : décote 7.6% (n= 6)
70k : décote -7.1% (n= 12)
80k : décote 2.9% (n= 7)
90k : décote 0.7% (n= 21)
100k : décote 2.4% (n= 28)
110k : décote 1.8% (n= 16)
120k : décote 4.8% (n= 23)
130k : décote -2.0% (n= 26)
140k : décote -0.9% (n= 20)
150k : décote -1.5% (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 4.2% (n= 14)
8 ans : décote 2.8% (n= 32) 🐢 LENTE
9 ans : décote 5.6% (n= 55)
10 ans : décote 0.3% (n= 86) 🐢 LENTE
11 ans : décote 0.5% (n= 25) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 7 ans : 4.2%
→ 8 ans : 2.8%
→ 10 ans : 0.3%
→ 11 ans : 0.5%
✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -111.02 × âge + -0.0130 × km + 10,382
📌 R² = 0.248
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 15 ( 6.8%)
👍 Bonne affaire : 29 ( 13.2%)
📊 Prix marché : 128 ( 58.4%)
💰 Cher : 43 ( 19.6%)
🔴 Très cher : 4 ( 1.8%)
📊 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,778€ | Écart: -51.1% | Année: 2015 | Km: 106,000
2. [3160167161] Hyundai i20 2017
Prix: 4,000€ | Attendu: 7,803€ | Écart: -48.7% | Année: 2017 | Km: 121,054
3. [3132112485] Vend ou échange
Prix: 5,500€ | Attendu: 9,157€ | Écart: -39.9% | 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,276€ | Écart: -31.4% | Année: 2018 | Km: 170,000
5. [3141044598] Hyundai i20
Prix: 5,600€ | Attendu: 7,945€ | Écart: -29.5% | Année: 2016 | Km: 101,653
6. [3154012812] Hyundai
Prix: 5,100€ | Attendu: 7,054€ | Écart: -27.7% | Année: 2016 | Km: 170,000
7. [3159144757] Hyundai i20 1.2 essence 2016 – CT OK – pneus neufs
Prix: 5,400€ | Attendu: 7,202€ | Écart: -25.0% | Année: 2016 | Km: 158,600
8. [3144748405] Hyundai i20 1.2 Go Klima RadioCD
Prix: 5,385€ | Attendu: 7,088€ | Écart: -24.0% | Année: 2017 | Km: 175,866
9. [3139554030] Hyundai i20 coupe 1.2 84 cv intuitive 3 portes
Prix: 5,500€ | Attendu: 7,184€ | Écart: -23.4% | Année: 2018 | Km: 177,000
10. [3159939727] Hyundai i20
Prix: 5,500€ | Attendu: 7,132€ | Écart: -22.9% | Année: 2016 | Km: 164,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,119€ | Écart: +26.3% | Année: 2016 | Km: 165,000
2. [3164886925] Hyundai i20 Coupé
Prix: 9,000€ | Attendu: 7,360€ | Écart: +22.3% | Année: 2017 | Km: 155,000
3. [3158481657] Hyundai i20
Prix: 8,900€ | Attendu: 7,385€ | Écart: +20.5% | Année: 2016 | Km: 144,600
4. [3109227704] Hyundai i20 crdi 75ch edition navy
Prix: 8,900€ | Attendu: 7,398€ | Écart: +20.3% | Année: 2017 | Km: 152,154
5. [3152500439] Hyundai i20 1.0 T-GDi 100 UEFA EURO 2016
Prix: 8,489€ | Attendu: 7,231€ | Écart: +17.4% | Année: 2016 | Km: 156,400
6. [3151384014] Hyundai i20
Prix: 8,500€ | Attendu: 7,295€ | Écart: +16.5% | Année: 2015 | Km: 143,000
7. [3155001248] Vente voiture hyundai i20
Prix: 8,500€ | Attendu: 7,302€ | Écart: +16.4% | Année: 2018 | Km: 168,000
8. [2972084163] HYUNDAI I20 1.2i - 84 BERLINE Initia
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,990€ | Attendu: 7,739€ | Écart: +16.2% | Année: 2015 | Km: 109,000
9. [3140396976] HYUNDAI i20 1.1 CRDi 75 Intuitive
Prix: 8,900€ | Attendu: 7,693€ | Écart: +15.7% | Année: 2016 | Km: 121,000
10. [3155188875] HYUNDAI i20 1.2 84CV ACTIVE, 1ére MAIN/ENTRETIEN S
Prix: 8,980€ | Attendu: 7,813€ | Écart: +14.9% | Année: 2020 | Km: 145,849
🔎 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 : 219
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_20260320_200352.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_20260320_200352.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_20260320_200352.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_20260320_200352.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_20260320_200352.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_20260320_200352.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_20260320_200352.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_20260320_200352.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_20260320_200352.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
→ 12 annonces récupérées (total en mémoire: 327)
Export de 327 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260320_200352.csv réussi.
Terminé : 327 annonces au total dans /home/ubuntu/app/leboncoin_ads_berlingo_20260320_200352.csv
INFO: Model override : berlingo
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_berlingo_20260320_200352.csv
✅ 327 lus, 327 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 327 lus, 327 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6273 annonces en base
════════════════════════════════════════════════════════════
INFO: 327 list_id lus dans le CSV.
INFO: 331 annonces actives en base pour citroen berlingo.
INFO: 4 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_berlingo_20260320_200352.csv
Brand : citroen | Modèle : berlingo
════════════════════════════════════════════════════════════
Annonces dans le CSV : 327
Annonces actives en DB : 331
Absentes du crawl : 4
Marquées indisponibles : 4
════════════════════════════════════════════════════════════
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
✅ 513 annonces chargées (modèle 'berlingo')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 513
📋 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-20 19:14:33
Durée : 402 jours
👤 Répartition par type de vendeur :
pro : 423 (82.5%)
private : 90 (17.5%)
⛽ Répartition par carburant :
diesel : 499 (97.3%)
électrique : 10 (1.9%)
essence : 4 (0.8%)
🏭 Top 10 marques :
citroen : 513 (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 : 497 / 513
Pourcentage conservé : 96.9%
🔍 Détection des outliers (méthode IQR)...
price_eur : 6 outliers (1.2%)
Bornes IQR : [250 ; 28,650]
mileage_km : 4 outliers (0.8%)
Bornes IQR : [-83,862 ; 243,770]
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 : 497
Dont outliers identifiés : 10
Annonces non-outliers : 487
Plages de valeurs :
price_eur : [ 2,800 ; 38,190] (moy: 14,916)
mileage_km : [ 1 ; 309,000] (moy: 83,590)
year_model : [ 2,009 ; 2,025] (moy: 2,021)
age_years : [ 1 ; 17] (moy: 5)
km_per_year : [ 1 ; 56,667] (moy: 14,137)
💾 497 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 497 14916.327968 13900.000000 5806.104848 2800.0 10900.0 18000.000000 38190.000000 7100.000000
mileage_km 497 83589.535211 86050.000000 57599.649863 1.0 39000.0 120908.000000 309000.000000 81908.000000
year_model 497 2020.680080 2020.000000 2.754078 2009.0 2019.0 2023.000000 2025.000000 4.000000
age_years 497 5.319920 6.000000 2.754078 1.0 3.0 7.000000 17.000000 4.000000
km_per_year 497 14136.825791 14492.666667 9293.471673 1.0 8500.0 19526.777778 56666.666667 11026.777778
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 497 14,916 13,900 5,806.10 2,800 10,900 18,000 38,190 7,100
mileage_km 497 83,590 86,050 57,599.65 1 39,000 120,908 309,000 81,908
year_model 497 2,021 2,020 2.75 2,009 2,019 2,023 2,025 4
age_years 497 5.3 6.0 2.75 1.0 3.0 7.0 17.0 4.0
km_per_year 497 14,136.8 14,492.7 9,293.47 1.0 8,500.0 19,526.8 56,666.7 11,026.8
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 14,916 > médiane 13,900)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 39%, σ = 5,806)
→ Étendue : [2,800 ; 38,190] (IQR = 7,100)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ FORTE dispersion (CV = 69%, σ = 57,600)
→ Étendue : [1 ; 309,000] (IQR = 81,908)
📌 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 = 52%, σ = 3)
→ Étendue : [1 ; 17] (IQR = 4)
📌 km_per_year :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ FORTE dispersion (CV = 66%, σ = 9,293)
→ Étendue : [1 ; 56,667] (IQR = 11,027)
2026-03-20 20:04:31,135 [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-20 20:04:31,135 [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,923 8,940 -10.8%
2018 56 10,301 9,500 -15.4%
2019 57 12,155 11,990 -18.0%
2020 92 13,222 12,695 -8.8%
2021 60 14,283 13,895 -8.0%
2022 51 14,718 14,500 -3.0%
2023 38 18,135 17,900 -23.2%
2024 19 21,024 19,990 -15.9%
2025 72 24,898 24,480 -18.4%
📌 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 93 23,867 23,988 N/A
20-50k 53 17,568 17,870 -26.4%
50-80k 81 15,420 15,990 -12.2%
80-120k 138 12,547 12,545 -18.6%
120-160k 86 10,525 10,658 -16.1%
160-200k 35 8,748 8,940 -16.9%
200k+ 11 6,433 6,000 -26.5%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
1 72 24,898 N/A
2 19 21,024 -15.6%
3 38 18,135 -13.7%
4 51 14,718 -18.8%
5 60 14,283 -3.0%
6 92 13,222 -7.4%
7 57 12,155 -8.1%
8 56 10,301 -15.3%
9 33 8,923 -13.4%
10 12 8,057 -9.7%
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 484 14,910 13,895
essence 4 12,182 11,745
électrique 9 16,462 15,990
📌 Carburant avec prix médian le plus élevé : électrique (15,990€)
📌 Carburant avec prix médian le plus bas : essence (11,745€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 89 12,380 11,800
pro 408 15,470 13,990
📌 Test Mann-Whitney (médiane) : p = 0.0000
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +2,190€
📊 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 21.5% (n= 7) ⚡
20k : décote 5.9% (n= 13)
30k : décote 1.4% (n= 23)
40k : décote 2.6% (n= 17)
50k : décote 9.1% (n= 27)
60k : décote 0.4% (n= 29)
70k : décote 3.6% (n= 25)
80k : décote 7.0% (n= 34)
90k : décote 6.1% (n= 37)
100k : décote 8.0% (n= 34)
110k : décote 9.0% (n= 33)
120k : décote 0.6% (n= 28)
130k : décote 3.1% (n= 23)
140k : décote 2.0% (n= 13)
150k : décote 2.6% (n= 22)
160k : décote 9.0% (n= 17)
170k : décote 2.9% (n= 11)
180k : décote 16.9% (n= 7) ⚡
200k : décote 7.5% (n= 5)
210k : décote -13.0% (n= 2)
300k+ : décote 38.0% (n= 2) ⚡
📌 Seuils où la décote s'accélère (> 8%) :
→ 10k km : 21.5%
→ 50k km : 9.1%
→ 100k km : 8.0%
→ 110k km : 9.0%
→ 160k km : 9.0%
→ 180k km : 16.9%
→ 300k+ km : 38.0%
✅ 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.6% (n= 19) ⚡ FORTE
3 ans : décote 13.7% (n= 38)
4 ans : décote 18.8% (n= 51) ⚡ FORTE
5 ans : décote 3.0% (n= 60) 🐢 LENTE
6 ans : décote 7.4% (n= 92)
7 ans : décote 8.1% (n= 57)
8 ans : décote 15.3% (n= 56) ⚡ FORTE
9 ans : décote 13.4% (n= 33)
10 ans : décote 9.7% (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.6%
→ 3 ans : 13.7%
→ 4 ans : 18.8%
→ 8 ans : 15.3%
→ 9 ans : 13.4%
→ 13 ans : 26.7%
→ 17 ans : 29.9%
📌 Décote lente (< 5% par an) :
→ 5 ans : 3.0%
→ 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 = -911.01 × âge + -0.0513 × km + 24,048
📌 R² = 0.776
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 44 ( 8.9%)
👍 Bonne affaire : 91 ( 18.4%)
📊 Prix marché : 251 ( 50.8%)
💰 Cher : 54 ( 10.9%)
🔴 Très cher : 54 ( 10.9%)
📊 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: 10,020€ | Écart: -70.1% | Année: 2018 | Km: 131,461
2. [3156023107] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
Prix: 8,000€ | Attendu: 16,487€ | Écart: -51.5% | 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,290€ | Écart: -51.0% | Année: 2018 | Km: 9,173
4. [3144063650] Citroën Berlingo 1.5 BLUEDHI 100 STE XL DRIVER
Prix: 8,000€ | Attendu: 15,936€ | Écart: -49.8% | Année: 2022 | Km: 87,146
5. [3156192309] Citroën Berlingo FOURGON XL BLUEHDI 100 S&S ETG6 C
Prix: 2,800€ | Attendu: 5,391€ | Écart: -48.1% | 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,223€ | Écart: -47.4% | Année: 2021 | Km: 83,293
7. [3157282073] Citroen berlingo xl 1.6 bluehdi 100 cv club
Prix: 5,980€ | Attendu: 11,204€ | Écart: -46.6% | Année: 2018 | Km: 108,380
8. [3163320492] Citroën Berlingo VAN XL 950 PURETECH 130 S&S EAT8
Prix: 8,250€ | Attendu: 15,065€ | Écart: -45.2% | Année: 2020 | Km: 68,597
9. [2984931973] Citroën Berlingo Electrique Taille XL Club
Prix: 8,590€ | Attendu: 15,445€ | Écart: -44.4% | Année: 2018 | Km: 25,657
10. [3156133024] Citroën berlingo xl électrique confort isotherme T
Prix: 7,990€ | Attendu: 13,838€ | Écart: -42.3% | 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,391€ | Écart: +331.2% | Année: 2017 | Km: 282,000
2. [3155307735] Citroën berlingo
Prix: 7,000€ | Attendu: 1,926€ | Écart: +263.5% | Année: 2013 | Km: 200,500
3. [3115315205] Citroën Jumpy CAB APPROFONDIE XL BLUEHDI 180 S&S E
Prix: 38,190€ | Attendu: 23,135€ | Écart: +65.1% | Année: 2025 | Km: 40
4. [3140204221] Citroen Berlingo Van XL BlueHDi 100 S&S Cabine App
Prix: 9,490€ | Attendu: 5,844€ | Écart: +62.4% | Année: 2018 | Km: 212,912
5. [3097892706] Citroën Berlingo CABINE APPROFONDIE CA TAILLE XL B
Prix: 37,140€ | Attendu: 23,137€ | Écart: +60.5% | Année: 2025 | Km: 1
6. [3148392923] CITROEN BERLINGO 1.5 BlueHDi S&S - 130 XL Feel 7 P
Prix: 19,990€ | Attendu: 12,454€ | Écart: +60.5% | Année: 2018 | Km: 84,000
7. [3130621009] Citroen BERLINGO XL 1.6 HDI 90 ch CABINE APPROFOND
Prix: 11,490€ | Attendu: 7,169€ | Écart: +60.3% | Année: 2014 | Km: 116,000
8. [3158708742] Berlingo XL 1.6L bluehdi aménagé
Prix: 15,000€ | Attendu: 10,095€ | Écart: +48.6% | Année: 2018 | Km: 130,000
9. [3156325212] À vendre - Citroën Berlingo rallongée - Boîte auto
Prix: 9,500€ | Attendu: 6,428€ | Écart: +47.8% | Année: 2016 | Km: 166,000
10. [3159127356] Citroën Berlingo XL 1.6 BlueHDI 100 CV CABINE APPR
Prix: 9,990€ | Attendu: 6,980€ | Écart: +43.1% | Année: 2017 | Km: 173,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 : 513
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_20260320_200432.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_20260320_200432.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_20260320_200432.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_20260320_200432.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
→ 34 annonces récupérées (total en mémoire: 174)
Export de 174 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260320_200432.csv réussi.
Terminé : 174 annonces au total dans /home/ubuntu/app/leboncoin_ads_c4_20260320_200432.csv
INFO: Model override : c4
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_c4_20260320_200432.csv
✅ 174 lus, 174 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 174 lus, 174 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6274 annonces en base
════════════════════════════════════════════════════════════
INFO: 174 list_id lus dans le CSV.
INFO: 176 annonces actives en base pour citroen c4.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_c4_20260320_200432.csv
Brand : citroen | Modèle : c4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 174
Annonces actives en DB : 176
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
✅ 270 annonces chargées (modèle 'c4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 270
📋 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-20 15:18:25
Durée : 862 jours
👤 Répartition par type de vendeur :
pro : 140 (51.9%)
private : 130 (48.1%)
⛽ Répartition par carburant :
diesel : 150 (55.6%)
essence : 120 (44.4%)
🏭 Top 10 marques :
citroen : 270 (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 : 269 / 270
Pourcentage conservé : 99.6%
🔍 Détection des outliers (méthode IQR)...
price_eur : 12 outliers (4.5%)
Bornes IQR : [6,475 ; 13,155]
mileage_km : 12 outliers (4.5%)
Bornes IQR : [66,000 ; 186,000]
age_years : 0 outliers (0.0%)
Bornes IQR : [2 ; 14]
📌 Total d'annonces outliers (au moins 1 variable) : 24 (8.9%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 269
Dont outliers identifiés : 24
Annonces non-outliers : 245
Plages de valeurs :
price_eur : [ 4,500 ; 11,000] (moy: 9,532)
mileage_km : [ 186 ; 150,000] (moy: 120,805)
year_model : [ 2,015 ; 2,022] (moy: 2,017)
age_years : [ 4 ; 11] (moy: 9)
km_per_year : [ 17 ; 37,387] (moy: 14,661)
💾 269 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 269 9531.713755 9990.0 1471.937373 4500.000000 8980.0 10650.000000 11000.00 1670.000000
mileage_km 269 120804.910781 129135.0 29824.152181 186.000000 111000.0 141000.000000 150000.00 30000.000000
year_model 269 2017.319703 2017.0 1.781440 2015.000000 2016.0 2019.000000 2022.00 3.000000
age_years 269 8.680297 9.0 1.781440 4.000000 7.0 10.000000 11.00 3.000000
km_per_year 269 14661.186426 14222.0 5111.156489 16.909091 12000.0 16666.666667 37386.75 4666.666667
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 269 9,532 9,990 1,471.94 4,500 8,980 10,650 11,000 1,670
mileage_km 269 120,805 129,135 29,824.15 186 111,000 141,000 150,000 30,000
year_model 269 2,017 2,017 1.78 2,015 2,016 2,019 2,022 3
age_years 269 8.7 9.0 1.78 4.0 7.0 10.0 11.0 3.0
km_per_year 269 14,661.2 14,222.0 5,111.16 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,472)
→ Étendue : [4,500 ; 11,000] (IQR = 1,670)
📌 mileage_km :
→ Distribution asymétrique GAUCHE (moyenne 120,805 < médiane 129,135)
Quelques valeurs basses tirent la moyenne vers le bas.
→ Faible dispersion (CV = 25%, σ = 29,824)
→ Étendue : [186 ; 150,000] (IQR = 30,000)
📌 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,111)
→ Étendue : [17 ; 37,387] (IQR = 4,667)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
2026-03-20 20:04:51,839 [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-20 20:04:51,839 [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 51 8,903 9,000 N/A
2016 51 9,021 9,500 -1.3%
2017 53 9,763 10,200 -8.2%
2018 38 9,619 9,990 +1.5%
2019 43 10,076 10,000 -4.7%
2020 19 9,784 9,990 +2.9%
2021 12 10,565 10,745 -8.0%
2022 2 10,495 10,495 +0.7%
📌 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 72 9,545 9,990 -6.1%
120-160k 174 9,504 9,990 -0.4%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
4 2 10,495 N/A
5 12 10,565 +0.7%
6 19 9,784 -7.4%
7 43 10,076 +3.0%
8 38 9,619 -4.5%
9 53 9,763 +1.5%
10 51 9,021 -7.6%
11 51 8,903 -1.3%
📌 La décote ralentit significativement à 7 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 149 9,948 10,000
essence 120 9,015 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 129 9,199 9,500
pro 140 9,838 9,990
📌 Test Mann-Whitney (médiane) : p = 0.0070
✅ 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 -2.0% (n= 10)
90k : décote 7.9% (n= 16)
100k : décote -7.8% (n= 15)
110k : décote 7.9% (n= 31)
120k : décote -5.2% (n= 41)
130k : décote 1.4% (n= 54)
140k : décote 2.8% (n= 71)
150k : décote -1.4% (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.7% (n= 12) 🐢 LENTE
6 ans : décote 7.4% (n= 19)
7 ans : décote -3.0% (n= 43) 🐢 LENTE
8 ans : décote 4.5% (n= 38)
9 ans : décote -1.5% (n= 53) 🐢 LENTE
10 ans : décote 7.6% (n= 51)
11 ans : décote 1.3% (n= 51) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 5 ans : -0.7%
→ 7 ans : -3.0%
→ 8 ans : 4.5%
→ 9 ans : -1.5%
→ 11 ans : 1.3%
✅ 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.06 × âge + -0.0012 × km + 11,860
📌 R² = 0.093
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 32 ( 11.9%)
👍 Bonne affaire : 28 ( 10.4%)
📊 Prix marché : 138 ( 51.3%)
💰 Cher : 63 ( 23.4%)
🔴 Très cher : 8 ( 3.0%)
📊 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,212€ | Écart: -50.2% | Année: 2016 | Km: 110,000
2. [3144627553] Grand C4 Picasso
Prix: 4,500€ | Attendu: 8,925€ | Écart: -49.6% | Année: 2015 | Km: 140,000
3. [3148620999] C4 Picasso
Prix: 4,600€ | Attendu: 8,922€ | Écart: -48.4% | Année: 2015 | Km: 142,000
4. [3155010351] C4 Picasso
Prix: 4,600€ | Attendu: 8,922€ | Écart: -48.4% | Année: 2015 | Km: 142,000
5. [3159599228] Vends C4 Grand Picasso II 7 places
Prix: 6,000€ | Attendu: 9,687€ | Écart: -38.1% | Année: 2018 | Km: 135,000
6. [3148926526] C4 grand Picasso 2l hdi 150cv exclusive
Prix: 5,800€ | Attendu: 9,194€ | É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,194€ | Écart: -36.9% | Année: 2016 | Km: 125,000
8. [3159003549] Vends CITROEN GRAND C4 PICASSO Intensive
Prix: 5,900€ | Attendu: 9,179€ | Écart: -35.7% | Année: 2016 | Km: 138,000
9. [3162574098] Citroën c4 Picasso 7 places
Prix: 6,000€ | Attendu: 9,202€ | Écart: -34.8% | Année: 2016 | Km: 118,000
10. [3147269001] CITROEN GRAND C4 PICASSO Spacetourer
Prix: 6,000€ | Attendu: 9,180€ | É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,913€ | Écart: +23.3% | Année: 2015 | Km: 149,900
2. [3146221969] Citroen C4 Grand Picasso 7 Places - 2.0 BlueHDi 15
Prix: 10,990€ | Attendu: 8,922€ | Écart: +23.2% | Année: 2015 | Km: 142,000
3. [2934302132] Citroen Grand C4 Picasso PureTech 130ch Confort S&
Prix: 10,990€ | Attendu: 8,943€ | Écart: +22.9% | Année: 2015 | Km: 123,901
4. [3136798926] Grand C4 Picasso 120 HDI
Prix: 11,000€ | Attendu: 8,953€ | Écart: +22.9% | Année: 2015 | Km: 116,000
5. [3155706473] Citroën Grand C4 Picasso 1.6 BlueHdi 115 Intensive
Prix: 10,995€ | Attendu: 8,955€ | Écart: +22.8% | Année: 2015 | Km: 113,981
6. [3138161286] Citroën C4 PICASSO II Exclusive 2.0 BLUEHDI 150CV
Prix: 10,990€ | Attendu: 8,963€ | Écart: +22.6% | 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,031€ | Écart: +21.6% | Année: 2015 | Km: 47,966
8. [3160469081] Grand C4 Picasso 7 places
Prix: 10,800€ | Attendu: 8,996€ | Écart: +20.0% | Année: 2015 | Km: 78,300
9. [3149154360] Grand c4
Prix: 11,000€ | Attendu: 9,170€ | Écart: +20.0% | Année: 2016 | Km: 146,230
10. [3071933719] Citroën C4 grand Picasso
Prix: 11,000€ | Attendu: 9,171€ | Écart: +19.9% | Année: 2016 | Km: 145,000
🔎 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 : 270
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_20260320_200453.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_20260320_200453.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
→ 33 annonces récupérées (total en mémoire: 103)
Export de 103 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260320_200453.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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_20260320_200506.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
→ 14 annonces récupérées (total en mémoire: 1064)
Export de 1064 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260320_200506.csv réussi.
Terminé : 1064 annonces au total dans /home/ubuntu/app/leboncoin_ads_5008_20260320_200506.csv
INFO: Model override : 5008
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_5008_20260320_200506.csv
✅ 1064 lus, 1064 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 1064 lus, 1064 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6284 annonces en base
════════════════════════════════════════════════════════════
INFO: 1056 list_id lus dans le CSV.
INFO: 1080 annonces actives en base pour peugeot 5008.
INFO: 24 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_5008_20260320_200506.csv
Brand : peugeot | Modèle : 5008
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1056
Annonces actives en DB : 1080
Absentes du crawl : 24
Marquées indisponibles : 24
════════════════════════════════════════════════════════════
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
✅ 1550 annonces chargées (modèle '5008')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 1550
📋 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-20 20:24:57
Durée : 652 jours
👤 Répartition par type de vendeur :
private : 984 (63.5%)
pro : 566 (36.5%)
⛽ Répartition par carburant :
diesel : 1418 (91.5%)
essence : 131 (8.5%)
hybride : 1 (0.1%)
🏭 Top 10 marques :
peugeot : 1550 (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 : 1548 / 1550
Pourcentage conservé : 99.9%
🔍 Détection des outliers (méthode IQR)...
price_eur : 0 outliers (0.0%)
Bornes IQR : [-224 ; 12,906]
mileage_km : 34 outliers (2.2%)
Bornes IQR : [58,674 ; 348,796]
age_years : 0 outliers (0.0%)
Bornes IQR : [5 ; 21]
📌 Total d'annonces outliers (au moins 1 variable) : 34 (2.2%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 1548
Dont outliers identifiés : 34
Annonces non-outliers : 1514
Plages de valeurs :
price_eur : [ 700 ; 11,000] (moy: 6,334)
mileage_km : [ 1 ; 410,000] (moy: 205,014)
year_model : [ 2,009 ; 2,021] (moy: 2,013)
age_years : [ 5 ; 17] (moy: 13)
km_per_year : [ 0 ; 53,776] (moy: 16,198)
💾 1548 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 1548 6333.648579 5990.000000 2312.289436 700.000000 4700.000000 7982.500000 11000.000000 3282.500000
mileage_km 1548 205013.724160 205000.000000 57269.136270 1.000000 167469.500000 240000.000000 410000.000000 72530.500000
year_model 1548 2013.014212 2013.000000 2.491055 2009.000000 2011.000000 2015.000000 2021.000000 4.000000
age_years 1548 12.985788 13.000000 2.491055 5.000000 11.000000 15.000000 17.000000 4.000000
km_per_year 1548 16197.949888 15698.833333 5046.136162 0.111111 13136.363636 18549.423077 53776.166667 5413.059441
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 1,548 6,334 5,990 2,312.29 700 4,700 7,982 11,000 3,282
mileage_km 1,548 205,014 205,000 57,269.14 1 167,470 240,000 410,000 72,530
year_model 1,548 2,013 2,013 2.49 2,009 2,011 2,015 2,021 4
age_years 1,548 13.0 13.0 2.49 5.0 11.0 15.0 17.0 4.0
km_per_year 1,548 16,197.9 15,698.8 5,046.14 0.1 13,136.4 18,549.4 53,776.2 5,413.1
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 6,334 > médiane 5,990)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 37%, σ = 2,312)
→ Étendue : [700 ; 11,000] (IQR = 3,282)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 28%, σ = 57,269)
→ Étendue : [1 ; 410,000] (IQR = 72,530)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 2)
→ Étendue : [2,009 ; 2,021] (IQR = 4)
📌 age_years :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ 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,046)
→ Étendue : [0 ; 53,776] (IQR = 5,413)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
2026-03-20 20:07:06,091 [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-20 20:07:06,092 [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 28 4,604 4,395 N/A
2010 230 4,614 4,500 -0.2%
2011 266 4,912 4,990 -6.5%
2012 246 5,544 5,500 -12.9%
2013 189 5,926 5,700 -6.9%
2014 157 7,013 6,990 -18.3%
2015 132 7,909 7,990 -12.8%
2016 158 8,098 7,994 -2.4%
2017 58 9,673 10,000 -19.5%
2018 44 9,845 10,345 -1.8%
2019 26 10,467 10,495 -6.3%
2020 13 9,489 9,990 +9.3%
📌 Décote annuelle moyenne : -7.1%
📊 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 50 8,821 9,490 -3.6%
120-160k 237 8,560 8,999 -3.0%
160-200k 395 7,103 6,990 -17.0%
200k+ 841 5,184 4,990 -27.0%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
6 13 9,489 N/A
7 26 10,467 +10.3%
8 44 9,845 -5.9%
9 58 9,673 -1.7%
10 158 8,098 -16.3%
11 132 7,909 -2.3%
12 157 7,013 -11.3%
13 189 5,926 -15.5%
14 246 5,544 -6.4%
15 266 4,912 -11.4%
16 230 4,614 -6.1%
17 28 4,604 -0.2%
📌 La décote ralentit significativement à 9 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 1417 6,190 5,990
essence 130 7,859 8,650
📌 Carburant avec prix médian le plus élevé : essence (8,650€)
📌 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 983 5,907 5,500
pro 565 7,077 6,500
📌 Test Mann-Whitney (médiane) : p = 0.0000
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +1,000€
📊 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 8.0% (n= 21)
120k : décote -10.5% (n= 36)
130k : décote -0.2% (n= 49)
140k : décote 12.3% (n= 70) ⚡
150k : décote 4.0% (n= 82)
160k : décote 0.8% (n= 94)
170k : décote 6.4% (n=106)
180k : décote 9.4% (n= 99)
190k : décote 2.2% (n= 96)
200k : décote 4.8% (n=108)
210k : décote 2.7% (n=118)
220k : décote 5.2% (n=117)
230k : décote 6.5% (n= 91)
240k : décote -0.7% (n=106)
250k : décote 6.2% (n= 59)
260k : décote 12.7% (n= 60) ⚡
270k : décote 7.3% (n= 44)
280k : décote -15.0% (n= 29)
290k : décote 27.0% (n= 27) ⚡
300k+ : décote 3.5% (n= 82)
📌 Seuils où la décote s'accélère (> 8%) :
→ 20k km : 17.2%
→ 70k km : 26.8%
→ 140k km : 12.3%
→ 180k km : 9.4%
→ 260k km : 12.7%
→ 290k km : 27.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.3% (n= 26) 🐢 LENTE
8 ans : décote 5.9% (n= 44)
9 ans : décote 1.7% (n= 58) 🐢 LENTE
10 ans : décote 16.3% (n=158) ⚡ FORTE
11 ans : décote 2.3% (n=132) 🐢 LENTE
12 ans : décote 11.3% (n=157)
13 ans : décote 15.5% (n=189) ⚡ FORTE
14 ans : décote 6.4% (n=246)
15 ans : décote 11.4% (n=266)
16 ans : décote 6.1% (n=230)
17 ans : décote 0.2% (n= 28) 🐢 LENTE
📌 Décote rapide (> 10% par an) :
→ 10 ans : 16.3%
→ 12 ans : 11.3%
→ 13 ans : 15.5%
→ 15 ans : 11.4%
📌 Décote lente (< 5% par an) :
→ 7 ans : -10.3%
→ 9 ans : 1.7%
→ 11 ans : 2.3%
→ 17 ans : 0.2%
✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -514.38 × âge + -0.0172 × km + 16,544
📌 R² = 0.646
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 230 ( 14.9%)
👍 Bonne affaire : 225 ( 14.5%)
📊 Prix marché : 619 ( 40.0%)
💰 Cher : 207 ( 13.4%)
🔴 Très cher : 267 ( 17.2%)
📊 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,721€ | Écart: -82.5% | Année: 2014 | Km: 270,000
2. [3098662962] Peugeot 5008 hdi
Prix: 1,900€ | Attendu: 8,715€ | Écart: -78.2% | Année: 2016 | Km: 155,900
3. [3163979849] Opel Corsa 2009 232000km
Prix: 1,900€ | Attendu: 8,433€ | Écart: -77.5% | Année: 2018 | Km: 232,000
4. [3161987772] 5008 7 places
Prix: 1,000€ | Attendu: 4,178€ | Écart: -76.1% | Année: 2011 | Km: 270,000
5. [3154103448] Vend Peugeot 5008 dans l etat
Prix: 1,000€ | Attendu: 4,094€ | Écart: -75.6% | Année: 2010 | Km: 245,000
6. [3145452074] Peugeot 5008
Prix: 1,000€ | Attendu: 3,711€ | Écart: -73.1% | Année: 2012 | Km: 327,000
7. [3151017355] Vends Peugeot 5008 a spécialiste
Prix: 1,500€ | Attendu: 5,382€ | Écart: -72.1% | Année: 2012 | Km: 230,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'
8. [3154289763] 5008 essence sur l'état
Prix: 1,700€ | Attendu: 6,079€ | Écart: -72.0% | Année: 2011 | Km: 159,660
9. [3162529124] Peugeot 5008
Prix: 1,500€ | Attendu: 5,138€ | Écart: -70.8% | Année: 2013 | Km: 274,000
10. [3164455221] Peugeot 5008
Prix: 1,800€ | Attendu: 5,724€ | Écart: -68.6% | 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,770€ | Écart: +99.0% | Année: 2009 | Km: 234,000
2. [3152738100] Peugeot 5008 2l hdi 150cv
Prix: 8,000€ | Attendu: 4,394€ | Écart: +82.1% | Année: 2010 | Km: 227,600
3. [3126969597] Peugeot 5008
Prix: 4,200€ | Attendu: 2,374€ | Écart: +76.9% | Année: 2009 | Km: 315,000
4. [3126598226] Peugeot 5008 1.6 hdi fap confort pack 7pl
Prix: 7,990€ | Attendu: 4,585€ | Écart: +74.3% | Année: 2010 | Km: 216,500
5. [3157618424] Peugeot 5008
Prix: 3,500€ | Attendu: 2,028€ | Écart: +72.6% | Année: 2010 | Km: 365,000
6. [3155918327] Peugeot 5008
Prix: 6,500€ | Attendu: 3,770€ | Écart: +72.4% | Année: 2009 | Km: 234,000
7. [3147840406] Peugeot 5008 1.6 hdi FAP Premium 7pls
Prix: 6,990€ | Attendu: 4,077€ | Écart: +71.4% | Année: 2010 | Km: 246,000
8. [3159646980] PEUGEOT 5008 2.0 HDI 163cv
Prix: 7,500€ | Attendu: 4,434€ | Écart: +69.1% | Année: 2012 | Km: 285,000
9. [3129737643] 🚗 Peugeot 5008 1.6 HDi 110 Premium – 7 places
Prix: 10,000€ | Attendu: 5,937€ | Écart: +68.4% | Année: 2010 | Km: 138,000
10. [3152860837] Peugeot 5008 7 places
Prix: 8,500€ | Attendu: 5,197€ | Écart: +63.6% | Année: 2010 | Km: 181,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 73 annonces avec prix suspect
💾 73 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 1550
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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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_20260320_200707.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
→ 32 annonces récupérées (total en mémoire: 1502)
Export de 1502 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260320_200707.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_20260320_201008.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_20260320_201008.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
→ 26 annonces récupérées (total en mémoire: 96)
Export de 96 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260320_201008.csv réussi.
Terminé : 96 annonces au total dans /home/ubuntu/app/leboncoin_ads_nv200_20260320_201008.csv
INFO: Model override : nv200
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_nv200_20260320_201008.csv
✅ 96 lus, 96 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 96 lus, 96 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6285 annonces en base
════════════════════════════════════════════════════════════
INFO: 96 list_id lus dans le CSV.
INFO: 97 annonces actives en base pour nissan nv200.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_nv200_20260320_201008.csv
Brand : nissan | Modèle : nv200
════════════════════════════════════════════════════════════
Annonces dans le CSV : 96
Annonces actives en DB : 97
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/nv200/figures
🔍 Modèle filtré : nv200
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 175 annonces chargées (modèle 'nv200')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 175
📋 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-20 19:19:36
Durée : 538 jours
👤 Répartition par type de vendeur :
private : 121 (69.1%)
pro : 54 (30.9%)
⛽ Répartition par carburant :
diesel : 175 (100.0%)
🏭 Top 10 marques :
nissan : 175 (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 : 175 / 175
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 1 outliers (0.6%)
Bornes IQR : [-3,118 ; 19,862]
mileage_km : 1 outliers (0.6%)
Bornes IQR : [-42,678 ; 368,470]
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 : 175
Dont outliers identifiés : 2
Annonces non-outliers : 173
Plages de valeurs :
price_eur : [ 2,000 ; 19,990] (moy: 8,681)
mileage_km : [ 1 ; 420,000] (moy: 164,927)
year_model : [ 2,009 ; 2,019] (moy: 2,015)
age_years : [ 7 ; 17] (moy: 11)
km_per_year : [ 0 ; 30,000] (moy: 14,991)
💾 175 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 175 8680.760000 8300.0 3758.869622 2000.000000 5500.000000 11245.000000 19990.0 5745.000000
mileage_km 175 164927.405714 152000.0 72361.544331 1.000000 111503.000000 214290.000000 420000.0 102787.000000
year_model 175 2014.857143 2015.0 2.698902 2009.000000 2013.000000 2017.000000 2019.0 4.000000
age_years 175 11.142857 11.0 2.698902 7.000000 9.000000 13.000000 17.0 4.000000
km_per_year 175 14990.843111 14000.0 6089.152163 0.066667 10447.237981 18867.521368 30000.0 8420.283387
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 175 8,681 8,300 3,758.87 2,000 5,500 11,245 19,990 5,745
mileage_km 175 164,927 152,000 72,361.54 1 111,503 214,290 420,000 102,787
year_model 175 2,015 2,015 2.70 2,009 2,013 2,017 2,019 4
age_years 175 11.1 11.0 2.70 7.0 9.0 13.0 17.0 4.0
km_per_year 175 14,990.8 14,000.0 6,089.15 0.1 10,447.2 18,867.5 30,000.0 8,420.3
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 43%, σ = 3,759)
→ Étendue : [2,000 ; 19,990] (IQR = 5,745)
📌 mileage_km :
→ Distribution asymétrique DROITE (moyenne 164,927 > médiane 152,000)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 44%, σ = 72,362)
→ Étendue : [1 ; 420,000] (IQR = 102,787)
📌 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,991 > médiane 14,000)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 41%, σ = 6,089)
→ Étendue : [0 ; 30,000] (IQR = 8,420)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
2026-03-20 20:10:24,761 [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-20 20:10:24,762 [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.
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2010 9 4,764 4,200 N/A
2011 16 5,056 4,795 -6.1%
2012 11 6,684 5,200 -32.2%
2013 23 7,314 7,900 -9.4%
2014 22 8,797 8,740 -20.3%
2015 11 8,072 8,999 +8.2%
2016 24 8,998 8,000 -11.5%
2017 22 10,651 9,895 -18.4%
2018 21 11,843 12,000 -11.2%
2019 15 11,246 10,990 +5.0%
📌 Décote annuelle moyenne : -10.6%
📊 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 35 11,723 10,990 -14.1%
120-160k 40 9,937 10,245 -15.2%
160-200k 30 6,886 7,000 -30.7%
200k+ 54 5,520 5,200 -19.8%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
7 15 11,246 N/A
8 21 11,843 +5.3%
9 22 10,651 -10.1%
10 24 8,998 -15.5%
11 11 8,072 -10.3%
12 22 8,797 +9.0%
13 23 7,314 -16.9%
14 11 6,684 -8.6%
15 16 5,056 -24.4%
16 9 4,764 -5.8%
📌 La décote ralentit significativement à 16 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 175 8,681 8,300
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 121 8,144 7,800
pro 54 9,884 9,890
📌 Test Mann-Whitney (médiane) : p = 0.0032
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +2,090€
📊 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 8.0% (n= 8)
120k : décote -12.2% (n= 11)
130k : décote 14.6% (n= 12) ⚡
140k : décote 11.3% (n= 12) ⚡
150k : décote 20.7% (n= 5) ⚡
160k : décote -12.4% (n= 6)
170k : décote 32.3% (n= 6) ⚡
180k : décote -16.8% (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 -4.6% (n= 7)
230k : décote 2.5% (n= 7)
240k : décote -6.4% (n= 7)
250k : décote 28.4% (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%
→ 130k km : 14.6%
→ 140k km : 11.3%
→ 150k km : 20.7%
→ 170k km : 32.3%
→ 210k km : 21.0%
→ 250k km : 28.4%
→ 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 -5.3% (n= 21) 🐢 LENTE
9 ans : décote 10.1% (n= 22)
10 ans : décote 15.5% (n= 24) ⚡ FORTE
11 ans : décote 10.3% (n= 11)
12 ans : décote -9.0% (n= 22) 🐢 LENTE
13 ans : décote 16.9% (n= 23) ⚡ FORTE
14 ans : décote 8.6% (n= 11)
15 ans : décote 24.4% (n= 16) ⚡ FORTE
16 ans : décote 5.8% (n= 9)
📌 Décote rapide (> 10% par an) :
→ 9 ans : 10.1%
→ 10 ans : 15.5%
→ 11 ans : 10.3%
→ 13 ans : 16.9%
→ 15 ans : 24.4%
📌 Décote lente (< 5% par an) :
→ 8 ans : -5.3%
→ 12 ans : -9.0%
✅ 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.74 × âge + -0.0299 × km + 18,715
📌 R² = 0.601
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 35 ( 20.1%)
👍 Bonne affaire : 31 ( 17.8%)
📊 Prix marché : 55 ( 31.6%)
💰 Cher : 24 ( 13.8%)
🔴 Très cher : 29 ( 16.7%)
📊 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,849€ | Écart: -83.1% | Année: 2011 | Km: 1
2. [3159812831] Vend utilitaires nv200 nissan
Prix: 2,000€ | Attendu: 6,763€ | Écart: -70.4% | Année: 2011 | Km: 170,000
3. [3160668277] Nissan nv 200
Prix: 3,000€ | Attendu: 7,140€ | Écart: -58.0% | Année: 2013 | Km: 188,000
4. [3164906877] Nissan
Prix: 3,500€ | Attendu: 6,659€ | Écart: -47.4% | Année: 2016 | Km: 250,000
5. [3109648143] Nissan nv200 1.5 dci turbo
Prix: 3,990€ | Attendu: 7,042€ | Écart: -43.3% | Année: 2012 | Km: 176,000
6. [3154995725] Nissan NV200 Fourgon 1.5 DCi 110ch BVM5 Optima - 2
Prix: 4,000€ | Attendu: 6,824€ | Écart: -41.4% | Année: 2014 | Km: 213,880
7. [3116605709] Nissan NV200
Prix: 4,500€ | Attendu: 7,661€ | Écart: -41.3% | Année: 2011 | Km: 140,000
8. [3127367839] Nissan NV200 1.5 DCI
Prix: 5,490€ | Attendu: 8,858€ | Écart: -38.0% | Année: 2014 | Km: 145,899
9. [3142568361] Nissan nv 200 1.5 90ch
Prix: 5,200€ | Attendu: 8,364€ | Écart: -37.8% | Année: 2016 | Km: 193,000
10. [3164561805] Nissan nv200
Prix: 5,290€ | Attendu: 8,155€ | Écart: -35.1% | Année: 2016 | Km: 200,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3156635875] Nissan NV200
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: 3,500€ | Attendu: 592€ | Écart: +491.4% | Année: 2010 | Km: 361,000
2. [3154023820] Camion
Prix: 3,500€ | Attendu: 771€ | Écart: +353.8% | Année: 2010 | Km: 355,000
3. [3153372541] Nissan nv 200
Prix: 10,500€ | Attendu: 5,585€ | Écart: +88.0% | Année: 2013 | Km: 240,000
4. [3114600758] Van
Prix: 18,500€ | Attendu: 10,291€ | Écart: +79.8% | Année: 2014 | Km: 98,000
5. [3156516616] 🚐 Nissan NV200 aménagé – Prêt à voyager
Prix: 9,300€ | Attendu: 5,776€ | Écart: +61.0% | Année: 2011 | Km: 203,000
6. [3158536730] Véhicule aménagé
Prix: 13,500€ | Attendu: 8,418€ | Écart: +60.4% | Année: 2012 | Km: 130,000
7. [3083668151] Nissan NV200 1.5 DCI 90CH VAN AMENAGE
Prix: 14,999€ | Attendu: 9,601€ | Écart: +56.2% | Année: 2014 | Km: 121,041
8. [3163982347] Utilitaire aménagé Van NV200 2016 84000 km
Prix: 17,900€ | Attendu: 11,625€ | Écart: +54.0% | Année: 2016 | Km: 84,000
9. [3155364135] Utilitaire Van Nissan NV200 2016
Prix: 17,900€ | Attendu: 11,655€ | Écart: +53.6% | Année: 2016 | Km: 83,000
10. [3150255673] Van aménagé Nissan NV200
Prix: 8,500€ | Attendu: 5,648€ | Écart: +50.5% | 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 : 175
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 : 6285
============================================================
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_20260320_200000.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_clio_4_20260320_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_20260320_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_20260320_200321.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_yaris_20260320_200321.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_20260320_200321.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_20260320_200336.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_i20_20260320_200336.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_20260320_200336.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_20260320_200352.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_berlingo_20260320_200352.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_20260320_200352.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_20260320_200432.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_c4_20260320_200432.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_20260320_200432.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_20260320_200506.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_5008_20260320_200506.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_20260320_200506.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_20260320_201008.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_nv200_20260320_201008.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_20260320_201008.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-20T20:10:26.498870
Duration: 626.5s
STATUS:SUCCESS