主要內容
_使用matplotlib繪製折線圖
_JSON格式處理
使用matplotlib繪製折線圖
同樣是使用requests模組取得網路公開資料-每日外幣參考匯率
接著是處理資料
繪製著線圖需要有X軸跟Y軸
listx1=[ ] 為X軸資料串列-日期
listy1=[ ] 為Y軸資料串列-外幣匯率
每日外幣參考匯率的資料欄位為「日期、美元/新台幣、人民幣/新台幣、歐元/美元、美元/日幣、英鎊/美元、澳幣/美元、美元/港幣、美元/人民幣、美元/南非幣、紐幣/美元」
所以分割後的串列list1[0]是日期,list1[1]是美元/新台幣
Y軸就可以選定要抓取哪一種匯率
由於list1[1]的匯率是字串型態,因此透過eval()去除字串符號變成數字型態
listy1.append(eval(list2[1])) #eval()函數將去掉字符串的兩個引號
也可以用float()將字串轉換為浮點數字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import requests html = requests.get("https://www.taifex.com.tw/data_gov/taifex_open_data.asp?data_name=DailyForeignExchangeRates") html.encoding="CP950" print(html.text) #切割換行 list1=html.text.split("\r\n") print(list1) listx1=[] listy1=[] for i in range(1,len(list1)-1): list2=list1[i].split(",") print(list2[0]+","+list2[1]) listx1.append("{}/{}".format(list2[0][4:6],list2[0][6:8])) listy1.append(eval(list2[1])) #eval()函數將去掉字符串的兩個引號 print(listx1) print(listy1) ##引用matplotlib繪製折線圖 import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] mpl.rcParams['axes.unicode_minus'] = False plt.plot(listx1, listy1, color="red", linewidth=1, linestyle="--", label="美元/新台幣") plt.legend() plt.show() |
最後就是引用matplotlib模組繪製折線圖
matplotlib預設的字型無法顯示中文,所以要改成中文字型
以及避免因為字型的關係無法正常顯示負號
mpl.rcParams['font.sans-serif'] = ['FangSong'] mpl.rcParams['axes.unicode_minus'] = False
引用 matplotlib.pyplot 並且取別名為 plt
legend() 如果沒有設定參數,就會使用預設值,並且從plot()中抓取label的設定值
plt.plot(listx1, listy1, color="red", linewidth=1, linestyle="--", label="美元/新台幣") plt.legend() plt.show()
輸出的圖檔
JSON格式處理
細懸浮微粒資料(PM2.5)
1 2 3 4 5 6 7 8 |
import requests,json html = requests.get("https://data.epa.gov.tw/api/v2/aqx_p_02?api_key=e8dd42e6-9b8b-43f8-991e-b3dee723a52d&limit=1000&sort=datacreationdate%20desc&format=json") print(html.text) #2.解析JSON dict1=json.loads(html.text) # print(dict1) list1=dict1.get("records") #取出 key值為 records的資料 |
備註:Python Json模組中dumps()、loads()、dump()、load()
讀取資料:loads() 、 load()
寫出資料:dumps()、dump()
差別在於有s的都是讀取或寫出字串型態,所以都是在程式中使用
沒有s的都是讀取或寫出Json檔案,所以要留意編碼格式
所以上方的範例,資料來源是requests模組取得的字串資料
因此使用loads()來解析
由於Json在Python轉換之後的對應關係是字典型態
所以轉換之後可以用字典方法來取得資料
上方範例中records存放的是陣列型態資料
轉換之後的對應關係是串列型態
所以要取出裡面的資料就要用串列的方法
要分析Json的結構,除了下載之後土炮分析之外
也可以透過 http://jsoneditoronline.org 來解析