Administration
← Retour
Log : 20260320_140000
=== CRAWL 20260320_140000 ===
Trigger: scheduled
Started: 2026-03-20T14:00:00.000285
============================================================
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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.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_140001.csv réussi.
Terminé : 1435 annonces au total dans /home/ubuntu/app/leboncoin_ads_clio_4_20260320_140001.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_140001.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
📌 6216 annonces en base
════════════════════════════════════════════════════════════
INFO: 1424 list_id lus dans le CSV.
INFO: 1467 annonces actives en base pour renault clio_4.
INFO: 43 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_clio_4_20260320_140001.csv
Brand : renault | Modèle : clio_4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1424
Annonces actives en DB : 1467
Absentes du crawl : 43
Marquées indisponibles : 43
════════════════════════════════════════════════════════════
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
✅ 2473 annonces chargées (modèle 'clio_4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 2473
📋 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 14:59:20
Durée : 714 jours
👤 Répartition par type de vendeur :
private : 1588 (64.2%)
pro : 885 (35.8%)
⛽ Répartition par carburant :
diesel : 1352 (54.7%)
essence : 1117 (45.2%)
autre : 3 (0.1%)
gpl : 1 (0.0%)
🏭 Top 10 marques :
renault : 2473 (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 : 2472 / 2473
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 36 outliers (1.5%)
Bornes IQR : [4,740 ; 10,740]
mileage_km : 37 outliers (1.5%)
Bornes IQR : [18,081 ; 253,152]
age_years : 8 outliers (0.3%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 66 (2.7%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 2472
Dont outliers identifiés : 66
Annonces non-outliers : 2406
Plages de valeurs :
price_eur : [ 3,300 ; 9,000] (moy: 7,620)
mileage_km : [ 125 ; 380,000] (moy: 137,598)
year_model : [ 2,014 ; 2,024] (moy: 2,017)
age_years : [ 2 ; 12] (moy: 9)
km_per_year : [ 18 ; 54,286] (moy: 16,087)
💾 2472 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 7 signaux de suspicion détectés
km_trop_bas_diesel: 5
km_trop_bas_essence: 2
💾 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 2472 7619.718851 7900.00 1095.694614 3300.000000 6990.000000 8490.000000 9000.000000 1500.000000
mileage_km 2472 137598.305825 134000.00 44477.760061 125.000000 106232.250000 165000.000000 380000.000000 58767.750000
year_model 2472 2017.263754 2017.00 1.366186 2014.000000 2016.000000 2018.000000 2024.000000 2.000000
age_years 2472 8.736246 9.00 1.366186 2.000000 8.000000 10.000000 12.000000 2.000000
km_per_year 2472 16086.860123 15657.25 5689.217967 17.857143 12133.897321 19575.071429 54285.714286 7441.174107
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 2,472 7,620 7,900 1,095.69 3,300 6,990 8,490 9,000 1,500
mileage_km 2,472 137,598 134,000 44,477.76 125 106,232 165,000 380,000 58,768
year_model 2,472 2,017 2,017 1.37 2,014 2,016 2,018 2,024 2
age_years 2,472 8.7 9.0 1.37 2.0 8.0 10.0 12.0 2.0
km_per_year 2,472 16,086.9 15,657.2 5,689.22 17.9 12,133.9 19,575.1 54,285.7 7,441.2
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,096)
→ Étendue : [3,300 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 32%, σ = 44,478)
→ Étendue : [125 ; 380,000] (IQR = 58,768)
📌 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,689)
→ Étendue : [18 ; 54,286] (IQR = 7,441)
======================================================================
2026-03-20 14:02:44,806 [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 14:02:44,807 [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 708 7,289 7,500 +0.4%
2017 667 7,650 7,900 -4.9%
2018 523 7,727 7,990 -1.0%
2019 335 7,964 8,200 -3.1%
2020 100 8,299 8,595 -4.2%
2021 23 8,389 8,490 -1.1%
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 14 8,080 8,600 +6.6%
50-80k 154 8,207 8,490 +1.6%
80-120k 781 7,992 8,000 -2.6%
120-160k 786 7,905 7,990 -1.1%
160-200k 508 7,154 7,000 -9.5%
200k+ 221 5,924 5,890 -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 100 8,299 -1.1%
7 335 7,964 -4.0%
8 523 7,727 -3.0%
9 667 7,650 -1.0%
10 708 7,289 -4.7%
11 55 7,319 +0.4%
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 1352 7,477 7,700
essence 1116 7,792 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 1587 7,457 7,600
pro 885 7,912 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 17.9% (n= 4) ⚡
50k : décote -16.5% (n= 30)
60k : décote -3.1% (n= 46)
70k : décote 2.7% (n= 78)
80k : décote -0.3% (n=121)
90k : décote 0.9% (n=187)
100k : décote 2.2% (n=205)
110k : décote 0.3% (n=268)
120k : décote -1.9% (n=187)
130k : décote 1.4% (n=200)
140k : décote -0.2% (n=204)
150k : décote 3.2% (n=195)
160k : décote 3.6% (n=165)
170k : décote 2.1% (n=138)
180k : décote 3.7% (n=106)
190k : décote 3.7% (n= 99)
200k : décote 5.9% (n= 86)
210k : décote 4.7% (n= 45)
220k : décote -3.7% (n= 20)
230k : décote 10.9% (n= 26) ⚡
240k : décote 4.4% (n= 8)
250k : décote 0.6% (n= 13)
260k : décote 1.1% (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 : 17.9%
→ 230k km : 10.9%
→ 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.1% (n=100) 🐢 LENTE
7 ans : décote 4.0% (n=335)
8 ans : décote 3.0% (n=523) 🐢 LENTE
9 ans : décote 1.0% (n=667) 🐢 LENTE
10 ans : décote 4.7% (n=708)
11 ans : décote -0.4% (n= 55) 🐢 LENTE
12 ans : décote 4.7% (n= 53)
📌 Décote lente (< 5% par an) :
→ 4 ans : -10.5%
→ 6 ans : 1.1%
→ 7 ans : 4.0%
→ 8 ans : 3.0%
→ 9 ans : 1.0%
→ 10 ans : 4.7%
→ 11 ans : -0.4%
→ 12 ans : 4.7%
✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -176.56 × âge + -0.0128 × km + 10,926
📌 R² = 0.338
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 147 ( 5.9%)
👍 Bonne affaire : 308 ( 12.5%)
📊 Prix marché : 1542 ( 62.4%)
💰 Cher : 401 ( 16.2%)
🔴 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,832€ | Écart: -57.9% | Année: 2018 | Km: 131,159
2. [3147790884] Clio 4 phase 2
Prix: 3,500€ | Attendu: 7,847€ | Écart: -55.4% | Année: 2018 | Km: 130,000
3. [3150016687] Clio 4
Prix: 4,000€ | Attendu: 7,776€ | Écart: -48.6% | Année: 2016 | Km: 108,000
4. [3162715888] Clio 4 2018
Prix: 4,700€ | Attendu: 9,001€ | É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,199€ | É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,985€ | Écart: -46.6% | Année: 2019 | Km: 55,000
8. [3161045630] Clio 4 75ch
Prix: 4,000€ | Attendu: 6,994€ | É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,408€ | É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,818€ | Écart: +45.3% | Année: 2019 | Km: 380,000
2. [3163754314] Clio 4 initiale paris
Prix: 8,900€ | Attendu: 6,596€ | Écart: +34.9% | Année: 2016 | Km: 200,000
3. [3161126708] RENAULT CLIO IV dCi 110 Initiale Paris | FULL OPTI
Prix: 8,990€ | Attendu: 6,683€ | Écart: +34.5% | Année: 2017 | Km: 207,000
4. [3151967791] Clio 4 initiale Paris
Prix: 8,900€ | Attendu: 6,978€ | Écart: +27.5% | Année: 2017 | Km: 184,000
5. [3144046817] Clio 5
Prix: 9,000€ | Attendu: 7,062€ | Écart: +27.4% | Année: 2019 | Km: 205,000
6. [3155921737] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,666€ | Écart: +27.4% | Année: 2016 | Km: 194,600
7. [3155418369] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,666€ | Écart: +27.4% | Année: 2016 | Km: 194,600
8. [3151279318] Clio 4 ÉDITION ONE
Prix: 8,899€ | Attendu: 7,016€ | Écart: +26.8% | Année: 2016 | Km: 167,264
9. [3162574180] RENAULT CLIO IV BUSINESS dCi 90 eco2 90g Business
Prix: 8,990€ | Attendu: 7,097€ | Écart: +26.7% | Année: 2016 | Km: 161,000
10. [3138994898] Clio 4 pack gt line
Prix: 9,000€ | Attendu: 7,109€ | Écart: +26.6% | Année: 2016 | Km: 160,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 : 2473
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_140246.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
→ 17 annonces récupérées (total en mémoire: 52)
Export de 52 annonces vers /home/ubuntu/app/leboncoin_ads_yaris_20260320_140246.csv réussi.
Terminé : 52 annonces au total dans /home/ubuntu/app/leboncoin_ads_yaris_20260320_140246.csv
INFO: Model override : yaris
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_yaris_20260320_140246.csv
✅ 52 lus, 52 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 52 lus, 52 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6216 annonces en base
════════════════════════════════════════════════════════════
INFO: 52 list_id lus dans le CSV.
INFO: 53 annonces actives en base pour toyota yaris.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_yaris_20260320_140246.csv
Brand : toyota | Modèle : yaris
════════════════════════════════════════════════════════════
Annonces dans le CSV : 52
Annonces actives en DB : 53
Absentes du crawl : 1
Marquées indisponibles : 1
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/yaris/figures
🔍 Modèle filtré : yaris
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 102 annonces chargées (modèle 'yaris')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 102
📋 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-19 16:50:19
Durée : 279 jours
👤 Répartition par type de vendeur :
pro : 56 (54.9%)
private : 46 (45.1%)
⛽ Répartition par carburant :
essence : 87 (85.3%)
diesel : 15 (14.7%)
🏭 Top 10 marques :
toyota : 102 (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 : 102 / 102
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 2 outliers (2.0%)
Bornes IQR : [5,240 ; 11,240]
mileage_km : 1 outliers (1.0%)
Bornes IQR : [23,291 ; 216,946]
age_years : 2 outliers (2.0%)
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 : 102
Dont outliers identifiés : 3
Annonces non-outliers : 99
Plages de valeurs :
price_eur : [ 2,500 ; 9,000] (moy: 7,946)
mileage_km : [ 15,333 ; 200,000] (moy: 118,759)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 5,111 ; 143,200] (moy: 14,194)
💾 102 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 102 7945.833333 8100.00 1135.360257 2500.0 7490.000000 8990.000000 9000.0 1500.000000
mileage_km 102 118758.539216 118720.00 35051.632324 15333.0 95911.250000 144325.000000 200000.0 48413.750000
year_model 102 2016.823529 2016.00 1.619264 2015.0 2016.000000 2018.000000 2025.0 2.000000
age_years 102 9.176471 10.00 1.619264 1.0 8.000000 10.000000 11.0 2.000000
km_per_year 102 14193.537902 12881.05 13510.309911 5111.0 9953.340909 14854.642857 143200.0 4901.301948
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 102 7,946 8,100 1,135.36 2,500 7,490 8,990 9,000 1,500
mileage_km 102 118,759 118,720 35,051.63 15,333 95,911 144,325 200,000 48,414
year_model 102 2,017 2,016 1.62 2,015 2,016 2,018 2,025 2
age_years 102 9.2 10.0 1.62 1.0 8.0 10.0 11.0 2.0
km_per_year 102 14,193.5 12,881.0 13,510.31 5,111.0 9,953.3 14,854.6 143,200.0 4,901.3
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,135)
→ Étendue : [2,500 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 30%, σ = 35,052)
→ Étendue : [15,333 ; 200,000] (IQR = 48,414)
📌 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,194 > médiane 12,881)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ FORTE dispersion (CV = 95%, σ = 13,510)
→ Étendue : [5,111 ; 143,200] (IQR = 4,901)
======================================================================
📊 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 14:02:56,034 [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 14:02:56,035 [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 38 7,700 7,994 +2.3%
2017 21 8,300 8,500 -7.8%
2018 13 8,134 8,900 +2.0%
2019 11 8,394 8,600 -3.2%
📌 Décote annuelle moyenne : -1.7%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 1 5,250 5,250 N/A
20-50k 1 8,990 8,990 +71.2%
50-80k 12 8,702 8,745 -3.2%
80-120k 38 8,246 8,490 -5.2%
120-160k 38 7,673 7,990 -7.0%
160-200k 11 7,310 6,990 -4.7%
200k+ 1 6,500 6,500 -11.1%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
7 11 8,394 N/A
8 13 8,134 -3.1%
9 21 8,300 +2.1%
10 38 7,700 -7.2%
11 16 7,880 +2.3%
📌 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 87 8,012 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 46 7,646 8,000
pro 56 8,192 8,490
📌 Test Mann-Whitney (médiane) : p = 0.0872
❌ Différence NON significative (p >= 0.05)
📌 Écart médian Pro - Particulier : +490€
📊 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.4% (n= 7)
70k : décote 0.7% (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 0.0% (n= 6)
180k : décote 13.7% (n= 2) ⚡
📌 Seuils où la décote s'accélère (> 8%) :
→ 180k km : 13.7%
✅ 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.1% (n= 13)
9 ans : décote -2.1% (n= 21) 🐢 LENTE
10 ans : décote 7.2% (n= 38)
11 ans : décote -2.3% (n= 16) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 8 ans : 3.1%
→ 9 ans : -2.1%
→ 11 ans : -2.3%
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = 97.75 × âge + -0.0121 × km + 8,482
📌 R² = 0.137
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 6 ( 5.9%)
👍 Bonne affaire : 12 ( 11.8%)
📊 Prix marché : 64 ( 62.7%)
💰 Cher : 16 ( 15.7%)
🔴 Très cher : 4 ( 3.9%)
📊 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,649€ | Écart: -67.3% | Année: 2016 | Km: 150,000
2. [3152322073] Toyota Yaris 1.0 VVTI PRO EXPORT (0101261)
Prix: 5,250€ | Attendu: 8,591€ | Écart: -38.9% | Année: 2023 | Km: 15,333
3. [3157660912] Toyota Yaris
Prix: 5,500€ | Attendu: 7,949€ | Écart: -30.8% | Année: 2018 | Km: 109,000
4. [3161632025] Toyota Yaris III - 5P - 2016
Prix: 5,500€ | Attendu: 7,529€ | Écart: -26.9% | Année: 2016 | Km: 160,000
5. [3157975215] Toyota yaris 2011
Prix: 5,150€ | Attendu: 6,852€ | Écart: -24.8% | Année: 2025 | Km: 143,200
6. [3160315775] Toyota aygo xplay
Prix: 6,399€ | Attendu: 8,033€ | Écart: -20.3% | Année: 2018 | Km: 102,000
7. [3096659493] Toyota Yaris 3
Prix: 6,300€ | Attendu: 7,795€ | Écart: -19.2% | Année: 2015 | Km: 146,000
8. [3164108049] Toyota yaris lllphase2
Prix: 6,000€ | Attendu: 7,408€ | Écart: -19.0% | Année: 2016 | Km: 170,000
9. [3159781517] Toyota Yaris-III Phase-2 1.3VTTi 16V 99Cv 1ère Mai
Prix: 5,950€ | Attendu: 7,274€ | Écart: -18.2% | Année: 2016 | Km: 181,093
10. [3156006972] Toyota yaris
Prix: 7,000€ | Attendu: 8,434€ | Écart: -17.0% | Année: 2016 | Km: 85,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3157352360] Toyota Yaris III 1.5 VVT-i 110 ch – Design Y20-201
Prix: 8,900€ | Attendu: 7,054€ | Écart: +26.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,335€ | Écart: +22.6% | Année: 2016 | Km: 176,000
3. [3153117476] Toyota Yaris 70 VVT-i France 5p MY19
Prix: 8,990€ | Attendu: 7,413€ | Écart: +21.3% | Année: 2018 | Km: 153,356
4. [3163742160] Toyota Yaris 90 D-4D Design 5p style
Prix: 8,990€ | Attendu: 7,478€ | Écart: +20.2% | Année: 2016 | Km: 164,156
5. [3135900987] TOYOTA YARIS RC18 110 VVT-i COLLECTION
Prix: 8,990€ | Attendu: 7,635€ | Écart: +17.8% | Année: 2018 | Km: 135,000
6. [3151923222] Toyota Yaris 110 VVT-i Design Y20 5p RC19
Prix: 8,990€ | Attendu: 7,636€ | Écart: +17.7% | Année: 2019 | Km: 126,787
7. [3006906577] Toyota Yaris III 69 VVT-i France
Prix: 8,990€ | Attendu: 7,761€ | Écart: +15.8% | Année: 2016 | Km: 140,770
8. [3146935741] Toyota Yaris 1.4 D-4D 90 Business
Prix: 8,990€ | Attendu: 7,803€ | Écart: +15.2% | Année: 2017 | Km: 129,178
9. [3154060767] Toyota yaris
Prix: 9,000€ | Attendu: 7,840€ | Écart: +14.8% | Année: 2017 | Km: 126,126
10. [3159149873] Toyota YARIS 69 VVT-I FRANCE 5P
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,942€ | Écart: +13.2% | Année: 2017 | Km: 117,640
🔎 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 : 102
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_140257.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_140257.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_140257.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
→ 12 annonces récupérées (total en mémoire: 117)
Export de 117 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260320_140257.csv réussi.
Terminé : 117 annonces au total dans /home/ubuntu/app/leboncoin_ads_i20_20260320_140257.csv
INFO: Model override : i20
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_i20_20260320_140257.csv
✅ 117 lus, 117 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 117 lus, 117 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6218 annonces en base
════════════════════════════════════════════════════════════
INFO: 117 list_id lus dans le CSV.
INFO: 118 annonces actives en base pour hyundai i20.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_i20_20260320_140257.csv
Brand : hyundai | Modèle : i20
════════════════════════════════════════════════════════════
Annonces dans le CSV : 117
Annonces actives en DB : 118
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/i20/figures
🔍 Modèle filtré : i20
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 216 annonces chargées (modèle 'i20')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 216
📋 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 13:55:41
Durée : 339 jours
👤 Répartition par type de vendeur :
private : 119 (55.1%)
pro : 97 (44.9%)
⛽ Répartition par carburant :
essence : 172 (79.6%)
diesel : 43 (19.9%)
autre : 1 (0.5%)
🏭 Top 10 marques :
hyundai : 216 (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 : 216 / 216
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.8%)
Bornes IQR : [27,300 ; 220,500]
age_years : 20 outliers (9.3%)
Bornes IQR : [8 ; 12]
📌 Total d'annonces outliers (au moins 1 variable) : 26 (12.0%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 216
Dont outliers identifiés : 26
Annonces non-outliers : 190
Plages de valeurs :
price_eur : [ 3,800 ; 9,000] (moy: 7,757)
mileage_km : [ 95 ; 230,567] (moy: 122,688)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 12 ; 24,308] (moy: 13,461)
💾 216 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 3 signaux de suspicion détectés
km_trop_bas_diesel: 2
km_trop_bas_essence: 1
💾 3 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 216 7756.777778 7990.000000 1087.843083 3800.000 7000.000000 8500.0 9000.000000 1500.000000
mileage_km 216 122688.481481 125371.000000 37385.319791 95.000 99750.000000 148050.0 230567.000000 48300.000000
year_model 216 2016.773148 2016.000000 1.367198 2015.000 2016.000000 2017.0 2025.000000 1.000000
age_years 216 9.226852 10.000000 1.367198 1.000 9.000000 10.0 11.000000 1.000000
km_per_year 216 13461.417297 13308.766667 4218.499460 11.875 10528.338636 16400.0 24308.166667 5871.661364
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 216 7,757 7,990 1,087.84 3,800 7,000 8,500 9,000 1,500
mileage_km 216 122,688 125,371 37,385.32 95 99,750 148,050 230,567 48,300
year_model 216 2,017 2,016 1.37 2,015 2,016 2,017 2,025 1
age_years 216 9.2 10.0 1.37 1.0 9.0 10.0 11.0 1.0
km_per_year 216 13,461.4 13,308.8 4,218.50 11.9 10,528.3 16,400.0 24,308.2 5,871.7
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,088)
→ Étendue : [3,800 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 30%, σ = 37,385)
→ Étendue : [95 ; 230,567] (IQR = 48,300)
📌 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 = 31%, σ = 4,218)
→ Étendue : [12 ; 24,308] (IQR = 5,872)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
2026-03-20 14:03:16,478 [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 14:03:16,478 [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 85 7,613 7,900 -0.5%
2017 55 7,643 7,900 -0.4%
2018 31 8,059 8,290 -5.4%
2019 13 8,356 8,490 -3.7%
2020 5 8,684 8,980 -3.9%
📌 Décote annuelle moyenne : -2.8%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 3 7,800 8,900 N/A
20-50k 4 7,970 7,945 +2.2%
50-80k 20 8,485 8,600 +6.5%
80-120k 72 8,191 8,495 -3.5%
120-160k 81 7,757 7,900 -5.3%
160-200k 32 6,495 6,000 -16.3%
200k+ 4 6,148 6,050 -5.4%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
6 5 8,684 N/A
7 13 8,356 -3.8%
8 31 8,059 -3.6%
9 55 7,643 -5.2%
10 85 7,613 -0.4%
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 172 7,900 8,000
📌 Carburant avec prix médian le plus élevé : essence (8,000€)
📌 Carburant avec prix médian le plus bas : diesel (7,290€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 119 7,612 7,800
pro 97 7,934 7,990
📌 Test Mann-Whitney (médiane) : p = 0.0948
❌ 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 -2.5% (n= 3)
50k : décote -9.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.5% (n= 16)
120k : décote 5.1% (n= 23)
130k : décote -2.0% (n= 25)
140k : décote -1.0% (n= 20)
150k : décote -1.5% (n= 13)
160k : décote 6.8% (n= 13)
170k : décote 22.5% (n= 13) ⚡
180k : décote -8.0% (n= 5)
200k : décote 2.4% (n= 2)
📌 Seuils où la décote s'accélère (> 8%) :
→ 170k km : 22.5%
✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
7 ans : décote 3.8% (n= 13)
8 ans : décote 3.6% (n= 31)
9 ans : décote 5.2% (n= 55)
10 ans : décote 0.4% (n= 85) 🐢 LENTE
11 ans : décote 0.5% (n= 25) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 7 ans : 3.8%
→ 8 ans : 3.6%
→ 10 ans : 0.4%
→ 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.69 × âge + -0.0131 × km + 10,395
📌 R² = 0.245
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 15 ( 6.9%)
👍 Bonne affaire : 29 ( 13.4%)
📊 Prix marché : 122 ( 56.5%)
💰 Cher : 46 ( 21.3%)
🔴 Très cher : 4 ( 1.9%)
📊 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,777€ | Écart: -51.1% | Année: 2015 | Km: 106,000
2. [3160167161] Hyundai i20 2017
Prix: 4,000€ | Attendu: 7,804€ | Écart: -48.7% | Année: 2017 | Km: 121,054
3. [3132112485] Vend ou échange
Prix: 5,500€ | Attendu: 9,162€ | Écart: -40.0% | 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,274€ | Écart: -31.4% | Année: 2018 | Km: 170,000
5. [3141044598] Hyundai i20
Prix: 5,600€ | Attendu: 7,946€ | Écart: -29.5% | Année: 2016 | Km: 101,653
6. [3154012812] Hyundai
Prix: 5,100€ | Attendu: 7,051€ | É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,200€ | Écart: -25.0% | Année: 2016 | Km: 158,600
8. [3144748405] Hyundai i20 1.2 Go Klima RadioCD
Prix: 5,385€ | Attendu: 7,085€ | É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,182€ | Écart: -23.4% | Année: 2018 | Km: 177,000
10. [3159939727] Hyundai i20
Prix: 5,500€ | Attendu: 7,129€ | É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,116€ | Écart: +26.3% | Année: 2016 | Km: 165,000
2. [3164886925] Hyundai i20 Coupé
Prix: 9,000€ | Attendu: 7,359€ | Écart: +22.3% | Année: 2017 | Km: 155,000
3. [3158481657] Hyundai i20
Prix: 8,900€ | Attendu: 7,383€ | Écart: +20.5% | Année: 2016 | Km: 144,600
4. [3109227704] Hyundai i20 crdi 75ch edition navy
Prix: 8,900€ | Attendu: 7,396€ | É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,229€ | Écart: +17.4% | Année: 2016 | Km: 156,400
6. [3151384014] Hyundai i20
Prix: 8,500€ | Attendu: 7,293€ | Écart: +16.6% | Année: 2015 | Km: 143,000
7. [3155001248] Vente voiture hyundai i20
Prix: 8,500€ | Attendu: 7,300€ | Écart: +16.4% | Année: 2018 | Km: 168,000
8. [2972084163] HYUNDAI I20 1.2i - 84 BERLINE Initia
Prix: 8,990€ | Attendu: 7,738€ | Écart: +16.2% | Année: 2015 | Km: 109,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'
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,814€ | É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 : 216
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_140318.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_140318.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_140318.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_140318.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_140318.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_140318.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_140318.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_140318.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_140318.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
→ 13 annonces récupérées (total en mémoire: 328)
Export de 328 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260320_140318.csv réussi.
Terminé : 328 annonces au total dans /home/ubuntu/app/leboncoin_ads_berlingo_20260320_140318.csv
INFO: Model override : berlingo
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_berlingo_20260320_140318.csv
✅ 328 lus, 328 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 328 lus, 328 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6219 annonces en base
════════════════════════════════════════════════════════════
INFO: 328 list_id lus dans le CSV.
INFO: 330 annonces actives en base pour citroen berlingo.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_berlingo_20260320_140318.csv
Brand : citroen | Modèle : berlingo
════════════════════════════════════════════════════════════
Annonces dans le CSV : 328
Annonces actives en DB : 330
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/berlingo/figures
🔍 Modèle filtré : berlingo
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 510 annonces chargées (modèle 'berlingo')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 510
📋 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 10:54:34
Durée : 401 jours
👤 Répartition par type de vendeur :
pro : 421 (82.5%)
private : 89 (17.5%)
⛽ Répartition par carburant :
diesel : 496 (97.3%)
électrique : 10 (2.0%)
essence : 4 (0.8%)
🏭 Top 10 marques :
citroen : 510 (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 : 494 / 510
Pourcentage conservé : 96.9%
🔍 Détection des outliers (méthode IQR)...
price_eur : 4 outliers (0.8%)
Bornes IQR : [-176 ; 29,361]
mileage_km : 4 outliers (0.8%)
Bornes IQR : [-82,500 ; 241,500]
age_years : 3 outliers (0.6%)
Bornes IQR : [-3 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 8 (1.6%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 494
Dont outliers identifiés : 8
Annonces non-outliers : 486
Plages de valeurs :
price_eur : [ 2,800 ; 38,190] (moy: 14,935)
mileage_km : [ 1 ; 309,000] (moy: 83,367)
year_model : [ 2,009 ; 2,025] (moy: 2,021)
age_years : [ 1 ; 17] (moy: 5)
km_per_year : [ 1 ; 56,667] (moy: 14,128)
💾 494 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 494 14935.091093 13900.000000 5818.870354 2800.0 10900.00 18284.250000 38190.000000 7384.250000
mileage_km 494 83367.495951 85825.000000 57656.878091 1.0 39000.00 120000.000000 309000.000000 81000.000000
year_model 494 2020.696356 2020.000000 2.752264 2009.0 2019.00 2023.000000 2025.000000 4.000000
age_years 494 5.303644 6.000000 2.752264 1.0 3.00 7.000000 17.000000 4.000000
km_per_year 494 14127.545156 14456.333333 9313.040461 1.0 8406.25 19520.083333 56666.666667 11113.833333
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 494 14,935 13,900 5,818.87 2,800 10,900 18,284 38,190 7,384
mileage_km 494 83,367 85,825 57,656.88 1 39,000 120,000 309,000 81,000
year_model 494 2,021 2,020 2.75 2,009 2,019 2,023 2,025 4
age_years 494 5.3 6.0 2.75 1.0 3.0 7.0 17.0 4.0
km_per_year 494 14,127.5 14,456.3 9,313.04 1.0 8,406.2 19,520.1 56,666.7 11,113.8
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 14,935 > médiane 13,900)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 39%, σ = 5,819)
→ Étendue : [2,800 ; 38,190] (IQR = 7,384)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ FORTE dispersion (CV = 69%, σ = 57,657)
→ Étendue : [1 ; 309,000] (IQR = 81,000)
📌 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,313)
2026-03-20 14:03:53,334 [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 14:03:53,334 [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.
→ Étendue : [1 ; 56,667] (IQR = 11,114)
======================================================================
📊 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 31 8,741 8,900 -8.5%
2018 56 10,301 9,500 -17.8%
2019 57 12,155 11,990 -18.0%
2020 91 13,235 12,700 -8.9%
2021 60 14,283 13,895 -7.9%
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,414 15,990 -12.3%
80-120k 137 12,548 12,590 -18.6%
120-160k 84 10,508 10,395 -16.3%
160-200k 35 8,748 8,940 -16.8%
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 91 13,235 -7.3%
7 57 12,155 -8.2%
8 56 10,301 -15.3%
9 31 8,741 -15.1%
10 12 8,057 -7.8%
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 481 14,930 13,900
essence 4 12,058 11,495
é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,495€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 88 12,390 11,800
pro 406 15,487 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.2% (n= 27)
60k : décote 0.3% (n= 29)
70k : décote 3.6% (n= 25)
80k : décote 6.7% (n= 33)
90k : décote 6.4% (n= 37)
100k : décote 8.0% (n= 34)
110k : décote 9.0% (n= 33)
120k : décote 0.8% (n= 27)
130k : décote 2.9% (n= 23)
140k : décote 2.0% (n= 13)
150k : décote 3.0% (n= 21)
160k : décote 8.6% (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.2%
→ 100k km : 8.0%
→ 110k km : 9.0%
→ 160k km : 8.6%
→ 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.3% (n= 91)
7 ans : décote 8.2% (n= 57)
8 ans : décote 15.3% (n= 56) ⚡ FORTE
9 ans : décote 15.1% (n= 31) ⚡ FORTE
10 ans : décote 7.8% (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 : 15.1%
→ 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 = -916.00 × âge + -0.0512 × km + 24,061
📌 R² = 0.776
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 43 ( 8.8%)
👍 Bonne affaire : 93 ( 18.9%)
📊 Prix marché : 247 ( 50.3%)
💰 Cher : 53 ( 10.8%)
🔴 Très cher : 55 ( 11.2%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3156231773] Citroën Berlingo XL BLUEHDI 100 S&S ETG6 CLUB
Prix: 3,000€ | Attendu: 10,003€ | Écart: -70.0% | Année: 2018 | Km: 131,461
2. [3156023107] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
Prix: 8,000€ | Attendu: 16,479€ | É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,263€ | Écart: -50.9% | 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,374€ | Écart: -47.9% | Année: 2017 | Km: 203,997
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'
6. [3156023444] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
Prix: 8,000€ | Attendu: 15,217€ | É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,185€ | Écart: -46.5% | Année: 2018 | Km: 108,380
8. [3163320492] Citroën Berlingo VAN XL 950 PURETECH 130 S&S EAT8
Prix: 8,250€ | Attendu: 15,053€ | Écart: -45.2% | Année: 2020 | Km: 68,597
9. [2984931973] Citroën Berlingo Electrique Taille XL Club
Prix: 8,590€ | Attendu: 15,420€ | Écart: -44.3% | Année: 2018 | Km: 25,657
10. [3156133024] Citroën berlingo xl électrique confort isotherme T
Prix: 7,990€ | Attendu: 13,815€ | Écart: -42.2% | 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,381€ | Écart: +334.6% | Année: 2017 | Km: 282,000
2. [3155307735] Citroën berlingo
Prix: 7,000€ | Attendu: 1,889€ | Écart: +270.6% | Année: 2013 | Km: 200,500
3. [3115315205] Citroën Jumpy CAB APPROFONDIE XL BLUEHDI 180 S&S E
Prix: 38,190€ | Attendu: 23,143€ | Écart: +65.0% | Année: 2025 | Km: 40
4. [3140204221] Citroen Berlingo Van XL BlueHDi 100 S&S Cabine App
Prix: 9,490€ | Attendu: 5,833€ | Écart: +62.7% | Année: 2018 | Km: 212,912
5. [3130621009] Citroen BERLINGO XL 1.6 HDI 90 ch CABINE APPROFOND
Prix: 11,490€ | Attendu: 7,131€ | Écart: +61.1% | Année: 2014 | Km: 116,000
6. [3148392923] CITROEN BERLINGO 1.5 BlueHDi S&S - 130 XL Feel 7 P
Prix: 19,990€ | Attendu: 12,433€ | Écart: +60.8% | Année: 2018 | Km: 84,000
7. [3097892706] Citroën Berlingo CABINE APPROFONDIE CA TAILLE XL B
Prix: 37,140€ | Attendu: 23,145€ | Écart: +60.5% | Année: 2025 | Km: 1
8. [3158708742] Berlingo XL 1.6L bluehdi aménagé
Prix: 15,000€ | Attendu: 10,078€ | Écart: +48.8% | Année: 2018 | Km: 130,000
9. [3156325212] À vendre - Citroën Berlingo rallongée - Boîte auto
Prix: 9,500€ | Attendu: 6,403€ | Écart: +48.4% | Année: 2016 | Km: 166,000
10. [3159127356] Citroën Berlingo XL 1.6 BlueHDI 100 CV CABINE APPR
Prix: 9,990€ | Attendu: 6,961€ | Écart: +43.5% | Année: 2017 | Km: 173,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 13 annonces avec prix suspect
💾 13 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 510
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_140354.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_140354.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_140354.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_140354.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_140354.csv réussi.
Terminé : 174 annonces au total dans /home/ubuntu/app/leboncoin_ads_c4_20260320_140354.csv
INFO: Model override : c4
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_c4_20260320_140354.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
📌 6219 annonces en base
════════════════════════════════════════════════════════════
INFO: 174 list_id lus dans le CSV.
INFO: 175 annonces actives en base pour citroen c4.
INFO: 1 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_c4_20260320_140354.csv
Brand : citroen | Modèle : c4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 174
Annonces actives en DB : 175
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/c4/figures
🔍 Modèle filtré : c4
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 269 annonces chargées (modèle 'c4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 269
📋 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-19 20:19:29
Durée : 861 jours
👤 Répartition par type de vendeur :
pro : 140 (52.0%)
private : 129 (48.0%)
⛽ Répartition par carburant :
diesel : 150 (55.8%)
essence : 119 (44.2%)
🏭 Top 10 marques :
citroen : 269 (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 : 268 / 269
Pourcentage conservé : 99.6%
🔍 Détection des outliers (méthode IQR)...
price_eur : 12 outliers (4.5%)
Bornes IQR : [6,475 ; 13,175]
mileage_km : 12 outliers (4.5%)
Bornes IQR : [65,375 ; 186,375]
age_years : 0 outliers (0.0%)
Bornes IQR : [2 ; 14]
📌 Total d'annonces outliers (au moins 1 variable) : 24 (9.0%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 268
Dont outliers identifiés : 24
Annonces non-outliers : 244
Plages de valeurs :
price_eur : [ 4,500 ; 11,000] (moy: 9,548)
mileage_km : [ 186 ; 150,000] (moy: 120,678)
year_model : [ 2,015 ; 2,022] (moy: 2,017)
age_years : [ 4 ; 11] (moy: 9)
km_per_year : [ 17 ; 37,387] (moy: 14,652)
💾 268 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 8 signaux de suspicion détectés
km_trop_bas_essence: 1
km_trop_bas_diesel: 7
💾 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 268 9548.250000 9990.0 1464.479980 4500.000000 8987.500000 10662.50 11000.00 1675.000000
mileage_km 268 120677.503731 129026.5 29810.840715 186.000000 110750.000000 141000.00 150000.00 30250.000000
year_model 268 2017.320896 2017.0 1.784665 2015.000000 2016.000000 2019.00 2022.00 3.000000
age_years 268 8.679104 9.0 1.784665 4.000000 7.000000 10.00 11.00 3.000000
km_per_year 268 14651.651052 14216.0 5118.632094 16.909091 11972.222222 16718.75 37386.75 4746.527778
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 268 9,548 9,990 1,464.48 4,500 8,988 10,662 11,000 1,675
mileage_km 268 120,678 129,026 29,810.84 186 110,750 141,000 150,000 30,250
year_model 268 2,017 2,017 1.78 2,015 2,016 2,019 2,022 3
age_years 268 8.7 9.0 1.78 4.0 7.0 10.0 11.0 3.0
km_per_year 268 14,651.7 14,216.0 5,118.63 16.9 11,972.2 16,718.8 37,386.8 4,746.5
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 15%, σ = 1,464)
→ Étendue : [4,500 ; 11,000] (IQR = 1,675)
📌 mileage_km :
→ Distribution asymétrique GAUCHE (moyenne 120,678 < médiane 129,026)
Quelques valeurs basses tirent la moyenne vers le bas.
→ Faible dispersion (CV = 25%, σ = 29,811)
→ Étendue : [186 ; 150,000] (IQR = 30,250)
📌 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,119)
→ Étendue : [17 ; 37,387] (IQR = 4,747)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
2026-03-20 14:04:12,377 [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 14:04:12,377 [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 52 9,853 10,325 -9.2%
2018 38 9,619 9,990 +2.4%
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 173 9,529 9,990 -0.2%
📊 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 52 9,853 +2.4%
10 51 9,021 -8.4%
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,958 10,000
essence 119 9,036 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 128 9,231 9,675
pro 140 9,838 9,990
📌 Test Mann-Whitney (médiane) : p = 0.0123
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +315€
📊 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.6% (n= 71)
150k : décote -5.5% (n= 7)
✅ 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 -2.4% (n= 52) 🐢 LENTE
10 ans : décote 8.4% (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 : -2.4%
→ 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 = -250.17 × âge + -0.0007 × km + 11,799
📌 R² = 0.093
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 31 ( 11.6%)
👍 Bonne affaire : 28 ( 10.4%)
📊 Prix marché : 137 ( 51.1%)
💰 Cher : 64 ( 23.9%)
🔴 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,225€ | Écart: -50.2% | Année: 2016 | Km: 110,000
2. [3144627553] Grand C4 Picasso
Prix: 4,500€ | Attendu: 8,955€ | Écart: -49.7% | Année: 2015 | Km: 140,000
3. [3148620999] C4 Picasso
Prix: 4,600€ | Attendu: 8,954€ | Écart: -48.6% | Année: 2015 | Km: 142,000
4. [3155010351] C4 Picasso
Prix: 4,600€ | Attendu: 8,954€ | Écart: -48.6% | Année: 2015 | Km: 142,000
5. [3159599228] Vends C4 Grand Picasso II 7 places
Prix: 6,000€ | Attendu: 9,709€ | Écart: -38.2% | Année: 2018 | Km: 135,000
6. [3148926526] C4 grand Picasso 2l hdi 150cv exclusive
Prix: 5,800€ | Attendu: 9,215€ | Écart: -37.1% | Année: 2016 | Km: 125,000
7. [3158296763] C4 grand Picasso 2l hdi 150 cv pack exclusive
Prix: 5,800€ | Attendu: 9,215€ | Écart: -37.1% | Année: 2016 | Km: 125,000
8. [3159003549] Vends CITROEN GRAND C4 PICASSO Intensive
Prix: 5,900€ | Attendu: 9,206€ | Écart: -35.9% | Année: 2016 | Km: 138,000
9. [3162574098] Citroën c4 Picasso 7 places
Prix: 6,000€ | Attendu: 9,220€ | Écart: -34.9% | Année: 2016 | Km: 118,000
10. [3147269001] CITROEN GRAND C4 PICASSO Spacetourer
Prix: 6,000€ | Attendu: 9,207€ | Écart: -34.8% | 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,948€ | Écart: +22.8% | Année: 2015 | Km: 149,900
2. [3146221969] Citroen C4 Grand Picasso 7 Places - 2.0 BlueHDi 15
Prix: 10,990€ | Attendu: 8,954€ | Écart: +22.7% | Année: 2015 | Km: 142,000
3. [3136798926] Grand C4 Picasso 120 HDI
Prix: 11,000€ | Attendu: 8,971€ | Écart: +22.6% | Année: 2015 | Km: 116,000
4. [2934302132] Citroen Grand C4 Picasso PureTech 130ch Confort S&
Prix: 10,990€ | Attendu: 8,966€ | Écart: +22.6% | Année: 2015 | Km: 123,901
5. [3155706473] Citroën Grand C4 Picasso 1.6 BlueHdi 115 Intensive
Prix: 10,995€ | Attendu: 8,972€ | Écart: +22.5% | Année: 2015 | Km: 113,981
6. [3138161286] Citroën C4 PICASSO II Exclusive 2.0 BLUEHDI 150CV
Prix: 10,990€ | Attendu: 8,976€ | Écart: +22.4% | 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,016€ | Écart: +21.8% | Année: 2015 | Km: 47,966
8. [3160469081] Grand C4 Picasso 7 places
Prix: 10,800€ | Attendu: 8,996€ | Écart: +20.1% | Année: 2015 | Km: 78,300
9. [3149154360] Grand c4
Prix: 11,000€ | Attendu: 9,201€ | Écart: +19.6% | Année: 2016 | Km: 146,230
10. [3071933719] Citroën C4 grand Picasso
Prix: 11,000€ | Attendu: 9,202€ | Écart: +19.5% | 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 : 269
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_140413.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_140413.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_140413.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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_140424.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
→ 20 annonces récupérées (total en mémoire: 1070)
Export de 1070 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260320_140424.csv réussi.
Terminé : 1070 annonces au total dans /home/ubuntu/app/leboncoin_ads_5008_20260320_140424.csv
INFO: Model override : 5008
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_5008_20260320_140424.csv
✅ 1070 lus, 1070 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 1070 lus, 1070 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6240 annonces en base
════════════════════════════════════════════════════════════
INFO: 1053 list_id lus dans le CSV.
INFO: 1090 annonces actives en base pour peugeot 5008.
INFO: 37 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_5008_20260320_140424.csv
Brand : peugeot | Modèle : 5008
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1053
Annonces actives en DB : 1090
Absentes du crawl : 37
Marquées indisponibles : 37
════════════════════════════════════════════════════════════
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
✅ 1540 annonces chargées (modèle '5008')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 1540
📋 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 14:42:41
Durée : 652 jours
👤 Répartition par type de vendeur :
private : 976 (63.4%)
pro : 564 (36.6%)
⛽ Répartition par carburant :
diesel : 1408 (91.4%)
essence : 131 (8.5%)
hybride : 1 (0.1%)
🏭 Top 10 marques :
peugeot : 1540 (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 : 1538 / 1540
Pourcentage conservé : 99.9%
🔍 Détection des outliers (méthode IQR)...
price_eur : 0 outliers (0.0%)
Bornes IQR : [-235 ; 12,925]
mileage_km : 34 outliers (2.2%)
Bornes IQR : [57,736 ; 349,358]
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 : 1538
Dont outliers identifiés : 34
Annonces non-outliers : 1504
Plages de valeurs :
price_eur : [ 700 ; 11,000] (moy: 6,345)
mileage_km : [ 1 ; 410,000] (moy: 204,746)
year_model : [ 2,009 ; 2,021] (moy: 2,013)
age_years : [ 5 ; 17] (moy: 13)
km_per_year : [ 0 ; 53,776] (moy: 16,193)
💾 1538 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 18 signaux de suspicion détectés
km_trop_bas_diesel: 17
km_trop_bas_essence: 1
💾 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 1538 6344.868661 5990.000000 2310.199151 700.000000 4700.000000 7990.000000 11000.000000 3290.000000
mileage_km 1538 204746.340702 205000.000000 57161.029763 1.000000 167094.500000 240000.000000 410000.000000 72905.500000
year_model 1538 2013.024057 2013.000000 2.493467 2009.000000 2011.000000 2015.000000 2021.000000 4.000000
age_years 1538 12.975943 13.000000 2.493467 5.000000 11.000000 15.000000 17.000000 4.000000
km_per_year 1538 16193.490066 15689.903846 5055.257179 0.111111 13134.090909 18533.333333 53776.166667 5399.242424
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 1,538 6,345 5,990 2,310.20 700 4,700 7,990 11,000 3,290
mileage_km 1,538 204,746 205,000 57,161.03 1 167,094 240,000 410,000 72,906
year_model 1,538 2,013 2,013 2.49 2,009 2,011 2,015 2,021 4
age_years 1,538 13.0 13.0 2.49 5.0 11.0 15.0 17.0 4.0
km_per_year 1,538 16,193.5 15,689.9 5,055.26 0.1 13,134.1 18,533.3 53,776.2 5,399.2
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 6,345 > médiane 5,990)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 36%, σ = 2,310)
→ Étendue : [700 ; 11,000] (IQR = 3,290)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 28%, σ = 57,161)
→ Étendue : [1 ; 410,000] (IQR = 72,906)
📌 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,055)
→ Étendue : [0 ; 53,776] (IQR = 5,399)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
2026-03-20 14:06:42,842 [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 14:06:42,842 [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 227 4,638 4,500 -0.8%
2011 263 4,928 4,990 -6.2%
2012 244 5,533 5,500 -12.3%
2013 189 5,928 5,700 -7.1%
2014 155 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 49 8,848 9,490 -3.3%
120-160k 237 8,560 8,999 -3.3%
160-200k 394 7,104 6,990 -17.0%
200k+ 833 5,195 4,990 -26.9%
📊 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 155 7,013 -11.3%
13 189 5,928 -15.5%
14 244 5,533 -6.7%
15 263 4,928 -10.9%
16 227 4,638 -5.9%
17 28 4,604 -0.7%
📌 La décote ralentit significativement à 9 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 1407 6,202 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 975 5,919 5,500
pro 563 7,082 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 7.4% (n= 20)
120k : décote -9.8% (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.3% (n= 98)
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.4% (n=116)
230k : décote 6.4% (n= 89)
240k : décote -0.8% (n=106)
250k : décote 5.9% (n= 59)
260k : décote 12.4% (n= 59) ⚡
270k : décote 7.9% (n= 43)
280k : décote -15.0% (n= 29)
290k : décote 26.9% (n= 26) ⚡
300k+ : décote 2.9% (n= 80)
📌 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.3%
→ 260k km : 12.4%
→ 290k km : 26.9%
✅ 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=155)
13 ans : décote 15.5% (n=189) ⚡ FORTE
14 ans : décote 6.7% (n=244)
15 ans : décote 10.9% (n=263)
16 ans : décote 5.9% (n=227)
17 ans : décote 0.7% (n= 28) 🐢 LENTE
📌 Décote rapide (> 10% par an) :
→ 10 ans : 16.3%
→ 12 ans : 11.3%
→ 13 ans : 15.5%
→ 15 ans : 10.9%
📌 Décote lente (< 5% par an) :
→ 7 ans : -10.3%
→ 9 ans : 1.7%
→ 11 ans : 2.3%
→ 17 ans : 0.7%
✅ 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.00 × âge + -0.0172 × km + 16,532
📌 R² = 0.643
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 228 ( 14.8%)
👍 Bonne affaire : 224 ( 14.6%)
📊 Prix marché : 613 ( 39.9%)
💰 Cher : 205 ( 13.3%)
🔴 Très cher : 268 ( 17.4%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3163345953] Peugeot 5008 1.6, 120cv B.hdi
Prix: 1,000€ | Attendu: 5,726€ | Écart: -82.5% | Année: 2014 | Km: 270,000
2. [3098662962] Peugeot 5008 hdi
Prix: 1,900€ | Attendu: 8,714€ | Écart: -78.2% | Année: 2016 | Km: 155,900
3. [3163979849] Opel Corsa 2009 232000km
Prix: 1,900€ | Attendu: 8,434€ | Écart: -77.5% | Année: 2018 | Km: 232,000
4. [3161987772] 5008 7 places
Prix: 1,000€ | Attendu: 4,184€ | Écart: -76.1% | Année: 2011 | Km: 270,000
5. [3154103448] Vend Peugeot 5008 dans l etat
Prix: 1,000€ | Attendu: 4,099€ | Écart: -75.6% | Année: 2010 | Km: 245,000
6. [3145452074] Peugeot 5008
Prix: 1,000€ | Attendu: 3,718€ | Écart: -73.1% | Année: 2012 | Km: 327,000
7. [3151017355] Vends Peugeot 5008 a spécialiste
Prix: 1,500€ | Attendu: 5,385€ | É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,143€ | Écart: -70.8% | Année: 2013 | Km: 274,000
10. [3164455221] Peugeot 5008
Prix: 1,800€ | Attendu: 5,727€ | É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,774€ | Écart: +98.7% | Année: 2009 | Km: 234,000
2. [3152738100] Peugeot 5008 2l hdi 150cv
Prix: 8,000€ | Attendu: 4,398€ | Écart: +81.9% | Année: 2010 | Km: 227,600
3. [3126969597] Peugeot 5008
Prix: 4,200€ | Attendu: 2,383€ | Écart: +76.3% | Année: 2009 | Km: 315,000
4. [3126598226] Peugeot 5008 1.6 hdi fap confort pack 7pl
Prix: 7,990€ | Attendu: 4,589€ | Écart: +74.1% | Année: 2010 | Km: 216,500
5. [3155918327] Peugeot 5008
Prix: 6,500€ | Attendu: 3,774€ | Écart: +72.2% | Année: 2009 | Km: 234,000
6. [3157618424] Peugeot 5008
Prix: 3,500€ | Attendu: 2,038€ | Écart: +71.8% | Année: 2010 | Km: 365,000
7. [3147840406] Peugeot 5008 1.6 hdi FAP Premium 7pls
Prix: 6,990€ | Attendu: 4,082€ | Écart: +71.2% | Année: 2010 | Km: 246,000
8. [3159646980] PEUGEOT 5008 2.0 HDI 163cv
Prix: 7,500€ | Attendu: 4,440€ | Écart: +68.9% | 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,198€ | Écart: +63.5% | 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 : 1540
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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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_140644.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
→ 20 annonces récupérées (total en mémoire: 1490)
Export de 1490 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260320_140644.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_140930.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_140930.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_140930.csv réussi.
Terminé : 96 annonces au total dans /home/ubuntu/app/leboncoin_ads_nv200_20260320_140930.csv
INFO: Model override : nv200
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_nv200_20260320_140930.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
📌 6243 annonces en base
════════════════════════════════════════════════════════════
INFO: 96 list_id lus dans le CSV.
INFO: 98 annonces actives en base pour nissan nv200.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_nv200_20260320_140930.csv
Brand : nissan | Modèle : nv200
════════════════════════════════════════════════════════════
Annonces dans le CSV : 96
Annonces actives en DB : 98
Absentes du crawl : 2
Marquées indisponibles : 2
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/nv200/figures
🔍 Modèle filtré : nv200
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 174 annonces chargées (modèle 'nv200')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 174
📋 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 11:51:26
Durée : 538 jours
👤 Répartition par type de vendeur :
private : 120 (69.0%)
pro : 54 (31.0%)
⛽ Répartition par carburant :
diesel : 174 (100.0%)
🏭 Top 10 marques :
nissan : 174 (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 : 174 / 174
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 0 outliers (0.0%)
Bornes IQR : [-3,301 ; 20,169]
mileage_km : 1 outliers (0.6%)
Bornes IQR : [-43,606 ; 369,356]
age_years : 0 outliers (0.0%)
Bornes IQR : [3 ; 19]
📌 Total d'annonces outliers (au moins 1 variable) : 1 (0.6%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 174
Dont outliers identifiés : 1
Annonces non-outliers : 173
Plages de valeurs :
price_eur : [ 2,000 ; 19,990] (moy: 8,691)
mileage_km : [ 1 ; 420,000] (moy: 165,094)
year_model : [ 2,009 ; 2,019] (moy: 2,015)
age_years : [ 7 ; 17] (moy: 11)
km_per_year : [ 0 ; 30,000] (moy: 15,006)
💾 174 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 174 8690.994253 8350.00 3767.271759 2000.000000 5500.00000 11367.500000 19990.0 5867.500000
mileage_km 174 165093.655172 152000.00 72536.855097 1.000000 111254.50000 214495.000000 420000.0 103240.500000
year_model 174 2014.856322 2015.00 2.706669 2009.000000 2013.00000 2017.000000 2019.0 4.000000
age_years 174 11.143678 11.00 2.706669 7.000000 9.00000 13.000000 17.0 4.000000
km_per_year 174 15005.942000 14031.25 6103.439192 0.066667 10440.08774 18878.205128 30000.0 8438.117388
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 174 8,691 8,350 3,767.27 2,000 5,500 11,368 19,990 5,868
mileage_km 174 165,094 152,000 72,536.86 1 111,254 214,495 420,000 103,240
year_model 174 2,015 2,015 2.71 2,009 2,013 2,017 2,019 4
age_years 174 11.1 11.0 2.71 7.0 9.0 13.0 17.0 4.0
km_per_year 174 15,005.9 14,031.2 6,103.44 0.1 10,440.1 18,878.2 30,000.0 8,438.1
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 43%, σ = 3,767)
→ Étendue : [2,000 ; 19,990] (IQR = 5,868)
📌 mileage_km :
→ Distribution asymétrique DROITE (moyenne 165,094 > médiane 152,000)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 44%, σ = 72,537)
→ Étendue : [1 ; 420,000] (IQR = 103,240)
📌 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 15,006 > médiane 14,031)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 41%, σ = 6,103)
→ Étendue : [0 ; 30,000] (IQR = 8,438)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
2026-03-20 14:09:44,712 [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 14:09:44,712 [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 10 8,189 9,000 +6.9%
2016 24 8,998 8,000 -9.9%
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 39 10,015 10,500 -14.6%
160-200k 30 6,886 7,000 -31.2%
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 10 8,189 -9.0%
12 22 8,797 +7.4%
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 174 8,691 8,350
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 120 8,154 7,850
pro 54 9,884 9,890
📌 Test Mann-Whitney (médiane) : p = 0.0035
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +2,040€
📊 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 12.1% (n= 11) ⚡
140k : décote 13.9% (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 : 12.1%
→ 140k km : 13.9%
→ 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 9.0% (n= 10)
12 ans : décote -7.4% (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%
→ 13 ans : 16.9%
→ 15 ans : 24.4%
📌 Décote lente (< 5% par an) :
→ 8 ans : -5.3%
→ 12 ans : -7.4%
✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -456.91 × âge + -0.0300 × km + 18,738
📌 R² = 0.603
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 34 ( 19.7%)
👍 Bonne affaire : 31 ( 17.9%)
📊 Prix marché : 55 ( 31.8%)
💰 Cher : 24 ( 13.9%)
🔴 Très cher : 29 ( 16.8%)
📊 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,884€ | Écart: -83.2% | Année: 2011 | Km: 1
2. [3159812831] Vend utilitaires nv200 nissan
Prix: 2,000€ | Attendu: 6,782€ | Écart: -70.5% | Année: 2011 | Km: 170,000
3. [3160668277] Nissan nv 200
Prix: 3,000€ | Attendu: 7,155€ | Écart: -58.1% | Année: 2013 | Km: 188,000
4. [3164906877] Nissan
Prix: 3,500€ | Attendu: 6,665€ | Écart: -47.5% | Année: 2016 | Km: 250,000
5. [3109648143] Nissan nv200 1.5 dci turbo
Prix: 3,990€ | Attendu: 7,059€ | Écart: -43.5% | Année: 2012 | Km: 176,000
6. [3154995725] Nissan NV200 Fourgon 1.5 DCi 110ch BVM5 Optima - 2
Prix: 4,000€ | Attendu: 6,835€ | Écart: -41.5% | Année: 2014 | Km: 213,880
7. [3116605709] Nissan NV200
Prix: 4,500€ | Attendu: 7,682€ | Écart: -41.4% | Année: 2011 | Km: 140,000
8. [3127367839] Nissan NV200 1.5 DCI
Prix: 5,490€ | Attendu: 8,876€ | Écart: -38.1% | Année: 2014 | Km: 145,899
9. [3142568361] Nissan nv 200 1.5 90ch
Prix: 5,200€ | Attendu: 8,376€ | Écart: -37.9% | Année: 2016 | Km: 193,000
10. [3164561805] Nissan nv200
Prix: 5,290€ | Attendu: 8,166€ | Écart: -35.2% | Année: 2016 | Km: 200,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3156635875] Nissan NV200
Prix: 3,500€ | Attendu: 592€ | Écart: +491.3% | Année: 2010 | Km: 361,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'
2. [3154023820] Camion
Prix: 3,500€ | Attendu: 772€ | Écart: +353.4% | Année: 2010 | Km: 355,000
3. [3153372541] Nissan nv 200
Prix: 10,500€ | Attendu: 5,594€ | Écart: +87.7% | Année: 2013 | Km: 240,000
4. [3114600758] Van
Prix: 18,500€ | Attendu: 10,314€ | Écart: +79.4% | Année: 2014 | Km: 98,000
5. [3156516616] 🚐 Nissan NV200 aménagé – Prêt à voyager
Prix: 9,300€ | Attendu: 5,791€ | Écart: +60.6% | Année: 2011 | Km: 203,000
6. [3158536730] Véhicule aménagé
Prix: 13,500€ | Attendu: 8,439€ | Écart: +60.0% | Année: 2012 | Km: 130,000
7. [3083668151] Nissan NV200 1.5 DCI 90CH VAN AMENAGE
Prix: 14,999€ | Attendu: 9,622€ | Écart: +55.9% | Année: 2014 | Km: 121,041
8. [3163982347] Utilitaire aménagé Van NV200 2016 84000 km
Prix: 17,900€ | Attendu: 11,648€ | Écart: +53.7% | Année: 2016 | Km: 84,000
9. [3155364135] Utilitaire Van Nissan NV200 2016
Prix: 17,900€ | Attendu: 11,678€ | Écart: +53.3% | Année: 2016 | Km: 83,000
10. [3150255673] Van aménagé Nissan NV200
Prix: 8,500€ | Attendu: 5,664€ | Écart: +50.1% | 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 : 174
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 : 6243
============================================================
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_140001.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_clio_4_20260320_140001.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_140001.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_140246.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_yaris_20260320_140246.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_140246.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_140257.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_i20_20260320_140257.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_140257.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_140318.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_berlingo_20260320_140318.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_140318.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_140354.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_c4_20260320_140354.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_140354.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_140424.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_5008_20260320_140424.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_140424.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_140930.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_nv200_20260320_140930.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_140930.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-20T14:09:46.453631
Duration: 586.5s
STATUS:SUCCESS