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 :

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)
    Résultat du code

    Explication du code :

    On fusionne un GeoDataFrame contenant des points avec un DataFrame contenant des noms.
    La jointure est faite sur la colonne commune id.


    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.