Quelle est la façon la plus efficace de convertir une géodonnées de géopandas en une base de données pandas? Ci-dessous la méthode que j'utilise, existe-t-il une autre méthode plus efficace ou meilleure en général pour ne pas générer d'erreurs?
import geopandas as gpd
import pandas as pd
# assuming I have a shapefile named shp1.shp
gdf1 = gpd.read_file('shp1.shp')
# then for the conversion, I drop the last column (geometry) and specify the column names for the new df
df1 = pd.DataFrame(gdf1.iloc[:,:-1].values, columns = list(gdf1.columns.values)[:-1] )
Vous n'avez pas besoin de convertir le GeoDataFrame en un tableau de valeurs, vous pouvez le passer directement au constructeur DataFrame:
df1 = pd.DataFrame(gdf)
Ce qui précède conservera la colonne "géométrie", ce qui n'est pas un problème pour l'avoir comme DataFrame normal. Mais si vous voulez réellement supprimer cette colonne, vous pouvez le faire (en supposant que la colonne est appelée "géométrie"):
df1 = pd.DataFrame(gdf.drop(columns='geometry'))
# for older versions of pandas (< 0.21), the drop part: gdf.drop('geometry', axis=1)
Deux notes:
df1 = pd.DataFrame(gdf)
) ne prendra pas une copie des données dans GeoDataFrame. Ce sera souvent bon du point de vue de l'efficacité, mais selon ce que vous voulez faire avec le DataFrame, vous voudrez peut-être une copie réelle: df1 = pd.DataFrame(gdf, copy=True)