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 gpd
Attributs :
Paramètre Type Description Valeur par défaut keys
str ou list Nom(s) de la ou des colonnes à utiliser comme index. None
drop
bool Si True
, supprime la colonne utilisée comme index du DataFrame.True
inplace
bool Si True
, modifie le GeoDataFrame en place, sinon retourne un nouveau GeoDataFrame.False
verify_integrity
bool Vérifie l'intégrité des index, s’assurant qu’ils sont uniques. False
Exemple 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
GeoDataFrame
est créé avec trois colonnes :id
,geometry
etname
. -
Nous utilisons
set_index('id')
pour définir la colonneid
comme index duGeoDataFrame
. -
Après l'exécution de cette ligne, le
GeoDataFrame
est réorganisé, et la colonneid
devient l'index. Ce qui signifie que la colonneid
ne fera plus partie des données du DataFrame, sauf sidrop=False
est spécifié. -
Le
GeoDataFrame
modifié est ensuite affiché, et on remarque que la colonneid
a é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_integrity
permet 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
.
-