Administration
← Retour
Log : 20260321_140000
=== CRAWL 20260321_140000 ===
Trigger: scheduled
Started: 2026-03-21T14:00:00.000275
============================================================
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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.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_20260321_140000.csv réussi.
Terminé : 1435 annonces au total dans /home/ubuntu/app/leboncoin_ads_clio_4_20260321_140000.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_20260321_140000.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
📌 6348 annonces en base
════════════════════════════════════════════════════════════
INFO: 1425 list_id lus dans le CSV.
INFO: 1475 annonces actives en base pour renault clio_4.
INFO: 50 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_clio_4_20260321_140000.csv
Brand : renault | Modèle : clio_4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1425
Annonces actives en DB : 1475
Absentes du crawl : 50
Marquées indisponibles : 50
════════════════════════════════════════════════════════════
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
✅ 2540 annonces chargées (modèle 'clio_4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 2540
📋 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-21 14:53:27
Durée : 715 jours
👤 Répartition par type de vendeur :
private : 1636 (64.4%)
pro : 904 (35.6%)
⛽ Répartition par carburant :
diesel : 1382 (54.4%)
essence : 1154 (45.4%)
autre : 3 (0.1%)
gpl : 1 (0.0%)
🏭 Top 10 marques :
renault : 2540 (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 : 2539 / 2540
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 38 outliers (1.5%)
Bornes IQR : [4,740 ; 10,740]
mileage_km : 40 outliers (1.6%)
Bornes IQR : [18,242 ; 253,054]
age_years : 8 outliers (0.3%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 71 (2.8%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 2539
Dont outliers identifiés : 71
Annonces non-outliers : 2468
Plages de valeurs :
price_eur : [ 3,300 ; 9,000] (moy: 7,614)
mileage_km : [ 125 ; 380,000] (moy: 137,604)
year_model : [ 2,014 ; 2,024] (moy: 2,017)
age_years : [ 2 ; 12] (moy: 9)
km_per_year : [ 18 ; 54,286] (moy: 16,093)
💾 2539 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 2539 7613.927924 7900.0 1101.841254 3300.000000 6990.000000 8490.000000 9000.000000 1500.000000
mileage_km 2539 137603.857424 134000.0 44601.122413 125.000000 106297.000000 165000.000000 380000.000000 58703.000000
year_model 2539 2017.267428 2017.0 1.364791 2014.000000 2016.000000 2018.000000 2024.000000 2.000000
age_years 2539 8.732572 9.0 1.364791 2.000000 8.000000 10.000000 12.000000 2.000000
km_per_year 2539 16092.888331 15690.1 5691.127128 17.857143 12147.222222 19578.714286 54285.714286 7431.492063
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 2,539 7,614 7,900 1,101.84 3,300 6,990 8,490 9,000 1,500
mileage_km 2,539 137,604 134,000 44,601.12 125 106,297 165,000 380,000 58,703
year_model 2,539 2,017 2,017 1.36 2,014 2,016 2,018 2,024 2
age_years 2,539 8.7 9.0 1.36 2.0 8.0 10.0 12.0 2.0
km_per_year 2,539 16,092.9 15,690.1 5,691.13 17.9 12,147.2 19,578.7 54,285.7 7,431.5
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,102)
→ Étendue : [3,300 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 32%, σ = 44,601)
→ Étendue : [125 ; 380,000] (IQR = 58,703)
📌 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,691)
→ Étendue : [18 ; 54,286] (IQR = 7,431)
======================================================================
2026-03-21 14:02:41,306 [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-21 14:02:41,306 [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 730 7,281 7,500 +0.5%
2017 682 7,633 7,895 -4.8%
2018 541 7,734 7,990 -1.3%
2019 341 7,968 8,200 -3.0%
2020 105 8,272 8,500 -3.8%
2021 24 8,345 8,490 -0.9%
2022 6 8,838 8,930 -5.9%
2024 2 8,000 8,000 +9.5%
📌 Décote annuelle moyenne : -1.6%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 8 7,580 7,725 N/A
20-50k 16 8,158 8,600 +7.6%
50-80k 160 8,186 8,490 +0.4%
80-120k 795 7,997 8,000 -2.3%
120-160k 812 7,900 7,990 -1.2%
160-200k 518 7,142 7,000 -9.6%
200k+ 230 5,906 5,825 -17.3%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
2 2 8,000 N/A
4 6 8,838 +10.5%
5 24 8,345 -5.6%
6 105 8,272 -0.9%
7 341 7,968 -3.7%
8 541 7,734 -2.9%
9 682 7,633 -1.3%
10 730 7,281 -4.6%
11 55 7,319 +0.5%
12 53 6,972 -4.7%
📌 La décote ralentit significativement à 6 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
autre 3 7,630 6,990
diesel 1382 7,469 7,700
essence 1153 7,786 7,990
📌 Carburant avec prix médian le plus élevé : essence (7,990€)
📌 Carburant avec prix médian le plus bas : autre (6,990€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 1635 7,449 7,600
pro 904 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 -16.7% (n= 5)
30k : décote 1.6% (n= 6)
40k : décote 14.3% (n= 5) ⚡
50k : décote -11.5% (n= 32)
60k : décote -3.2% (n= 47)
70k : décote 3.2% (n= 81)
80k : décote -0.9% (n=122)
90k : décote 0.8% (n=192)
100k : décote 2.3% (n=208)
110k : décote 0.4% (n=273)
120k : décote -1.9% (n=199)
130k : décote 1.3% (n=203)
140k : décote 0.2% (n=212)
150k : décote 2.8% (n=198)
160k : décote 3.8% (n=168)
170k : décote 2.1% (n=141)
180k : décote 3.7% (n=110)
190k : décote 3.5% (n= 99)
200k : décote 6.4% (n= 90)
210k : décote 4.2% (n= 45)
220k : décote -3.7% (n= 20)
230k : décote 11.2% (n= 28) ⚡
240k : décote 4.2% (n= 8)
250k : décote 1.0% (n= 15)
260k : décote -2.9% (n= 4)
270k : décote 15.3% (n= 4) ⚡
280k : décote -17.0% (n= 5)
290k : décote 18.5% (n= 6) ⚡
300k+ : décote -10.5% (n= 5)
📌 Seuils où la décote s'accélère (> 8%) :
→ 40k km : 14.3%
→ 230k km : 11.2%
→ 270k km : 15.3%
→ 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.6% (n= 24)
6 ans : décote 0.9% (n=105) 🐢 LENTE
7 ans : décote 3.7% (n=341)
8 ans : décote 2.9% (n=541) 🐢 LENTE
9 ans : décote 1.3% (n=682) 🐢 LENTE
10 ans : décote 4.6% (n=730)
11 ans : décote -0.5% (n= 55) 🐢 LENTE
12 ans : décote 4.7% (n= 53)
📌 Décote lente (< 5% par an) :
→ 4 ans : -10.5%
→ 6 ans : 0.9%
→ 7 ans : 3.7%
→ 8 ans : 2.9%
→ 9 ans : 1.3%
→ 10 ans : 4.6%
→ 11 ans : -0.5%
→ 12 ans : 4.7%
✅ Sauvegardé : /home/ubuntu/app/stats/clio_4/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -176.37 × âge + -0.0130 × km + 10,937
📌 R² = 0.342
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 152 ( 6.0%)
👍 Bonne affaire : 319 ( 12.6%)
📊 Prix marché : 1583 ( 62.3%)
💰 Cher : 411 ( 16.2%)
🔴 Très cher : 74 ( 2.9%)
📊 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,827€ | Écart: -57.8% | Année: 2018 | Km: 131,159
2. [3147790884] Clio 4 phase 2
Prix: 3,500€ | Attendu: 7,842€ | Écart: -55.4% | Année: 2018 | Km: 130,000
3. [3165548491] Renault clio 4
Prix: 3,500€ | Attendu: 7,471€ | Écart: -53.2% | Année: 2017 | Km: 145,000
4. [3150016687] Clio 4
Prix: 4,000€ | Attendu: 7,774€ | Écart: -48.5% | Année: 2016 | Km: 108,000
5. [3162715888] Clio 4 2018
Prix: 4,700€ | Attendu: 9,008€ | Écart: -47.8% | Année: 2018 | Km: 40,000
6. [3154311236] Renault Clio 4 1.5 dCi 2016 – Diesel – Société – 1
Prix: 3,800€ | Attendu: 7,191€ | Écart: -47.2% | Année: 2016 | Km: 153,000
7. [3147329929] Clio 4
Prix: 4,000€ | Attendu: 7,525€ | Écart: -46.8% | Année: 2014 | Km: 100,000
8. [3144664626] Clio 4 retour de vol
Prix: 4,800€ | Attendu: 8,990€ | Écart: -46.6% | Année: 2019 | Km: 55,000
9. [3161045630] Clio 4 75ch
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 4,000€ | Attendu: 6,984€ | Écart: -42.7% | Année: 2016 | Km: 169,000
10. [3138542846] Clio 4 essence retour vol
Prix: 4,500€ | Attendu: 7,701€ | Écart: -41.6% | Année: 2015 | Km: 100,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3147178650] 🚗 Renault Clio 4 en très bon état
Prix: 7,000€ | Attendu: 4,779€ | Écart: +46.5% | Année: 2019 | Km: 380,000
2. [3163754314] Clio 4 initiale paris
Prix: 8,900€ | Attendu: 6,582€ | Écart: +35.2% | Année: 2016 | Km: 200,000
3. [3161126708] RENAULT CLIO IV dCi 110 Initiale Paris | FULL OPTI
Prix: 8,990€ | Attendu: 6,668€ | Écart: +34.8% | Année: 2017 | Km: 207,000
4. [3151967791] Clio 4 initiale Paris
Prix: 8,900€ | Attendu: 6,966€ | Écart: +27.8% | Année: 2017 | Km: 184,000
5. [3144046817] Clio 5
Prix: 9,000€ | Attendu: 7,046€ | Écart: +27.7% | Année: 2019 | Km: 205,000
6. [3155921737] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,652€ | Écart: +27.6% | Année: 2016 | Km: 194,600
7. [3155418369] Renault CLIO IV 1.5 DCI 90CH ENERGY BUSINESS 82G 5
Prix: 8,490€ | Attendu: 6,652€ | Écart: +27.6% | Année: 2016 | Km: 194,600
8. [3151279318] Clio 4 ÉDITION ONE
Prix: 8,899€ | Attendu: 7,006€ | Écart: +27.0% | Année: 2016 | Km: 167,264
9. [3136191420] Clio IV
Prix: 7,490€ | Attendu: 5,898€ | Écart: +27.0% | Année: 2018 | Km: 280,000
10. [3162574180] RENAULT CLIO IV BUSINESS dCi 90 eco2 90g Business
Prix: 8,990€ | Attendu: 7,087€ | Écart: +26.8% | Année: 2016 | Km: 161,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 12 annonces avec prix suspect
💾 12 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 2540
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_20260321_140242.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
→ 12 annonces récupérées (total en mémoire: 47)
Export de 47 annonces vers /home/ubuntu/app/leboncoin_ads_yaris_20260321_140242.csv réussi.
Terminé : 47 annonces au total dans /home/ubuntu/app/leboncoin_ads_yaris_20260321_140242.csv
INFO: Model override : yaris
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_yaris_20260321_140242.csv
✅ 47 lus, 47 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 47 lus, 47 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6350 annonces en base
════════════════════════════════════════════════════════════
INFO: 47 list_id lus dans le CSV.
INFO: 52 annonces actives en base pour toyota yaris.
INFO: 5 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_yaris_20260321_140242.csv
Brand : toyota | Modèle : yaris
════════════════════════════════════════════════════════════
Annonces dans le CSV : 47
Annonces actives en DB : 52
Absentes du crawl : 5
Marquées indisponibles : 5
════════════════════════════════════════════════════════════
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
✅ 106 annonces chargées (modèle 'yaris')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 106
📋 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-21 12:09:26
Durée : 280 jours
👤 Répartition par type de vendeur :
pro : 58 (54.7%)
private : 48 (45.3%)
⛽ Répartition par carburant :
essence : 91 (85.8%)
diesel : 15 (14.2%)
🏭 Top 10 marques :
toyota : 106 (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 : 106 / 106
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 1 outliers (0.9%)
Bornes IQR : [4,882 ; 11,455]
mileage_km : 1 outliers (0.9%)
Bornes IQR : [23,291 ; 216,946]
age_years : 2 outliers (1.9%)
Bornes IQR : [5 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 3 (2.8%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 106
Dont outliers identifiés : 3
Annonces non-outliers : 103
Plages de valeurs :
price_eur : [ 2,500 ; 9,000] (moy: 7,929)
mileage_km : [ 15,333 ; 200,000] (moy: 118,839)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 5,111 ; 143,200] (moy: 14,151)
💾 106 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 106 7928.820755 8100.00 1151.006837 2500.0 7346.750000 8990.000000 9000.0 1643.250000
mileage_km 106 118838.943396 118720.00 35249.853677 15333.0 95911.250000 144325.000000 200000.0 48413.750000
year_model 106 2016.830189 2016.00 1.606366 2015.0 2016.000000 2018.000000 2025.0 2.000000
age_years 106 9.169811 10.00 1.606366 1.0 8.000000 10.000000 11.0 2.000000
km_per_year 106 14150.738733 12881.05 13264.863916 5111.0 9953.340909 14854.642857 143200.0 4901.301948
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 106 7,929 8,100 1,151.01 2,500 7,347 8,990 9,000 1,643
mileage_km 106 118,839 118,720 35,249.85 15,333 95,911 144,325 200,000 48,414
year_model 106 2,017 2,016 1.61 2,015 2,016 2,018 2,025 2
age_years 106 9.2 10.0 1.61 1.0 8.0 10.0 11.0 2.0
km_per_year 106 14,150.7 12,881.0 13,264.86 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 = 15%, σ = 1,151)
→ Étendue : [2,500 ; 9,000] (IQR = 1,643)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 30%, σ = 35,250)
→ É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,151 > médiane 12,881)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ FORTE dispersion (CV = 94%, σ = 13,265)
→ É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-21 14:02:58,123 [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-21 14:02:58,124 [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 40 7,660 7,994 +2.8%
2017 22 8,250 8,495 -7.7%
2018 13 8,134 8,900 +1.4%
2019 12 8,443 8,745 -3.8%
📌 Décote annuelle moyenne : -1.8%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 1 5,250 5,250 N/A
20-50k 1 8,990 8,990 +71.2%
50-80k 13 8,724 8,990 -3.0%
80-120k 39 8,219 8,490 -5.8%
120-160k 39 7,694 7,990 -6.4%
160-200k 12 7,142 6,990 -7.2%
200k+ 1 6,500 6,500 -9.0%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
7 12 8,443 N/A
8 13 8,134 -3.7%
9 22 8,250 +1.4%
10 40 7,660 -7.2%
11 16 7,880 +2.9%
📌 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 91 7,989 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 48 7,588 7,950
pro 58 8,211 8,490
📌 Test Mann-Whitney (médiane) : p = 0.0384
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +540€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (yaris) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/yaris/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
60k : décote 0.0% (n= 8)
70k : décote 1.0% (n= 3)
80k : décote 3.6% (n= 4)
90k : décote -2.5% (n= 11)
100k : décote 5.3% (n= 12)
110k : décote 1.4% (n= 12)
120k : décote -4.1% (n= 9)
130k : décote 4.7% (n= 9)
140k : décote 6.6% (n= 14)
150k : décote 3.2% (n= 7)
160k : décote -4.6% (n= 3)
170k : décote 4.2% (n= 7)
180k : décote 9.9% (n= 2)
📌 Seuils où la décote s'accélère (> 8%) :
→ 180k km : 9.9%
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
8 ans : décote 3.7% (n= 13)
9 ans : décote -1.4% (n= 22) 🐢 LENTE
10 ans : décote 7.2% (n= 40)
11 ans : décote -2.9% (n= 16) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 8 ans : 3.7%
→ 9 ans : -1.4%
→ 11 ans : -2.9%
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = 93.94 × âge + -0.0130 × km + 8,608
📌 R² = 0.151
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 7 ( 6.6%)
👍 Bonne affaire : 8 ( 7.5%)
📊 Prix marché : 69 ( 65.1%)
💰 Cher : 18 ( 17.0%)
🔴 Très cher : 4 ( 3.8%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/yaris/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3151345668] Toyota Yaris
Prix: 2,500€ | Attendu: 7,603€ | Écart: -67.1% | Année: 2016 | Km: 150,000
2. [3152322073] Toyota Yaris 1.0 VVTI PRO EXPORT (0101261)
Prix: 5,250€ | Attendu: 8,691€ | Écart: -39.6% | Année: 2023 | Km: 15,333
3. [3157660912] Toyota Yaris
Prix: 5,500€ | Attendu: 7,946€ | Écart: -30.8% | Année: 2018 | Km: 109,000
4. [3165225181] Toyota yaris
Prix: 5,300€ | Attendu: 7,344€ | Écart: -27.8% | Année: 2016 | Km: 170,000
5. [3161632025] Toyota Yaris III - 5P - 2016
Prix: 5,500€ | Attendu: 7,473€ | Écart: -26.4% | Année: 2016 | Km: 160,000
6. [3157975215] Toyota yaris 2011
Prix: 5,150€ | Attendu: 6,846€ | Écart: -24.8% | Année: 2025 | Km: 143,200
7. [3160315775] Toyota aygo xplay
Prix: 6,399€ | Attendu: 8,037€ | Écart: -20.4% | Année: 2018 | Km: 102,000
8. [3096659493] Toyota Yaris 3
Prix: 6,300€ | Attendu: 7,749€ | Écart: -18.7% | Année: 2015 | Km: 146,000
9. [3164108049] Toyota yaris lllphase2
Prix: 6,000€ | Attendu: 7,344€ | Écart: -18.3% | Année: 2016 | Km: 170,000
10. [3159781517] Toyota Yaris-III Phase-2 1.3VTTi 16V 99Cv 1ère Mai
Prix: 5,950€ | Attendu: 7,200€ | Écart: -17.4% | Année: 2016 | Km: 181,093
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3157352360] Toyota Yaris III 1.5 VVT-i 110 ch – Design Y20-201
Prix: 8,900€ | Attendu: 6,997€ | Écart: +27.2% | Année: 2019 | Km: 175,000
2. [3151218398] TOYOTA Yaris 3 Phase 2 / 1.3 VVTi 16V 100 cv *Fini
Prix: 8,990€ | Attendu: 7,266€ | Écart: +23.7% | Année: 2016 | Km: 176,000
3. [3153117476] Toyota Yaris 70 VVT-i France 5p MY19
Prix: 8,990€ | Attendu: 7,371€ | Écart: +22.0% | Année: 2018 | Km: 153,356
4. [3163742160] Toyota Yaris 90 D-4D Design 5p style
Prix: 8,990€ | Attendu: 7,419€ | Écart: +21.2% | Année: 2016 | Km: 164,156
5. [3135900987] TOYOTA YARIS RC18 110 VVT-i COLLECTION
Prix: 8,990€ | Attendu: 7,609€ | Écart: +18.1% | Année: 2018 | Km: 135,000
6. [3151923222] Toyota Yaris 110 VVT-i Design Y20 5p RC19
Prix: 8,990€ | Attendu: 7,622€ | Écart: +17.9% | Année: 2019 | Km: 126,787
7. [3006906577] Toyota Yaris III 69 VVT-i France
Prix: 8,990€ | Attendu: 7,722€ | Écart: +16.4% | Année: 2016 | Km: 140,770
8. [3146935741] Toyota Yaris 1.4 D-4D 90 Business
Prix: 8,990€ | Attendu: 7,779€ | Écart: +15.6% | Année: 2017 | Km: 129,178
9. [3154060767] Toyota yaris
Prix: 9,000€ | Attendu: 7,818€ | Écart: +15.1% | Année: 2017 | Km: 126,126
10. [3154999177] Toyota Yaris 1.4 l D4D
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 8,900€ | Attendu: 7,834€ | Écart: +13.6% | Année: 2016 | Km: 132,200
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 1 annonces avec prix suspect
💾 1 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 106
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_20260321_140259.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_20260321_140259.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_20260321_140259.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
→ 15 annonces récupérées (total en mémoire: 120)
Export de 120 annonces vers /home/ubuntu/app/leboncoin_ads_i20_20260321_140259.csv réussi.
Terminé : 120 annonces au total dans /home/ubuntu/app/leboncoin_ads_i20_20260321_140259.csv
INFO: Model override : i20
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_i20_20260321_140259.csv
✅ 120 lus, 120 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 120 lus, 120 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6353 annonces en base
════════════════════════════════════════════════════════════
INFO: 120 list_id lus dans le CSV.
INFO: 122 annonces actives en base pour hyundai i20.
INFO: 2 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_i20_20260321_140259.csv
Brand : hyundai | Modèle : i20
════════════════════════════════════════════════════════════
Annonces dans le CSV : 120
Annonces actives en DB : 122
Absentes du crawl : 2
Marquées indisponibles : 2
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/i20/figures
🔍 Modèle filtré : i20
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 224 annonces chargées (modèle 'i20')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 224
📋 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-21 14:21:39
Durée : 340 jours
👤 Répartition par type de vendeur :
private : 124 (55.4%)
pro : 100 (44.6%)
⛽ Répartition par carburant :
essence : 180 (80.4%)
diesel : 43 (19.2%)
autre : 1 (0.4%)
🏭 Top 10 marques :
hyundai : 224 (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 : 224 / 224
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 2 outliers (0.9%)
Bornes IQR : [4,750 ; 10,750]
mileage_km : 6 outliers (2.7%)
Bornes IQR : [29,625 ; 216,625]
age_years : 22 outliers (9.8%)
Bornes IQR : [8 ; 12]
📌 Total d'annonces outliers (au moins 1 variable) : 28 (12.5%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 224
Dont outliers identifiés : 28
Annonces non-outliers : 196
Plages de valeurs :
price_eur : [ 3,800 ; 9,000] (moy: 7,769)
mileage_km : [ 95 ; 230,567] (moy: 122,482)
year_model : [ 2,015 ; 2,025] (moy: 2,017)
age_years : [ 1 ; 11] (moy: 9)
km_per_year : [ 12 ; 24,308] (moy: 13,468)
💾 224 annonces enrichies persistées dans SQLite
🔎 Détection des annonces suspectes...
⚠️ 3 signaux de suspicion détectés
km_trop_bas_essence: 1
km_trop_bas_diesel: 2
💾 3 signaux persistés dans SQLite
======================================================================
📊 STATISTIQUES DESCRIPTIVES GLOBALES
======================================================================
📊 Tableau récapitulatif (valeurs brutes) :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 224 7769.348214 7990.000000 1076.705490 3800.000 7000.000000 8500.000000 9000.000000 1500.00000
mileage_km 224 122481.767857 125741.000000 37374.242262 95.000 99750.000000 146500.000000 230567.000000 46750.00000
year_model 224 2016.794643 2016.000000 1.366731 2015.000 2016.000000 2017.000000 2025.000000 1.00000
age_years 224 9.205357 10.000000 1.366731 1.000 9.000000 10.000000 11.000000 1.00000
km_per_year 224 13468.049751 13333.333333 4222.724516 11.875 10528.338636 16416.666667 24308.166667 5888.32803
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 224 7,769 7,990 1,076.71 3,800 7,000 8,500 9,000 1,500
mileage_km 224 122,482 125,741 37,374.24 95 99,750 146,500 230,567 46,750
year_model 224 2,017 2,016 1.37 2,015 2,016 2,017 2,025 1
age_years 224 9.2 10.0 1.37 1.0 9.0 10.0 11.0 1.0
km_per_year 224 13,468.0 13,333.3 4,222.72 11.9 10,528.3 16,416.7 24,308.2 5,888.3
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 14%, σ = 1,077)
→ Étendue : [3,800 ; 9,000] (IQR = 1,500)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 31%, σ = 37,374)
→ Étendue : [95 ; 230,567] (IQR = 46,750)
📌 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,223)
→ Étendue : [12 ; 24,308] (IQR = 5,888)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
2026-03-21 14:03:21,145 [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-21 14:03:21,145 [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 88 7,610 7,900 -0.5%
2017 56 7,642 7,945 -0.4%
2018 33 8,113 8,480 -6.2%
2019 15 8,361 8,490 -3.1%
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 5 8,156 7,990 +4.6%
50-80k 21 8,509 8,700 +4.3%
80-120k 73 8,165 8,490 -4.0%
120-160k 85 7,782 7,900 -4.7%
160-200k 33 6,526 6,000 -16.1%
200k+ 4 6,148 6,050 -5.8%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
6 5 8,684 N/A
7 15 8,361 -3.7%
8 33 8,113 -3.0%
9 56 7,642 -5.8%
10 88 7,610 -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 180 7,909 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 124 7,617 7,800
pro 100 7,958 7,994
📌 Test Mann-Whitney (médiane) : p = 0.0487
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +194€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (i20) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/i20/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
40k : décote -5.4% (n= 4)
50k : décote -6.3% (n= 2)
60k : décote 6.1% (n= 7)
70k : décote -5.4% (n= 12)
80k : décote 2.9% (n= 7)
90k : décote 0.9% (n= 21)
100k : décote 2.3% (n= 28)
110k : décote 2.5% (n= 17)
120k : décote 3.2% (n= 25)
130k : décote -1.1% (n= 26)
140k : décote -1.3% (n= 21)
150k : décote -1.1% (n= 13)
160k : décote 6.7% (n= 14)
170k : décote 22.5% (n= 13) ⚡
180k : décote -8.0% (n= 5)
200k : décote 2.4% (n= 2)
📌 Seuils où la décote s'accélère (> 8%) :
→ 170k km : 22.5%
✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
7 ans : décote 3.7% (n= 15)
8 ans : décote 3.0% (n= 33) 🐢 LENTE
9 ans : décote 5.8% (n= 56)
10 ans : décote 0.4% (n= 88) 🐢 LENTE
11 ans : décote 0.5% (n= 25) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 7 ans : 3.7%
→ 8 ans : 3.0%
→ 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 = -118.51 × âge + -0.0129 × km + 10,443
📌 R² = 0.249
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 15 ( 6.7%)
👍 Bonne affaire : 30 ( 13.4%)
📊 Prix marché : 130 ( 58.0%)
💰 Cher : 45 ( 20.1%)
🔴 Très cher : 4 ( 1.8%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/i20/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3150513139] Hyundai i20 essence
Prix: 3,800€ | Attendu: 7,770€ | Écart: -51.1% | Année: 2015 | Km: 106,000
2. [3160167161] Hyundai i20 2017
Prix: 4,000€ | Attendu: 7,812€ | Écart: -48.8% | Année: 2017 | Km: 121,054
3. [3132112485] Vend ou échange
Prix: 5,500€ | Attendu: 9,135€ | Écart: -39.8% | Année: 2015 | Km: 296
4. [3146778483] HYUNDAI i20 II 5 Portes Phase 2 1.2 i 16V 84 cv
Prix: 4,990€ | Attendu: 7,298€ | Écart: -31.6% | Année: 2018 | Km: 170,000
5. [3141044598] Hyundai i20
Prix: 5,600€ | Attendu: 7,944€ | Écart: -29.5% | Année: 2016 | Km: 101,653
6. [3154012812] Hyundai
Prix: 5,100€ | Attendu: 7,061€ | Écart: -27.8% | Année: 2016 | Km: 170,000
7. [3159144757] Hyundai i20 1.2 essence 2016 – CT OK – pneus neufs
Prix: 5,400€ | Attendu: 7,209€ | Écart: -25.1% | Année: 2016 | Km: 158,600
8. [3144748405] Hyundai i20 1.2 Go Klima RadioCD
Prix: 5,385€ | Attendu: 7,104€ | Écart: -24.2% | Année: 2017 | Km: 175,866
9. [3139554030] Hyundai i20 coupe 1.2 84 cv intuitive 3 portes
Prix: 5,500€ | Attendu: 7,208€ | Écart: -23.7% | Année: 2018 | Km: 177,000
10. [3157664571] Hyundai i20 1.1 CRDI
Prix: 5,300€ | Attendu: 6,880€ | Écart: -23.0% | Année: 2016 | Km: 184,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3105795045] HYUNDAI I20 Coupé 1.0 TGDi 120 CV 03/2016 1 ERE MA
Prix: 8,990€ | Attendu: 7,126€ | Écart: +26.2% | Année: 2016 | Km: 165,000
2. [3164886925] Hyundai i20 Coupé
Prix: 9,000€ | Attendu: 7,374€ | Écart: +22.1% | Année: 2017 | Km: 155,000
3. [3158481657] Hyundai i20
Prix: 8,900€ | Attendu: 7,389€ | Écart: +20.4% | Année: 2016 | Km: 144,600
4. [3109227704] Hyundai i20 crdi 75ch edition navy
Prix: 8,900€ | Attendu: 7,410€ | Écart: +20.1% | Année: 2017 | Km: 152,154
5. [3152500439] Hyundai i20 1.0 T-GDi 100 UEFA EURO 2016
Prix: 8,489€ | Attendu: 7,237€ | Écart: +17.3% | Année: 2016 | Km: 156,400
6. [3151384014] Hyundai i20
Prix: 8,500€ | Attendu: 7,292€ | Écart: +16.6% | Année: 2015 | Km: 143,000
7. [2972084163] HYUNDAI I20 1.2i - 84 BERLINE Initia
Prix: 8,990€ | Attendu: 7,731€ | Écart: +16.3% | Année: 2015 | Km: 109,000
8. [3155001248] Vente voiture hyundai i20
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,500€ | Attendu: 7,324€ | Écart: +16.1% | Année: 2018 | Km: 168,000
9. [3140396976] HYUNDAI i20 1.1 CRDi 75 Intuitive
Prix: 8,900€ | Attendu: 7,694€ | Écart: +15.7% | Année: 2016 | Km: 121,000
10. [3164815335] Hyundai I20 1.2 84 GO NAVI
Prix: 8,990€ | Attendu: 7,837€ | Écart: +14.7% | Année: 2016 | Km: 109,939
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 2 annonces avec prix suspect
💾 2 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 224
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_20260321_140322.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_20260321_140322.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_20260321_140322.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_20260321_140322.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_20260321_140322.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_20260321_140322.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_20260321_140322.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_20260321_140322.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_20260321_140322.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
→ 10 annonces récupérées (total en mémoire: 325)
Export de 325 annonces vers /home/ubuntu/app/leboncoin_ads_berlingo_20260321_140322.csv réussi.
Terminé : 325 annonces au total dans /home/ubuntu/app/leboncoin_ads_berlingo_20260321_140322.csv
INFO: Model override : berlingo
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_berlingo_20260321_140322.csv
✅ 325 lus, 325 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 325 lus, 325 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6355 annonces en base
════════════════════════════════════════════════════════════
INFO: 324 list_id lus dans le CSV.
INFO: 330 annonces actives en base pour citroen berlingo.
INFO: 6 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_berlingo_20260321_140322.csv
Brand : citroen | Modèle : berlingo
════════════════════════════════════════════════════════════
Annonces dans le CSV : 324
Annonces actives en DB : 330
Absentes du crawl : 6
Marquées indisponibles : 6
════════════════════════════════════════════════════════════
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
✅ 518 annonces chargées (modèle 'berlingo')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 518
📋 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-21 10:09:06
Durée : 402 jours
👤 Répartition par type de vendeur :
pro : 427 (82.4%)
private : 91 (17.6%)
⛽ Répartition par carburant :
diesel : 503 (97.1%)
électrique : 10 (1.9%)
essence : 5 (1.0%)
🏭 Top 10 marques :
citroen : 518 (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 : 502 / 518
Pourcentage conservé : 96.9%
🔍 Détection des outliers (méthode IQR)...
price_eur : 6 outliers (1.2%)
Bornes IQR : [265 ; 28,625]
mileage_km : 4 outliers (0.8%)
Bornes IQR : [-82,466 ; 241,479]
age_years : 3 outliers (0.6%)
Bornes IQR : [-3 ; 13]
📌 Total d'annonces outliers (au moins 1 variable) : 10 (2.0%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 502
Dont outliers identifiés : 10
Annonces non-outliers : 492
Plages de valeurs :
price_eur : [ 2,800 ; 38,190] (moy: 14,888)
mileage_km : [ 1 ; 309,000] (moy: 83,416)
year_model : [ 2,009 ; 2,025] (moy: 2,021)
age_years : [ 1 ; 17] (moy: 5)
km_per_year : [ 1 ; 56,667] (moy: 14,100)
💾 502 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 502 14887.559761 13845.000000 5789.910205 2800.0 10900.00 17990.0 38190.000000 7090.00
mileage_km 502 83416.115538 85550.000000 57447.571811 1.0 39013.75 120000.0 309000.000000 80986.25
year_model 502 2020.673307 2020.000000 2.743318 2009.0 2019.00 2023.0 2025.000000 4.00
age_years 502 5.326693 6.000000 2.743318 1.0 3.00 7.0 17.000000 4.00
km_per_year 502 14100.221949 14416.583333 9261.510275 1.0 8406.25 19472.5 56666.666667 11066.25
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 502 14,888 13,845 5,789.91 2,800 10,900 17,990 38,190 7,090
mileage_km 502 83,416 85,550 57,447.57 1 39,014 120,000 309,000 80,986
year_model 502 2,021 2,020 2.74 2,009 2,019 2,023 2,025 4
age_years 502 5.3 6.0 2.74 1.0 3.0 7.0 17.0 4.0
km_per_year 502 14,100.2 14,416.6 9,261.51 1.0 8,406.2 19,472.5 56,666.7 11,066.2
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 14,888 > médiane 13,845)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 39%, σ = 5,790)
→ Étendue : [2,800 ; 38,190] (IQR = 7,090)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ FORTE dispersion (CV = 69%, σ = 57,448)
→ Étendue : [1 ; 309,000] (IQR = 80,986)
📌 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,262)
→ Étendue : [1 ; 56,667] (IQR = 11,066)
2026-03-21 14:03:57,695 [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-21 14:03:57,696 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2009 2 4,800 4,800 N/A
2013 2 6,850 6,850 -42.7%
2014 2 9,345 9,345 -36.4%
2016 12 8,057 8,200 +13.8%
2017 33 8,908 8,940 -10.6%
2018 57 10,276 9,500 -15.4%
2019 57 12,155 11,990 -18.3%
2020 94 13,191 12,695 -8.5%
2021 62 14,280 13,890 -8.3%
2022 51 14,714 14,500 -3.0%
2023 38 18,135 17,900 -23.3%
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 55 17,427 17,760 -27.0%
50-80k 82 15,366 15,990 -11.8%
80-120k 139 12,553 12,590 -18.3%
120-160k 86 10,525 10,658 -16.2%
160-200k 36 8,738 8,915 -17.0%
200k+ 11 6,433 6,000 -26.4%
📊 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,714 -18.9%
5 62 14,280 -3.0%
6 94 13,191 -7.6%
7 57 12,155 -7.9%
8 57 10,276 -15.5%
9 33 8,908 -13.3%
10 12 8,057 -9.6%
12 2 9,345 +16.0%
13 2 6,850 -26.7%
17 2 4,800 -29.9%
📌 La décote ralentit significativement à 5 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 488 14,891 13,845
essence 5 11,744 9,990
électrique 9 16,439 15,990
📌 Carburant avec prix médian le plus élevé : électrique (15,990€)
📌 Carburant avec prix médian le plus bas : essence (9,990€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 90 12,336 11,650
pro 412 15,445 13,990
📌 Test Mann-Whitney (médiane) : p = 0.0000
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +2,340€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (berlingo) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/berlingo/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
10k : décote 21.5% (n= 7) ⚡
20k : décote 7.4% (n= 14)
30k : décote -0.2% (n= 23)
40k : décote 3.8% (n= 18)
50k : décote 9.1% (n= 28)
60k : décote -0.9% (n= 29)
70k : décote 3.3% (n= 25)
80k : décote 7.4% (n= 35)
90k : décote 6.1% (n= 37)
100k : décote 8.0% (n= 34)
110k : décote 9.0% (n= 33)
120k : décote 1.2% (n= 29)
130k : décote 2.5% (n= 23)
140k : décote 2.0% (n= 13)
150k : décote 2.0% (n= 21)
160k : décote 9.9% (n= 18)
170k : décote 2.5% (n= 11)
180k : décote 16.9% (n= 7) ⚡
200k : décote 7.5% (n= 5)
210k : décote -13.0% (n= 2)
300k+ : décote 38.0% (n= 2) ⚡
📌 Seuils où la décote s'accélère (> 8%) :
→ 10k km : 21.5%
→ 50k km : 9.1%
→ 110k km : 9.0%
→ 160k km : 9.9%
→ 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.9% (n= 51) ⚡ FORTE
5 ans : décote 3.0% (n= 62) 🐢 LENTE
6 ans : décote 7.6% (n= 94)
7 ans : décote 7.9% (n= 57)
8 ans : décote 15.5% (n= 57) ⚡ FORTE
9 ans : décote 13.3% (n= 33)
10 ans : décote 9.6% (n= 12)
12 ans : décote -16.0% (n= 2) 🐢 LENTE
13 ans : décote 26.7% (n= 2) ⚡ FORTE
17 ans : décote 29.9% (n= 2) ⚡ FORTE
📌 Décote rapide (> 10% par an) :
→ 2 ans : 15.6%
→ 3 ans : 13.7%
→ 4 ans : 18.9%
→ 8 ans : 15.5%
→ 9 ans : 13.3%
→ 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 = -926.13 × âge + -0.0504 × km + 24,028
📌 R² = 0.773
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 45 ( 9.0%)
👍 Bonne affaire : 91 ( 18.2%)
📊 Prix marché : 254 ( 50.9%)
💰 Cher : 52 ( 10.4%)
🔴 Très cher : 57 ( 11.4%)
📊 Graphique : Distribution des écarts de prix...
✅ Sauvegardé : /home/ubuntu/app/stats/berlingo/figures/ecarts_prix.png
🌟 TOP 10 MEILLEURES AFFAIRES (écart le plus négatif) :
====================================================================================================
1. [3156231773] Citroën Berlingo XL BLUEHDI 100 S&S ETG6 CLUB
Prix: 3,000€ | Attendu: 9,989€ | É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,439€ | Écart: -51.3% | 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,156€ | Écart: -50.5% | Année: 2018 | Km: 9,173
4. [3144063650] Citroën Berlingo 1.5 BLUEDHI 100 STE XL DRIVER
Prix: 8,000€ | Attendu: 15,928€ | É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,404€ | Écart: -48.2% | Année: 2017 | Km: 203,997
6. [3156023444] Citroën Berlingo 1.5 BLUEHDI 100 STE XL DRIVER
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 8,000€ | Attendu: 15,196€ | É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,153€ | Écart: -46.4% | Année: 2018 | Km: 108,380
8. [3163320492] Citroën Berlingo VAN XL 950 PURETECH 130 S&S EAT8
Prix: 8,250€ | Attendu: 15,011€ | Écart: -45.0% | Année: 2020 | Km: 68,597
9. [2984931973] Citroën Berlingo Electrique Taille XL Club
Prix: 8,590€ | Attendu: 15,325€ | Écart: -43.9% | Année: 2018 | Km: 25,657
10. [3156133024] Citroën berlingo xl électrique confort isotherme T
Prix: 7,990€ | Attendu: 13,744€ | Écart: -41.9% | 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,470€ | Écart: +308.1% | Année: 2017 | Km: 282,000
2. [3155307735] Citroën berlingo
Prix: 7,000€ | Attendu: 1,876€ | Écart: +273.1% | Année: 2013 | Km: 200,500
3. [3115315205] Citroën Jumpy CAB APPROFONDIE XL BLUEHDI 180 S&S E
Prix: 38,190€ | Attendu: 23,100€ | Écart: +65.3% | Année: 2025 | Km: 40
4. [3130621009] Citroen BERLINGO XL 1.6 HDI 90 ch CABINE APPROFOND
Prix: 11,490€ | Attendu: 7,064€ | Écart: +62.7% | Année: 2014 | Km: 116,000
5. [3148392923] CITROEN BERLINGO 1.5 BlueHDi S&S - 130 XL Feel 7 P
Prix: 19,990€ | Attendu: 12,382€ | Écart: +61.4% | Année: 2018 | Km: 84,000
6. [3140204221] Citroen Berlingo Van XL BlueHDi 100 S&S Cabine App
Prix: 9,490€ | Attendu: 5,881€ | Écart: +61.4% | Année: 2018 | Km: 212,912
7. [3097892706] Citroën Berlingo CABINE APPROFONDIE CA TAILLE XL B
Prix: 37,140€ | Attendu: 23,102€ | Écart: +60.8% | Année: 2025 | Km: 1
8. [3158708742] Berlingo XL 1.6L bluehdi aménagé
Prix: 15,000€ | Attendu: 10,062€ | Écart: +49.1% | Année: 2018 | Km: 130,000
9. [3156325212] À vendre - Citroën Berlingo rallongée - Boîte auto
Prix: 9,500€ | Attendu: 6,394€ | Écart: +48.6% | Année: 2016 | Km: 166,000
10. [3159127356] Citroën Berlingo XL 1.6 BlueHDI 100 CV CABINE APPR
Prix: 9,990€ | Attendu: 6,968€ | Écart: +43.4% | Année: 2017 | Km: 173,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 12 annonces avec prix suspect
💾 12 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 518
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_20260321_140359.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_20260321_140359.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_20260321_140359.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_20260321_140359.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
→ 30 annonces récupérées (total en mémoire: 170)
Export de 170 annonces vers /home/ubuntu/app/leboncoin_ads_c4_20260321_140359.csv réussi.
Terminé : 170 annonces au total dans /home/ubuntu/app/leboncoin_ads_c4_20260321_140359.csv
INFO: Model override : c4
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_c4_20260321_140359.csv
✅ 170 lus, 170 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 170 lus, 170 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6355 annonces en base
════════════════════════════════════════════════════════════
INFO: 170 list_id lus dans le CSV.
INFO: 173 annonces actives en base pour citroen c4.
INFO: 3 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_c4_20260321_140359.csv
Brand : citroen | Modèle : c4
════════════════════════════════════════════════════════════
Annonces dans le CSV : 170
Annonces actives en DB : 173
Absentes du crawl : 3
Marquées indisponibles : 3
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/c4/figures
🔍 Modèle filtré : c4
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 272 annonces chargées (modèle 'c4')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 272
📋 Premières lignes (colonnes parsées) :
list_id subject price_eur year_model mileage_km fuel brand model owner_type first_publication_date
0 3114906971 Citroen c4 spacetourer 1.2 130cv business 9500 2019 114200 essence citroen c4 pro 2026-02-17 16:35:09
1 3120070348 Citroen GRAND C4 PICASSO BLUEHDI 120CH BUSINESS + S&S 98G 9990 2015 149515 diesel citroen c4 pro 2025-12-30 11:37:00
2 3150919595 Citroen GRAND C4 SPACETOURER PURETECH 130CH S&S BUSINESS + E6.D 10990 2019 109477 essence citroen c4 pro 2026-02-25 04:59:50
3 3067498742 CITROEN C4 SPACETOURER 1.2 130 Business EAT8 7 Places / DISTRIBUTION NEUVE 10990 2019 68000 essence citroen c4 pro 2025-10-01 09:38:00
4 3034772801 Citroen C4 Grand Picasso 1.6 BLUEHDI 120 FEEL EAT BVA START-STOP 10490 2017 143000 diesel citroen c4 pro 2025-08-04 09:52:00
❓ Valeurs manquantes par colonne clé :
list_id : 0 manquantes (0.0%)
subject : 0 manquantes (0.0%)
price_eur : 0 manquantes (0.0%)
year_model : 0 manquantes (0.0%)
mileage_km : 0 manquantes (0.0%)
fuel : 0 manquantes (0.0%)
brand : 0 manquantes (0.0%)
model : 0 manquantes (0.0%)
owner_type : 0 manquantes (0.0%)
first_publication_date : 0 manquantes (0.0%)
📅 Période couverte :
Première publication : 2023-11-09 04:54:09
Dernière publication : 2026-03-20 23:30:03
Durée : 862 jours
👤 Répartition par type de vendeur :
pro : 141 (51.8%)
private : 131 (48.2%)
⛽ Répartition par carburant :
diesel : 152 (55.9%)
essence : 120 (44.1%)
🏭 Top 10 marques :
citroen : 272 (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 : 271 / 272
Pourcentage conservé : 99.6%
🔍 Détection des outliers (méthode IQR)...
price_eur : 12 outliers (4.4%)
Bornes IQR : [6,332 ; 13,152]
mileage_km : 12 outliers (4.4%)
Bornes IQR : [66,625 ; 185,625]
age_years : 0 outliers (0.0%)
Bornes IQR : [2 ; 14]
📌 Total d'annonces outliers (au moins 1 variable) : 24 (8.9%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 271
Dont outliers identifiés : 24
Annonces non-outliers : 247
Plages de valeurs :
price_eur : [ 4,500 ; 11,000] (moy: 9,527)
mileage_km : [ 186 ; 150,000] (moy: 120,953)
year_model : [ 2,015 ; 2,022] (moy: 2,017)
age_years : [ 4 ; 11] (moy: 9)
km_per_year : [ 17 ; 37,387] (moy: 14,716)
💾 271 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 271 9527.162362 9990.0 1467.995621 4500.000000 8890.0 10595.000000 11000.00 1705.000000
mileage_km 271 120953.380074 129500.0 29767.803565 186.000000 111250.0 141000.000000 150000.00 29750.000000
year_model 271 2017.328413 2017.0 1.798941 2015.000000 2016.0 2019.000000 2022.00 3.000000
age_years 271 8.671587 9.0 1.798941 4.000000 7.0 10.000000 11.00 3.000000
km_per_year 271 14716.206983 14222.0 5173.835825 16.909091 12000.0 16770.833333 37386.75 4770.833333
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 271 9,527 9,990 1,468.00 4,500 8,890 10,595 11,000 1,705
mileage_km 271 120,953 129,500 29,767.80 186 111,250 141,000 150,000 29,750
year_model 271 2,017 2,017 1.80 2,015 2,016 2,019 2,022 3
age_years 271 8.7 9.0 1.80 4.0 7.0 10.0 11.0 3.0
km_per_year 271 14,716.2 14,222.0 5,173.84 16.9 12,000.0 16,770.8 37,386.8 4,770.8
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 15%, σ = 1,468)
→ Étendue : [4,500 ; 11,000] (IQR = 1,705)
📌 mileage_km :
→ Distribution asymétrique GAUCHE (moyenne 120,953 < médiane 129,500)
Quelques valeurs basses tirent la moyenne vers le bas.
→ Faible dispersion (CV = 25%, σ = 29,768)
→ Étendue : [186 ; 150,000] (IQR = 29,750)
📌 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,174)
→ Étendue : [17 ; 37,387] (IQR = 4,771)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
2026-03-21 14:04:16,411 [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-21 14:04:16,412 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
---------------------------------------------------------------------------
Année Nb Prix moy Prix méd Décote %
---------------------------------------------------------------------------
2015 52 8,889 9,000 N/A
2016 51 9,021 9,500 -1.5%
2017 53 9,763 10,200 -8.2%
2018 38 9,619 9,990 +1.5%
2019 42 10,057 10,000 -4.6%
2020 20 9,820 10,240 +2.4%
2021 13 10,521 10,700 -7.1%
2022 2 10,495 10,495 +0.2%
📌 Décote annuelle moyenne : -2.5%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 7 8,527 8,500 N/A
20-50k 1 10,980 10,980 +28.8%
50-80k 15 10,164 10,449 -7.4%
80-120k 72 9,545 9,990 -6.1%
120-160k 176 9,497 9,990 -0.5%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
4 2 10,495 N/A
5 13 10,521 +0.2%
6 20 9,820 -6.7%
7 42 10,057 +2.4%
8 38 9,619 -4.4%
9 53 9,763 +1.5%
10 51 9,021 -7.6%
11 52 8,889 -1.5%
📌 La décote ralentit significativement à 7 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 151 9,934 10,000
essence 120 9,015 9,500
📌 Carburant avec prix médian le plus élevé : diesel (10,000€)
📌 Carburant avec prix médian le plus bas : essence (9,500€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 130 9,188 9,500
pro 141 9,840 9,990
📌 Test Mann-Whitney (médiane) : p = 0.0058
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +490€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (c4) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/c4/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
60k : décote -23.9% (n= 6)
70k : décote 6.1% (n= 8)
80k : décote -2.0% (n= 10)
90k : décote 7.9% (n= 16)
100k : décote -7.8% (n= 15)
110k : décote 7.9% (n= 31)
120k : décote -5.2% (n= 41)
130k : décote 1.3% (n= 55)
140k : décote 3.1% (n= 72)
150k : décote -1.6% (n= 8)
✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
5 ans : décote -0.2% (n= 13) 🐢 LENTE
6 ans : décote 6.7% (n= 20)
7 ans : décote -2.4% (n= 42) 🐢 LENTE
8 ans : décote 4.4% (n= 38)
9 ans : décote -1.5% (n= 53) 🐢 LENTE
10 ans : décote 7.6% (n= 51)
11 ans : décote 1.5% (n= 52) 🐢 LENTE
📌 Décote lente (< 5% par an) :
→ 5 ans : -0.2%
→ 7 ans : -2.4%
→ 8 ans : 4.4%
→ 9 ans : -1.5%
→ 11 ans : 1.5%
✅ Sauvegardé : /home/ubuntu/app/stats/c4/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -251.43 × âge + -0.0013 × km + 11,864
📌 R² = 0.095
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 32 ( 11.8%)
👍 Bonne affaire : 28 ( 10.3%)
📊 Prix marché : 140 ( 51.7%)
💰 Cher : 61 ( 22.5%)
🔴 Très cher : 10 ( 3.7%)
📊 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,207€ | Écart: -50.1% | Année: 2016 | Km: 110,000
2. [3144627553] Grand C4 Picasso
Prix: 4,500€ | Attendu: 8,917€ | Écart: -49.5% | Année: 2015 | Km: 140,000
3. [3148620999] C4 Picasso
Prix: 4,600€ | Attendu: 8,914€ | Écart: -48.4% | Année: 2015 | Km: 142,000
4. [3155010351] C4 Picasso
Prix: 4,600€ | Attendu: 8,914€ | Écart: -48.4% | Année: 2015 | Km: 142,000
5. [3159599228] Vends C4 Grand Picasso II 7 places
Prix: 6,000€ | Attendu: 9,678€ | Écart: -38.0% | Année: 2018 | Km: 135,000
6. [3148926526] C4 grand Picasso 2l hdi 150cv exclusive
Prix: 5,800€ | Attendu: 9,188€ | Écart: -36.9% | Année: 2016 | Km: 125,000
7. [3158296763] C4 grand Picasso 2l hdi 150 cv pack exclusive
Prix: 5,800€ | Attendu: 9,188€ | Écart: -36.9% | Année: 2016 | Km: 125,000
8. [3159003549] Vends CITROEN GRAND C4 PICASSO Intensive
Prix: 5,900€ | Attendu: 9,171€ | Écart: -35.7% | Année: 2016 | Km: 138,000
9. [3162574098] Citroën c4 Picasso 7 places
Prix: 6,000€ | Attendu: 9,197€ | Écart: -34.8% | Année: 2016 | Km: 118,000
10. [3147269001] CITROEN GRAND C4 PICASSO Spacetourer
Prix: 6,000€ | Attendu: 9,172€ | Écart: -34.6% | Année: 2016 | Km: 137,500
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3017985052] CITROEN C4 PICASSO Grand 1.6 HDi - 120 Intensive 7
Prix: 10,990€ | Attendu: 8,904€ | Écart: +23.4% | Année: 2015 | Km: 149,900
2. [3146221969] Citroen C4 Grand Picasso 7 Places - 2.0 BlueHDi 15
Prix: 10,990€ | Attendu: 8,914€ | Écart: +23.3% | Année: 2015 | Km: 142,000
3. [2934302132] Citroen Grand C4 Picasso PureTech 130ch Confort S&
Prix: 10,990€ | Attendu: 8,938€ | Écart: +23.0% | Année: 2015 | Km: 123,901
4. [3136798926] Grand C4 Picasso 120 HDI
Prix: 11,000€ | Attendu: 8,948€ | Écart: +22.9% | Année: 2015 | Km: 116,000
5. [3155706473] Citroën Grand C4 Picasso 1.6 BlueHdi 115 Intensive
Prix: 10,995€ | Attendu: 8,951€ | Écart: +22.8% | Année: 2015 | Km: 113,981
6. [3138161286] Citroën C4 PICASSO II Exclusive 2.0 BLUEHDI 150CV
Prix: 10,990€ | Attendu: 8,960€ | Écart: +22.7% | Année: 2015 | Km: 107,256
7. [3161244489] Citroën Grand C4 Picasso e-HDi 115 Exclusive ETG6
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 10,980€ | Attendu: 9,036€ | Écart: +21.5% | Année: 2015 | Km: 47,966
8. [3149154360] Grand c4
Prix: 11,000€ | Attendu: 9,160€ | Écart: +20.1% | Année: 2016 | Km: 146,230
9. [3071933719] Citroën C4 grand Picasso
Prix: 11,000€ | Attendu: 9,162€ | Écart: +20.1% | Année: 2016 | Km: 145,000
10. [3160469081] Grand C4 Picasso 7 places
Prix: 10,800€ | Attendu: 8,997€ | Écart: +20.0% | Année: 2015 | Km: 78,300
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 4 annonces avec prix suspect
💾 4 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 272
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_20260321_140417.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_20260321_140417.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
→ 34 annonces récupérées (total en mémoire: 104)
Export de 104 annonces vers /home/ubuntu/app/leboncoin_ads_scenic_20260321_140417.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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_20260321_140429.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
→ 4 annonces récupérées (total en mémoire: 1054)
Export de 1054 annonces vers /home/ubuntu/app/leboncoin_ads_5008_20260321_140429.csv réussi.
Terminé : 1054 annonces au total dans /home/ubuntu/app/leboncoin_ads_5008_20260321_140429.csv
INFO: Model override : 5008
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_5008_20260321_140429.csv
✅ 1054 lus, 1054 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 1054 lus, 1054 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6373 annonces en base
════════════════════════════════════════════════════════════
INFO: 1034 list_id lus dans le CSV.
INFO: 1080 annonces actives en base pour peugeot 5008.
INFO: 46 annonce(s) marquées indisponibles.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_5008_20260321_140429.csv
Brand : peugeot | Modèle : 5008
════════════════════════════════════════════════════════════
Annonces dans le CSV : 1034
Annonces actives en DB : 1080
Absentes du crawl : 46
Marquées indisponibles : 46
════════════════════════════════════════════════════════════
Vérification :
SELECT list_id, available, unavailable_detected_at FROM ads WHERE available = 0;
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/5008/figures
🔍 Modèle filtré : 5008
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 1577 annonces chargées (modèle '5008')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 1577
📋 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-21 14:50:52
Durée : 653 jours
👤 Répartition par type de vendeur :
private : 1009 (64.0%)
pro : 568 (36.0%)
⛽ Répartition par carburant :
diesel : 1443 (91.5%)
essence : 133 (8.4%)
hybride : 1 (0.1%)
🏭 Top 10 marques :
peugeot : 1577 (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 : 1575 / 1577
Pourcentage conservé : 99.9%
🔍 Détection des outliers (méthode IQR)...
price_eur : 0 outliers (0.0%)
Bornes IQR : [-198 ; 12,862]
mileage_km : 35 outliers (2.2%)
Bornes IQR : [60,000 ; 348,000]
age_years : 0 outliers (0.0%)
Bornes IQR : [5 ; 21]
📌 Total d'annonces outliers (au moins 1 variable) : 35 (2.2%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 1575
Dont outliers identifiés : 35
Annonces non-outliers : 1540
Plages de valeurs :
price_eur : [ 700 ; 11,000] (moy: 6,322)
mileage_km : [ 1 ; 410,000] (moy: 205,458)
year_model : [ 2,009 ; 2,021] (moy: 2,013)
age_years : [ 5 ; 17] (moy: 13)
km_per_year : [ 0 ; 53,776] (moy: 16,228)
💾 1575 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 1575 6322.040000 5990.000000 2311.722140 700.000000 4700.000000 7965.000000 11000.000000 3265.000000
mileage_km 1575 205458.010159 205500.000000 57227.984575 1.000000 168000.000000 240000.000000 410000.000000 72000.000000
year_model 1575 2013.008889 2013.000000 2.491902 2009.000000 2011.000000 2015.000000 2021.000000 4.000000
age_years 1575 12.991111 13.000000 2.491902 5.000000 11.000000 15.000000 17.000000 4.000000
km_per_year 1575 16227.613376 15707.545455 5060.074270 0.111111 13180.194805 18598.846154 53776.166667 5418.651349
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 1,575 6,322 5,990 2,311.72 700 4,700 7,965 11,000 3,265
mileage_km 1,575 205,458 205,500 57,227.98 1 168,000 240,000 410,000 72,000
year_model 1,575 2,013 2,013 2.49 2,009 2,011 2,015 2,021 4
age_years 1,575 13.0 13.0 2.49 5.0 11.0 15.0 17.0 4.0
km_per_year 1,575 16,227.6 15,707.5 5,060.07 0.1 13,180.2 18,598.8 53,776.2 5,418.7
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution asymétrique DROITE (moyenne 6,322 > médiane 5,990)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 37%, σ = 2,312)
→ Étendue : [700 ; 11,000] (IQR = 3,265)
📌 mileage_km :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 28%, σ = 57,228)
→ Étendue : [1 ; 410,000] (IQR = 72,000)
📌 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,060)
→ Étendue : [0 ; 53,776] (IQR = 5,419)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
2026-03-21 14:06:24,760 [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-21 14:06:24,761 [INFO] matplotlib.category — Using categorical units to plot a list of strings that are all parsable as floats or dates. If these strings should be plotted as numbers, cast to the appropriate data type before plotting.
======================================================================
📊 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 29 4,583 4,300 N/A
2010 236 4,589 4,500 -0.1%
2011 267 4,914 4,990 -7.1%
2012 254 5,528 5,500 -12.5%
2013 192 5,907 5,595 -6.9%
2014 159 7,017 6,990 -18.8%
2015 133 7,895 7,990 -12.5%
2016 160 8,098 7,994 -2.6%
2017 60 9,701 10,000 -19.8%
2018 44 9,822 10,200 -1.2%
2019 27 10,446 10,490 -6.4%
2020 13 9,489 9,990 +9.2%
📌 Décote annuelle moyenne : -7.2%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 12 5,712 4,775 N/A
20-50k 6 6,180 5,400 +8.2%
50-80k 7 9,153 9,450 +48.1%
80-120k 50 8,821 9,490 -3.6%
120-160k 238 8,573 9,000 -2.8%
160-200k 401 7,091 6,990 -17.3%
200k+ 861 5,183 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 27 10,446 +10.1%
8 44 9,822 -6.0%
9 60 9,701 -1.2%
10 160 8,098 -16.5%
11 133 7,895 -2.5%
12 159 7,017 -11.1%
13 192 5,907 -15.8%
14 254 5,528 -6.4%
15 267 4,914 -11.1%
16 236 4,589 -6.6%
17 29 4,583 -0.1%
📌 La décote ralentit significativement à 9 ans
📊 Prix par type de carburant...
📋 Table : Prix par carburant
----------------------------------------------------------------------
Carburant Nb Prix moy Prix méd
----------------------------------------------------------------------
diesel 1442 6,176 5,990
essence 132 7,890 8,800
📌 Carburant avec prix médian le plus élevé : essence (8,800€)
📌 Carburant avec prix médian le plus bas : diesel (5,990€)
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 1008 5,899 5,500
pro 567 7,074 6,500
📌 Test Mann-Whitney (médiane) : p = 0.0000
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +1,000€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (5008) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/5008/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
20k : décote 17.2% (n= 2) ⚡
30k : décote -21.5% (n= 3)
50k : décote -62.9% (n= 2)
60k : décote -13.1% (n= 2)
70k : décote 26.8% (n= 3) ⚡
80k : décote -12.1% (n= 4)
90k : décote -0.7% (n= 11)
100k : décote -4.1% (n= 14)
110k : décote 8.0% (n= 21)
120k : décote -11.1% (n= 38)
130k : décote 0.6% (n= 49)
140k : décote 12.1% (n= 70) ⚡
150k : décote 4.0% (n= 81)
160k : décote 1.0% (n= 95)
170k : décote 6.3% (n=106)
180k : décote 9.3% (n=101)
190k : décote 2.7% (n= 99)
200k : décote 4.2% (n=109)
210k : décote 3.2% (n=122)
220k : décote 5.4% (n=120)
230k : décote 5.9% (n= 95)
240k : décote -1.4% (n=107)
250k : décote 7.2% (n= 60)
260k : décote 12.5% (n= 60) ⚡
270k : décote 7.1% (n= 45)
280k : décote -19.0% (n= 30)
290k : décote 29.6% (n= 27) ⚡
300k+ : décote 4.5% (n= 86)
📌 Seuils où la décote s'accélère (> 8%) :
→ 20k km : 17.2%
→ 70k km : 26.8%
→ 140k km : 12.1%
→ 180k km : 9.3%
→ 260k km : 12.5%
→ 290k km : 29.6%
✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
7 ans : décote -10.1% (n= 27) 🐢 LENTE
8 ans : décote 6.0% (n= 44)
9 ans : décote 1.2% (n= 60) 🐢 LENTE
10 ans : décote 16.5% (n=160) ⚡ FORTE
11 ans : décote 2.5% (n=133) 🐢 LENTE
12 ans : décote 11.1% (n=159)
13 ans : décote 15.8% (n=192) ⚡ FORTE
14 ans : décote 6.4% (n=254)
15 ans : décote 11.1% (n=267)
16 ans : décote 6.6% (n=236)
17 ans : décote 0.1% (n= 29) 🐢 LENTE
📌 Décote rapide (> 10% par an) :
→ 10 ans : 16.5%
→ 12 ans : 11.1%
→ 13 ans : 15.8%
→ 15 ans : 11.1%
📌 Décote lente (< 5% par an) :
→ 7 ans : -10.1%
→ 9 ans : 1.2%
→ 11 ans : 2.5%
→ 17 ans : 0.1%
✅ Sauvegardé : /home/ubuntu/app/stats/5008/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -516.17 × âge + -0.0172 × km + 16,563
📌 R² = 0.649
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 235 ( 14.9%)
👍 Bonne affaire : 230 ( 14.6%)
📊 Prix marché : 628 ( 39.9%)
💰 Cher : 210 ( 13.3%)
🔴 Très cher : 272 ( 17.3%)
📊 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,723€ | Écart: -82.5% | Année: 2014 | Km: 270,000
2. [3098662962] Peugeot 5008 hdi
Prix: 1,900€ | Attendu: 8,719€ | Écart: -78.2% | Année: 2016 | Km: 155,900
3. [3163979849] Opel Corsa 2009 232000km
Prix: 1,900€ | Attendu: 8,442€ | Écart: -77.5% | Année: 2018 | Km: 232,000
4. [3161987772] 5008 7 places
Prix: 1,000€ | Attendu: 4,175€ | Écart: -76.0% | Année: 2011 | Km: 270,000
5. [3154103448] Vend Peugeot 5008 dans l etat
Prix: 1,000€ | Attendu: 4,089€ | Écart: -75.5% | Année: 2010 | Km: 245,000
6. [3145452074] Peugeot 5008
Prix: 1,000€ | Attendu: 3,710€ | Écart: -73.0% | Année: 2012 | Km: 327,000
7. [3151017355] Vends Peugeot 5008 a spécialiste
Prix: 1,500€ | Attendu: 5,379€ | É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,073€ | Écart: -72.0% | Année: 2011 | Km: 159,660
9. [3162529124] Peugeot 5008
Prix: 1,500€ | Attendu: 5,138€ | Écart: -70.8% | Année: 2013 | Km: 274,000
10. [3164455221] Peugeot 5008
Prix: 1,800€ | Attendu: 5,723€ | Écart: -68.5% | Année: 2013 | Km: 240,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3146000438] 5008 hdi
Prix: 7,500€ | Attendu: 3,762€ | Écart: +99.4% | Année: 2009 | Km: 234,000
2. [3152738100] Peugeot 5008 2l hdi 150cv
Prix: 8,000€ | Attendu: 4,388€ | Écart: +82.3% | Année: 2010 | Km: 227,600
3. [3126969597] Peugeot 5008
Prix: 4,200€ | Attendu: 2,368€ | Écart: +77.4% | Année: 2009 | Km: 315,000
4. [3126598226] Peugeot 5008 1.6 hdi fap confort pack 7pl
Prix: 7,990€ | Attendu: 4,579€ | Écart: +74.5% | Année: 2010 | Km: 216,500
5. [3157618424] Peugeot 5008
Prix: 3,500€ | Attendu: 2,024€ | Écart: +72.9% | Année: 2010 | Km: 365,000
6. [3155918327] Peugeot 5008
Prix: 6,500€ | Attendu: 3,762€ | Écart: +72.8% | Année: 2009 | Km: 234,000
7. [3165438627] Vend peugeot 5008 1l6 hdi année 2009
Caroserie 31
Prix: 4,000€ | Attendu: 2,317€ | Écart: +72.7% | Année: 2009 | Km: 318,000
8. [3147840406] Peugeot 5008 1.6 hdi FAP Premium 7pls
Prix: 6,990€ | Attendu: 4,071€ | Écart: +71.7% | Année: 2010 | Km: 246,000
9. [3159646980] PEUGEOT 5008 2.0 HDI 163cv
Prix: 7,500€ | Attendu: 4,433€ | Écart: +69.2% | Année: 2012 | Km: 285,000
10. [3129737643] 🚗 Peugeot 5008 1.6 HDi 110 Premium – 7 places
Prix: 10,000€ | Attendu: 5,930€ | Écart: +68.6% | Année: 2010 | Km: 138,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 74 annonces avec prix suspect
💾 74 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 1577
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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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_20260321_140626.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
→ 22 annonces récupérées (total en mémoire: 1492)
Export de 1492 annonces vers /home/ubuntu/app/leboncoin_ads_fiesta_20260321_140626.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_20260321_140853.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_20260321_140853.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
→ 27 annonces récupérées (total en mémoire: 97)
Export de 97 annonces vers /home/ubuntu/app/leboncoin_ads_nv200_20260321_140853.csv réussi.
Terminé : 97 annonces au total dans /home/ubuntu/app/leboncoin_ads_nv200_20260321_140853.csv
INFO: Model override : nv200
INFO: Schéma initialisé dans /home/ubuntu/app/db/lbc.sqlite
════════════════════════════════════════════════════════════
📦 MIGRATION CSV → SQLite unifié
════════════════════════════════════════════════════════════
📂 leboncoin_ads_nv200_20260321_140853.csv
✅ 97 lus, 97 insérés, 0 ignorés, 0 erreurs
────────────────────────────────────────────────────────────
📊 TOTAL : 97 lus, 97 insérés
💾 Base : /home/ubuntu/app/db/lbc.sqlite
📌 6374 annonces en base
════════════════════════════════════════════════════════════
INFO: 97 list_id lus dans le CSV.
INFO: 97 annonces actives en base pour nissan nv200.
INFO: Aucune annonce manquante — toutes présentes dans le crawl.
════════════════════════════════════════════════════════════
CHECK DISPONIBILITÉ
CSV : leboncoin_ads_nv200_20260321_140853.csv
Brand : nissan | Modèle : nv200
════════════════════════════════════════════════════════════
Annonces dans le CSV : 97
Annonces actives en DB : 97
Absentes du crawl : 0
Marquées indisponibles : 0
════════════════════════════════════════════════════════════
══════════════════════════════════════════════════════════════════════
🚗 ANALYSEUR LEBONCOIN - Analyses Descriptives Véhicules
══════════════════════════════════════════════════════════════════════
💾 Base SQLite : /home/ubuntu/app/db/lbc.sqlite
📁 Dossier figures : /home/ubuntu/app/stats/nv200/figures
🔍 Modèle filtré : nv200
📊 Graphiques : Non
══════════════════════════════════════════════════════════════════════
📂 Chargement depuis SQLite : /home/ubuntu/app/db/lbc.sqlite
✅ 178 annonces chargées (modèle 'nv200')
======================================================================
📊 EXPLORATION DES DONNÉES BRUTES
======================================================================
📌 Nombre total d'annonces : 178
📋 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-21 11:13:36
Durée : 539 jours
👤 Répartition par type de vendeur :
private : 122 (68.5%)
pro : 56 (31.5%)
⛽ Répartition par carburant :
diesel : 178 (100.0%)
🏭 Top 10 marques :
nissan : 178 (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 : 178 / 178
Pourcentage conservé : 100.0%
🔍 Détection des outliers (méthode IQR)...
price_eur : 1 outliers (0.6%)
Bornes IQR : [-2,746 ; 19,244]
mileage_km : 1 outliers (0.6%)
Bornes IQR : [-41,680 ; 368,200]
age_years : 0 outliers (0.0%)
Bornes IQR : [3 ; 19]
📌 Total d'annonces outliers (au moins 1 variable) : 2 (1.1%)
⚠️ Les outliers sont identifiés mais NON supprimés.
======================================================================
📊 RÉSUMÉ APRÈS NETTOYAGE
======================================================================
Nombre d'annonces restantes : 178
Dont outliers identifiés : 2
Annonces non-outliers : 176
Plages de valeurs :
price_eur : [ 2,000 ; 19,990] (moy: 8,666)
mileage_km : [ 1 ; 420,000] (moy: 164,798)
year_model : [ 2,009 ; 2,019] (moy: 2,015)
age_years : [ 7 ; 17] (moy: 11)
km_per_year : [ 0 ; 30,000] (moy: 14,976)
💾 178 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 178 8666.421348 8290.00 3742.594743 2000.000000 5500.00000 10997.500000 19990.0 5497.500000
mileage_km 178 164797.528090 151676.50 72156.977851 1.000000 112025.00000 214495.000000 420000.0 102470.000000
year_model 178 2014.859551 2015.00 2.694930 2009.000000 2013.00000 2017.000000 2019.0 4.000000
age_years 178 11.140449 11.00 2.694930 7.000000 9.00000 13.000000 17.0 4.000000
km_per_year 178 14975.635810 14031.25 6050.084456 0.066667 10440.08774 18801.282051 30000.0 8361.194311
📊 Tableau formaté :
Variable Count Mean Median Std Min Q1 Q3 Max IQR
price_eur 178 8,666 8,290 3,742.59 2,000 5,500 10,998 19,990 5,498
mileage_km 178 164,798 151,676 72,156.98 1 112,025 214,495 420,000 102,470
year_model 178 2,015 2,015 2.69 2,009 2,013 2,017 2,019 4
age_years 178 11.1 11.0 2.69 7.0 9.0 13.0 17.0 4.0
km_per_year 178 14,975.6 14,031.2 6,050.08 0.1 10,440.1 18,801.3 30,000.0 8,361.2
📝 INTERPRÉTATION DES STATISTIQUES :
--------------------------------------------------
📌 price_eur :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Dispersion MODÉRÉE (CV = 43%, σ = 3,743)
→ Étendue : [2,000 ; 19,990] (IQR = 5,498)
📌 mileage_km :
→ Distribution asymétrique DROITE (moyenne 164,798 > médiane 151,676)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 44%, σ = 72,157)
→ Étendue : [1 ; 420,000] (IQR = 102,470)
📌 year_model :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 0%, σ = 3)
→ Étendue : [2,009 ; 2,019] (IQR = 4)
📌 age_years :
→ Distribution relativement SYMÉTRIQUE (moyenne ≈ médiane)
→ Faible dispersion (CV = 24%, σ = 3)
→ Étendue : [7 ; 17] (IQR = 4)
📌 km_per_year :
→ Distribution asymétrique DROITE (moyenne 14,976 > médiane 14,031)
Quelques valeurs élevées tirent la moyenne vers le haut.
→ Dispersion MODÉRÉE (CV = 40%, σ = 6,050)
→ Étendue : [0 ; 30,000] (IQR = 8,361)
======================================================================
📊 DISTRIBUTIONS PAR CATÉGORIES
======================================================================
📊 Prix moyen par année modèle...
📋 Table : Prix par année modèle
2026-03-21 14:09:15,421 [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-21 14:09:15,422 [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 12 6,518 5,100 -28.9%
2013 23 7,314 7,900 -12.2%
2014 22 8,797 8,740 -20.3%
2015 12 8,299 9,000 +5.7%
2016 24 8,998 8,000 -8.4%
2017 22 10,651 9,895 -18.4%
2018 22 11,668 11,750 -9.5%
2019 15 11,246 10,990 +3.6%
📌 Décote annuelle moyenne : -10.5%
📊 Prix moyen par tranche de kilométrage...
📋 Table : Prix par tranche de km
----------------------------------------------------------------------
Tranche Nb Prix moy Prix méd Var %
----------------------------------------------------------------------
0-20k 1 2,000 2,000 N/A
20-50k 5 13,656 12,800 +582.8%
50-80k 10 13,644 13,000 -0.1%
80-120k 37 11,597 10,980 -15.0%
120-160k 40 9,937 10,245 -14.3%
160-200k 30 6,886 7,000 -30.7%
200k+ 55 5,505 5,200 -20.1%
📊 Prix moyen par âge...
📋 Table : Prix par âge
-----------------------------------------------------------------
Âge Nb Prix moy Décote %
-----------------------------------------------------------------
7 15 11,246 N/A
8 22 11,668 +3.8%
9 22 10,651 -8.7%
10 24 8,998 -15.5%
11 12 8,299 -7.8%
12 22 8,797 +6.0%
13 23 7,314 -16.9%
14 12 6,518 -10.9%
15 16 5,056 -22.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 178 8,666 8,290
📊 Prix par type de vendeur...
📋 Table : Prix par type de vendeur
------------------------------------------------------------
Type Nb Prix moy Prix méd
------------------------------------------------------------
private 122 8,115 7,800
pro 56 9,867 9,890
📌 Test Mann-Whitney (médiane) : p = 0.0024
✅ Différence SIGNIFICATIVE (p < 0.05)
📌 Écart médian Pro - Particulier : +2,090€
📊 Prix par modèle de véhicule...
ℹ️ Un seul modèle détecté (nv200) — comparaison non applicable
✅ Toutes les distributions par catégorie sauvegardées dans /home/ubuntu/app/stats/nv200/figures
======================================================================
📊 ANALYSES AVANCÉES - SEUILS PSYCHOLOGIQUES
======================================================================
📊 Analyse des seuils de kilométrage...
📋 Taux de décote par tranche de 10k km :
--------------------------------------------------
50k : décote -11.8% (n= 3)
60k : décote 15.9% (n= 2) ⚡
70k : décote 1.4% (n= 5)
80k : décote 4.5% (n= 9)
90k : décote -0.2% (n= 10)
100k : décote 5.9% (n= 8)
110k : décote 10.1% (n= 10) ⚡
120k : décote -14.9% (n= 11)
130k : décote 14.6% (n= 12) ⚡
140k : décote 11.3% (n= 12) ⚡
150k : décote 20.7% (n= 5) ⚡
160k : décote -12.4% (n= 6)
170k : décote 32.3% (n= 6) ⚡
180k : décote -16.8% (n= 6)
190k : décote -14.5% (n= 12)
200k : décote -1.5% (n= 5)
210k : décote 21.0% (n= 7) ⚡
220k : décote -4.6% (n= 7)
230k : décote 2.5% (n= 7)
240k : décote -2.9% (n= 8)
250k : décote 26.0% (n= 5) ⚡
260k : décote 15.2% (n= 2) ⚡
290k : décote -21.6% (n= 6)
300k+ : décote 15.3% (n= 6) ⚡
📌 Seuils où la décote s'accélère (> 8%) :
→ 60k km : 15.9%
→ 110k km : 10.1%
→ 130k km : 14.6%
→ 140k km : 11.3%
→ 150k km : 20.7%
→ 170k km : 32.3%
→ 210k km : 21.0%
→ 250k km : 26.0%
→ 260k km : 15.2%
→ 300k+ km : 15.3%
✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/seuils_km.png
📊 Analyse des seuils d'âge...
📋 Taux de décote par année d'âge :
---------------------------------------------
8 ans : décote -3.8% (n= 22) 🐢 LENTE
9 ans : décote 8.7% (n= 22)
10 ans : décote 15.5% (n= 24) ⚡ FORTE
11 ans : décote 7.8% (n= 12)
12 ans : décote -6.0% (n= 22) 🐢 LENTE
13 ans : décote 16.9% (n= 23) ⚡ FORTE
14 ans : décote 10.9% (n= 12)
15 ans : décote 22.4% (n= 16) ⚡ FORTE
16 ans : décote 5.8% (n= 9)
📌 Décote rapide (> 10% par an) :
→ 10 ans : 15.5%
→ 13 ans : 16.9%
→ 14 ans : 10.9%
→ 15 ans : 22.4%
📌 Décote lente (< 5% par an) :
→ 8 ans : -3.8%
→ 12 ans : -6.0%
✅ Sauvegardé : /home/ubuntu/app/stats/nv200/figures/seuils_age.png
======================================================================
📊 IDENTIFICATION DES BONNES AFFAIRES
======================================================================
📊 Construction du modèle de prix attendu...
📌 Modèle : prix = -450.05 × âge + -0.0299 × km + 18,612
📌 R² = 0.599
📊 Calcul des écarts de prix...
📋 Classification des annonces :
🌟 Excellente affaire : 35 ( 19.8%)
👍 Bonne affaire : 31 ( 17.5%)
📊 Prix marché : 57 ( 32.2%)
💰 Cher : 25 ( 14.1%)
🔴 Très cher : 29 ( 16.4%)
📊 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,862€ | Écart: -83.1% | Année: 2011 | Km: 1
2. [3159812831] Vend utilitaires nv200 nissan
Prix: 2,000€ | Attendu: 6,774€ | Écart: -70.5% | Année: 2011 | Km: 170,000
3. [3160668277] Nissan nv 200
Prix: 3,000€ | Attendu: 7,135€ | Écart: -58.0% | Année: 2013 | Km: 188,000
4. [3164906877] Nissan
Prix: 3,500€ | Attendu: 6,630€ | Écart: -47.2% | Année: 2016 | Km: 250,000
5. [3109648143] Nissan nv200 1.5 dci turbo
Prix: 3,990€ | Attendu: 7,044€ | Écart: -43.4% | Année: 2012 | Km: 176,000
6. [3116605709] Nissan NV200
Prix: 4,500€ | Attendu: 7,672€ | Écart: -41.3% | Année: 2011 | Km: 140,000
7. [3154995725] Nissan NV200 Fourgon 1.5 DCi 110ch BVM5 Optima - 2
Prix: 4,000€ | Attendu: 6,811€ | Écart: -41.3% | Année: 2014 | Km: 213,880
8. [3127367839] Nissan NV200 1.5 DCI
Prix: 5,490€ | Attendu: 8,845€ | Écart: -37.9% | Année: 2014 | Km: 145,899
9. [3142568361] Nissan nv 200 1.5 90ch
Prix: 5,200€ | Attendu: 8,336€ | Écart: -37.6% | Année: 2016 | Km: 193,000
10. [3164561805] Nissan nv200
Prix: 5,290€ | Attendu: 8,126€ | Écart: -34.9% | Année: 2016 | Km: 200,000
🔴 TOP 10 ANNONCES SURÉVALUÉES (écart le plus positif) :
====================================================================================================
1. [3156635875] Nissan NV200
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/ubuntu/app/stats/main.py", line 245, in <module>
main()
File "/home/ubuntu/app/stats/main.py", line 185, in main
df = run_llm_title_analysis(df, model_filter=model_filter, run_id=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ubuntu/app/stats/m05_llm_title_analysis.py", line 195, in run_llm_title_analysis
from services.llm_service import analyze_titles_batch
File "/home/ubuntu/app/services/llm_service.py", line 14, in <module>
from openai import APIStatusError
ModuleNotFoundError: No module named 'openai'
Prix: 3,500€ | Attendu: 607€ | Écart: +476.3% | Année: 2010 | Km: 361,000
2. [3154023820] Camion
Prix: 3,500€ | Attendu: 787€ | Écart: +344.8% | Année: 2010 | Km: 355,000
3. [3153372541] Nissan nv 200
Prix: 10,500€ | Attendu: 5,579€ | Écart: +88.2% | Année: 2013 | Km: 240,000
4. [3114600758] Van
Prix: 18,500€ | Attendu: 10,279€ | Écart: +80.0% | Année: 2014 | Km: 98,000
5. [3156516616] 🚐 Nissan NV200 aménagé – Prêt à voyager
Prix: 9,300€ | Attendu: 5,786€ | Écart: +60.7% | Année: 2011 | Km: 203,000
6. [3158536730] Véhicule aménagé
Prix: 13,500€ | Attendu: 8,421€ | Écart: +60.3% | Année: 2012 | Km: 130,000
7. [3083668151] Nissan NV200 1.5 DCI 90CH VAN AMENAGE
Prix: 14,999€ | Attendu: 9,589€ | Écart: +56.4% | Année: 2014 | Km: 121,041
8. [3163982347] Utilitaire aménagé Van NV200 2016 84000 km
Prix: 17,900€ | Attendu: 11,598€ | Écart: +54.3% | Année: 2016 | Km: 84,000
9. [3155364135] Utilitaire Van Nissan NV200 2016
Prix: 17,900€ | Attendu: 11,628€ | Écart: +53.9% | Année: 2016 | Km: 83,000
10. [3150255673] Van aménagé Nissan NV200
Prix: 8,500€ | Attendu: 5,665€ | Écart: +50.0% | Année: 2010 | Km: 192,000
🔎 Détection des prix suspects (seuil: -40%)...
⚠️ 7 annonces avec prix suspect
💾 7 signaux prix persistés dans SQLite
======================================================================
M05 — Extraction LLM des titres (GPT-5 Nano)
======================================================================
Annonces sans évaluation LLM : 178
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 : 6374
============================================================
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_20260321_140000.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_clio_4_20260321_140000.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_20260321_140000.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_20260321_140242.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_yaris_20260321_140242.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_20260321_140242.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_20260321_140259.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_i20_20260321_140259.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_20260321_140259.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_20260321_140322.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_berlingo_20260321_140322.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_20260321_140322.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_20260321_140359.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_c4_20260321_140359.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_20260321_140359.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_20260321_140429.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_5008_20260321_140429.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_20260321_140429.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_20260321_140853.csv
$ /home/ubuntu/app/.venv/bin/python -m db.migrate_csv --input /home/ubuntu/app/leboncoin_ads_nv200_20260321_140853.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_20260321_140853.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-21T14:09:17.161894
Duration: 557.2s
STATUS:SUCCESS