Réindexer un GeoDataFrame avec GeoDataFrame.set_index()
Lors de l’analyse de données géospatiales avec GeoPandas, il peut être utile de changer l’index d’un GeoDataFrame afin d’en faciliter la manipulation, la sélection ou l’identification. Par défaut, un GeoDataFrame utilise un index numérique, mais celui-ci peut être remplacé par une colonne existante contenant des identifiants uniques, des noms ou des codes.
La méthode set_index() permet de définir n’importe quelle colonne comme nouvel index du GeoDataFrame. Cette opération est particulièrement utile pour :
- Optimiser les opérations de recherche (
.loc, jointures, filtres, etc.) - Améliorer la lisibilité des données, en remplaçant les index par défaut par des identifiants significatifs
- Préparer les données pour des exportations ou des visualisations où l’index doit être explicite
Le réindexage ne modifie pas les géométries du GeoDataFrame, mais permet d’organiser les données de manière plus logique et plus pratique selon le contexte d’analyse.
Il est également possible de choisir si l’ancienne colonne utilisée pour l’index doit être conservée dans les colonnes ou non, grâce au paramètre drop=False ou drop=True.
En somme, set_index() est une méthode puissante pour structurer efficacement vos données géospatiales en fonction de vos besoins analytiques ou opérationnels.
Fonctions :
-
GeoDataFrame.set_index()
La méthode GeoDataFrame.set_index() permet de définir une ou plusieurs colonnes comme index d'un GeoDataFrame. Cela permet de réorganiser les données et de faciliter les opérations de recherche et d'indexation.
Importation :
import geopandas as gpdAttributs :
Paramètre Type Description Valeur par défaut keysstr ou list Nom(s) de la ou des colonnes à utiliser comme index. Nonedropbool Si True, supprime la colonne utilisée comme index du DataFrame.Trueinplacebool Si True, modifie le GeoDataFrame en place, sinon retourne un nouveau GeoDataFrame.Falseverify_integritybool Vérifie l'intégrité des index, s’assurant qu’ils sont uniques. FalseExemple de code :
import geopandas as gpd from shapely.geometry import Point # Création d’un GeoDataFrame avec des géométries gdf = gpd.GeoDataFrame({ 'id': [1, 2, 3], 'geometry': [Point(0, 0), Point(1, 1), Point(2, 2)], 'name': ['A', 'B', 'C'] }) # Définir 'id' comme index gdf_set_index = gdf.set_index('id') # Affichage du GeoDataFrame après modification de l'index print(gdf_set_index)Explication du code :
-
Un
GeoDataFrameest créé avec trois colonnes :id,geometryetname. -
Nous utilisons
set_index('id')pour définir la colonneidcomme index duGeoDataFrame. -
Après l'exécution de cette ligne, le
GeoDataFrameest réorganisé, et la colonneiddevient l'index. Ce qui signifie que la colonneidne fera plus partie des données du DataFrame, sauf sidrop=Falseest spécifié. -
Le
GeoDataFramemodifié est ensuite affiché, et on remarque que la colonneida été déplacée en tant qu'index, ce qui facilite les recherches et les manipulations basées sur cet index.
Remarque importante :
-
Si vous ne souhaitez pas supprimer la colonne utilisée comme index, vous pouvez définir
drop=False. Cela conservera la colonne dans leGeoDataFrame, tout en la rendant l'index. -
Le paramètre
verify_integritypermet de vérifier si les valeurs de l'index sont uniques. Si vous souhaitez garantir qu'il n'y a pas de doublons dans l'index, il peut être utile de définir ce paramètre surTrue.
-