① 讀取CSV¶
在這個教學中,我們示範使用 pandas
的 read_csv
讀取 高雄市公有路外停車場一覽表
。
高雄市公有路外停車場一覽表
可以從高雄市的開放資料中取得,連結請見最底下的參考資料。
參考連結中還有其他的 csv
檔,大家也可以嘗試使用 read_csv
來讀取,並進一步做資料分析。
底下我們示範如何讀取資料,並做地圖視覺化!
安裝必要套件¶
folium
為 python
繪製地圖的套件!
geocoder
為 地址
轉 GPS座標
的套件!
In [ ]:
Copied!
!pip install folium
!pip install geocoder
!pip install folium
!pip install geocoder
載入套件¶
In [1]:
Copied!
import pandas as pd
import pandas as pd
In [4]:
Copied!
import folium
import geocoder
import folium
import geocoder
讀取CSV資料¶
In [2]:
Copied!
df = pd.read_csv("https://data.kcg.gov.tw/dataset/449e45d9-dead-4873-95a9-cc34dabbb3af/resource/fe3f93da-9673-4f7b-859c-9017d793f798/download/108.6.21.csv")
df = pd.read_csv("https://data.kcg.gov.tw/dataset/449e45d9-dead-4873-95a9-cc34dabbb3af/resource/fe3f93da-9673-4f7b-859c-9017d793f798/download/108.6.21.csv")
檢視資料¶
In [3]:
Copied!
# 查看前 5 筆資料
df.head()
# 查看前 5 筆資料
df.head()
Out[3]:
型式 | 行政區 | 場名 | 位置 | 緯度 | 經度 | 收費標準 | 大車 | 小車 | 機車 | 管理業者 | 聯絡電話 | 履約起迄 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 平面 | 甲仙區 | 甲仙林森 | A區:林森路70號旁 | 23.082862 | 120.587988 | 小車計次(30元/6小時) | 0 | 35 | 0 | 歐特儀股份有限公司 | 903135731 | 113/04/01~119/03/31 |
1 | - | - | - | B區:林森路75號旁 | 23.082262 | 120.587394 | - | - | - | - | - | - | - |
2 | 平面 | 杉林區 | 大愛園區 | A區:清水路中學巷 | 22.969360 | 120.542510 | - | 27 | 120 | 0 | 環球大宇宙太陽能工業有限公司 | 980889269 | 110/06/01~120/04/30 |
3 | - | - | - | B區:和氣街二巷1號對面 | 22.966443 | 120.542328 | - | - | - | - | - | - | - |
4 | - | - | - | C區:合心路&互愛街 | 22.962941 | 120.539572 | - | - | - | - | - | - | - |
測試Geocoder的使用¶
In [5]:
Copied!
# 使用 geocoder 取得特定住址的 GPS 座標
# 因為 OSM API 現在會檢查 Header,所以填一個不一樣的 Header,讓 Server 對 requests 放行。
headers = {'user-agent':'my app'}
location = geocoder.osm('高雄市', headers=headers).latlng
# 使用 geocoder 取得特定住址的 GPS 座標
# 因為 OSM API 現在會檢查 Header,所以填一個不一樣的 Header,讓 Server 對 requests 放行。
headers = {'user-agent':'my app'}
location = geocoder.osm('高雄市', headers=headers).latlng
In [6]:
Copied!
location
location
Out[6]:
[22.6203348, 120.3120375]
繪製地圖¶
In [7]:
Copied!
# 以 location 當作中心點,產生地圖
m = folium.Map(location=location, zoom_start=16)
# 以 location 當作中心點,產生地圖
m = folium.Map(location=location, zoom_start=16)
In [8]:
Copied!
# 將CSV檔中的資料,標註到地圖上
for i, row in df.iterrows():
try:
folium.Marker([float(row['緯度']), float(row['經度'])], popup=row['場名']).add_to(m)
except Exception as e:
print(e.args)
# 將CSV檔中的資料,標註到地圖上
for i, row in df.iterrows():
try:
folium.Marker([float(row['緯度']), float(row['經度'])], popup=row['場名']).add_to(m)
except Exception as e:
print(e.args)
In [9]:
Copied!
m
m
Out[9]:
Make this Notebook Trusted to load map: File -> Trust Notebook