iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
0

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環境):
打改終端機,輸入

conda install -c conda-forge geopandas

或是直接透過Geopandas Repo以pip安裝

pip install git+git://github.com/geopandas/geopandas.git

讀寫GIS資料

今天所使用的GIS資料是屬於向量資料
其中shp為空間資料中最為常見的一種向量資料交換格式,
它可以紀錄點、線、面等幾何與屬性

有關向量資料及格式的暸解,可以參考
[Day 6] 常見的GIS資料格式 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

我們可以利用GeoPandas讀取shp資料,以進行我們想要的各種處理或分析,以[臺灣鐵路圖資 | 政府資料開放平臺]這個資料集為例,我們將其下載到本機解壓縮,使用GeoPandas讀取為GeoDataFrame

import geopandas as gpd
gdf_Rail=gpd.read_file('data/Rail/Rail.shp',encoding='utf-8')
gdf_Rail

https://ithelp.ithome.com.tw/upload/images/20181017/20107816EWLU09E5z9.png

除了shp外,在實體檔案的部分,Geopandas也支援geojson

GeoDataFrame

GeoDataFrame與DataFrame類似,在[官方文件]中對於DataFrame的基本類型有一些說明。

簡單來說,與dataframe相對,Geopandas多了一個geometry的欄位。


GeoDataFrame的操作

GeoDataFrame的許多基本操作與Pandas的DataFrame很
我們試著做一些Pandas上可以做的事情,

選擇欄位

subset=gdf_Rail['RAILNAME']

https://ithelp.ithome.com.tw/upload/images/20181017/201078164jzqd0Qpzr.png
subset again

subset=gdf_Rail.iloc[:3]

https://ithelp.ithome.com.tw/upload/images/20181017/20107816RScVPt5nGa.png
排序資料

sample=gdf_Rail.sort_values(by='MDATE')

https://ithelp.ithome.com.tw/upload/images/20181017/20107816yT8gopD3fJ.png

另外,GeoDataFrame對於地理資料有基本的繪圖功能,我們把臺灣鐵路圖資的範例資料展示出來:

sample.plot()

https://ithelp.ithome.com.tw/upload/images/20181017/20107816O102nn0SBi.png

內建一樣是採用matplotlib繪圖引擎,例如可以依照欄位來繪圖(下面案例是以鐵道支線名稱分色)

sample.plot(column='RAILNAME')

https://ithelp.ithome.com.tw/upload/images/20181017/20107816PQfW8ZZ8LG.png

GeoDataFrame讓GIS資料處理更方便,他與DataFrame操作體驗接近,今天也初探了一些簡單的功能

對於DataFrame或者GeoDataFrame的操作,可以參考Data wrangling with Pandas的圖表,
對於Pandas的功能有一些快速指南,大部分也都通用於Geopandas。

今天的相關範例可以參考GitHub


上一篇
Day01 前言與目標
下一篇
Day03 從Pandas到Geopandas的幾種方法
系列文
30天精通GIS資料分析-使用Python30

尚未有邦友留言

立即登入留言