Qualité des données

Comment Normi nettoie, normalise et enrichit les données DVF brutes.

Pourquoi nettoyer les données DVF ?

Les données DVF brutes contiennent des artefacts qui faussent les analyses : ventes en lot (un immeuble entier vendu en une transaction), outliers de prix (€1 symbolique ou prix astronomique), et types de biens mal typés. Sans traitement, les médianes et moyennes sont significativement biaisées.

~8%
Dédoublonnage
transactions en lot filtrées par défaut
~2%
Outliers
transactions à prix aberrant détectées
~94%
Géocodage
taux de succès géocodage (lat/lon)

Détection des ventes en lot

Une vente en lot (is_bulk_sale = true) est détectée quand nombre_de_lots > 1. Ces transactions incluent des immeubles entiers, des parkings groupés, ou des copropriétés vendues en bloc. Elles génèrent un prix par lot très bas (prix total / nombre de lots) qui biais les médianes.

Par défaut, exclude_bulk_sales=true sur tous les endpoints. Passez exclude_bulk_sales=false si vous analysez spécifiquement les marchés de l'investissement locatif en lot.

Détection des outliers de prix

Une transaction est marquée is_price_outlier = true si son prix/m² est statistiquement aberrant par rapport aux transactions similaires de la même zone et période.

La méthode utilisée est la méthode IQR (Interquartile Range) : un prix/m² est outlier s'il est inférieur à Q1 - 1.5 × IQR ou supérieur à Q3 + 1.5 × IQR. Ce seuil est calculé par code postal et par type de bien.

Les outliers incluent les €1 symboliques (cession familiale), les garages vendus au prix d'un appartement (erreur de saisie), et les biens d'exception (châteaux, hôtels particuliers). La moyenne sans ces outliers est significativement plus représentative.

Typage intelligent des biens

Le champ type_local brut DVF est parfois incorrect ou ambigu. Normi ajoute computed_type_local qui corrige les cas les plus fréquents :

Castype_local brutcomputed_type_local
Transaction avec plusieurs lots de types mixtesAppartement + DépendanceAppartement
Local sans surface bâtieLocal industrielTerrain
Maison avec terrainMaisonMaison
Parking ou box seulDépendanceDépendance

Par défaut, les filtres type_local=Appartement utilisent computed_type_local. Passez use_original_type=true pour utiliser le champ brut DVF.

Géocodage

Les coordonnées GPS (latitude, longitude) sont calculées par l' API Adresse (BAN / IGN) à partir de l'adresse complète de chaque transaction.

Le taux de succès est d'environ 94%. Les 6% non géocodées sont des adresses introuvables (erreurs de saisie, voies récentes non encore dans la base BAN) — ces transactions restent disponibles mais sans coordonnées GPS. Elles sont exclues des recherches par rayon GPS.

Flags de qualité

ChampSignificationComportement par défaut
is_bulk_saleTransaction avec plusieurs lotsExclue (exclude_bulk_sales=true)
is_price_outlierPrix/m² statistiquement aberrantExclue (exclude_outliers=true)