Parece uma pergunta bastante simples, mas não consigo descobrir como converter um DataFrame do panda em um GeoDataFrame para uma junção espacial.
Aqui está um exemplo de como meus dados se parecem usando df.head()
:
Date/Time Lat Lon ID
0 4/1/2014 0:11:00 40.7690 -73.9549 140
1 4/1/2014 0:17:00 40.7267 -74.0345 NaN
Na verdade, esse quadro de dados foi criado a partir de um CSV, por isso, se for mais fácil ler o CSV diretamente como um GeoDataFrame, tudo bem.
Respostas:
Converter conteúdo da trama de dados (por exemplo,
Lat
eLon
colunas) em apropriados Shapely geometrias primeiro e depois usá-los em conjunto com a trama de dados original para criar uma GeoDataFrame.Resultado:
Como as geometrias geralmente vêm no formato WKT, pensei em incluir um exemplo para esse caso:
fonte
One-liners! Além disso, alguns indicadores de desempenho para pessoas de big data.
Dado a
pandas.DataFrame
que tem x Longitude e Latitude y da seguinte forma:Vamos converter o
pandas.DataFrame
em um dageopandas.GeoDataFrame
seguinte maneira:Importações de bibliotecas e acelerações bem torneadas :
Código + tempos de referência em um conjunto de dados de teste que eu tenho:
O uso
pandas.apply
é surpreendentemente mais lento, mas pode ser mais adequado para outros fluxos de trabalho (por exemplo, em conjuntos de dados maiores usando a biblioteca dask):Créditos para:
Algumas referências de trabalho em andamento (a partir de 2017) para lidar com grandes
dask
conjuntos de dados:fonte