Enrichir un GeoDataFrame via fusion avec GeoDataFrame.merge()
Une étape courante en analyse géospatiale consiste à enrichir un jeu de données géographiques avec des informations provenant d’une autre table. La méthode merge()
de GeoPandas permet d’effectuer des jointures entre un GeoDataFrame
et un autre DataFrame
ou GeoDataFrame
, sur la base d’une ou plusieurs colonnes clés communes.
Cette opération est analogue aux jointures SQL (INNER, LEFT, RIGHT, OUTER) et s’utilise principalement pour :
- Ajouter des variables attributaires (statistiques, démographiques, économiques…)
- Associer des codes administratifs à des géométries
- Fusionner des données tabulaires issues d’autres sources avec un fond de carte
L’argument on=
ou les paires left_on=
et right_on=
permettent de spécifier les clés de jointure. Il est essentiel de s’assurer que ces colonnes contiennent des valeurs compatibles (types et formats identiques).
Après la fusion, le résultat est un GeoDataFrame
qui conserve les géométries d’origine, tout en y ajoutant les colonnes du second tableau. Cette méthode est donc particulièrement puissante pour croiser des données géographiques avec des données métiers.
Fonctions :
-
GeoDataFrame.merge()
La méthode GeoDataFrame.merge() permet de fusionner un GeoDataFrame avec un autre DataFrame (ou GeoDataFrame) en se basant sur une ou plusieurs colonnes communes. Elle fonctionne comme pandas.merge(), tout en conservant les géométries.
Importation :
import geopandas as gpd import pandas as pd
Attributs :
Paramètre Type Description Valeur par défaut right
DataFrame ou GeoDataFrame Le DataFrame à fusionner avec le GeoDataFrame de gauche. None
how
str Type de jointure : 'left'
,'right'
,'outer'
,'inner'
.'inner'
on
str ou list Nom(s) de colonne(s) à utiliser pour la jointure. None
left_on
str Colonne du GeoDataFrame de gauche à utiliser pour la jointure. None
right_on
str Colonne du DataFrame de droite à utiliser pour la jointure. None
suffixes
tuple(str, str) Suffixes à utiliser pour les colonnes dupliquées. ('x', 'y')
Exemple de code :
import geopandas as gpd import pandas as pd from shapely.geometry import Point # GeoDataFrame avec des géométries gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)] }) # DataFrame à fusionner df = pd.DataFrame({ 'id': [1, 2, 3], 'nom': ['A', 'B', 'C'] }) # Fusion basée sur la colonne 'id' merged = gdf.merge(df, on='id') # Affichage du résultat print(merged)
Explication du code :
On fusionne un GeoDataFrame contenant des points avec un DataFrame contenant des noms.
La jointure est faite sur la colonne communeid
.
Avantages :
-
Permet d’enrichir un GeoDataFrame avec des données tabulaires.
-
Compatible avec toutes les options de fusion de
pandas.merge
. -
Les géométries sont automatiquement conservées après la fusion.
-