Pandas
是資料分析熱門且好用的工具,相信熟悉資料分析的各路英雄好漢都不陌生
在Python中,與GIS相關的套件滿坑滿谷,這邊我們選定Geopandas
作為資料操作的基礎
它與Pandas有很接近的操作體驗,並且依賴了許多GIS常用的Python套件。
Geopandas介紹
在Python上處理空間資料有許多套件們,這些套件都有不同的使用場景,例如shapely
用在向量資料的處理、fiona
則是幫助使用Python上操作OGR
(支援超多格式的資料轉換),pyproj
做坐標投影的轉換等等。
還好,Geopandas
的出現,讓這些事情變得比較好上手,也讓分析資料時感受很像Pandas,
他主要依賴了以下Python空間資料處理的套件介面:
- shapely
- fiona
- descartes
- matplotlib
- pyproj
- numpy
..more
使用者可以跟Pandas操作DataFrame一般,在Geopandas操作GeoDataFrame,並且擁有許多空間資料處理的功能。
在Python環境中使用GeoPandas,依照官方文件的說明,安裝方法有兩種,第一種是使用Conda(請設定Python3.6環境):
1 | conda install -c conda-forge geopandas |
或是直接透過Geopandas Repo以pip安裝
1 | pip install git+git://github.com/geopandas/geopandas.git |
讀寫GIS資料
今天所使用的GIS資料為向量
資料
其中shp為空間資料中最為常見的一種向量資料的格式,
它可以紀錄點、線、面等幾何
有關向量資料及格式的暸解,可以參考
[Day 6] 常見的GIS資料格式 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
我們可以利用GeoPandas讀取shp資料,以進行我們想要的各種處理或分析,以[臺灣鐵路 | 政府資料開放平臺]這個資料集為例,我們將其下載到本機,使用GeoPandas讀取為GeoDataFrame
1 | import geopandas as gpd |
GeoPandas也支援常用的格式
GeoDataFrame
GeoDataFrame與DataFrame類似,在[官方文件]中對於DataFrame的基本類型有一些說明。
簡單來說,與dataframe相對,GeoPandas多了一個geometry的欄位。
Like a DataFrame
GeoDataFrame的許多基本操作與Pandas的DataFrame很
我們試著做一些Pandas上可以做的事情,
選擇欄位1
subset=gdf_Rail['RAILNAME']
subset again1
subset=gdf_Rail.iloc[:3]
排序資料1
sample=gdf_Rail.sort_values(by='MDATE')
另外,GeoDataFrame對於地理資料有基本的繪圖功能
1 | sample.plot() |
其採用matplotlib繪圖引擎,例如可以依照欄位來繪圖(下面案例是以鐵道支線名稱分色)1
sample.plot(column='RAILNAME')
GeoDataFrame讓GIS資料處理更方便,他與DataFrame操作體驗接近,今天也初探了一些簡單的功能
對於DataFrame或者GeoDataFrame的操作,可以參考Data wrangling with Pandas的圖表,
對於Pandas的功能有一些快速指南,大部分也都通用於Geopandas。
今天的相關測試可以參考GitHub