Ini sepertinya pertanyaan yang cukup sederhana, tapi saya tidak tahu cara mengubah DataFrame panda menjadi GeoDataFrame untuk penggabungan spasial.
Berikut adalah contoh bagaimana data saya terlihat menggunakan 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
Bahkan, kerangka data ini dibuat dari CSV jadi jika lebih mudah untuk membaca CSV secara langsung sebagai GeoDataFrame juga tidak masalah.
Jawaban:
Konversikan konten DataFrame (mis.
Lat
DanLon
kolom) menjadi geometri Shapely yang sesuai terlebih dahulu dan kemudian menggunakannya bersama dengan DataFrame asli untuk membuat GeoDataFrame.Hasil:
Karena geometri sering kali datang dalam format WKT, saya pikir saya akan menyertakan contoh untuk kasus itu juga:
sumber
Satu kalimat! Ditambah beberapa petunjuk kinerja untuk orang-orang big-data.
Diberi a
pandas.DataFrame
yang memiliki x Longitude dan y Latitude seperti:Mari kita konversikan
pandas.DataFrame
menjadigeopandas.GeoDataFrame
:Impor perpustakaan dan speedup rupawan :
Kode + waktu tolok ukur pada dataset uji yang saya miliki:
Penggunaannya
pandas.apply
secara mengejutkan lebih lambat, tetapi mungkin lebih cocok untuk beberapa alur kerja lainnya (misalnya pada kumpulan data yang lebih besar menggunakan pustaka dask):Kredit untuk:
Beberapa referensi Work-In-Progress (per 2017) untuk menangani
dask
kumpulan data besar :sumber