前面介紹過如何使用twder模組抓取台銀即時匯率資料的操作
但光是抓取資料來呈現,對於網路資料的擷取實在是可惜了~~若是能將資料儲存下來,作為後續資料分析、追蹤之用,那才是資料抓取之重點啊!
那麼~~抓取回來的資料要如何儲存?存在哪裡呢?
這個問題~~見仁見智啦~~你要簡單儲存在一個文字檔(*.txt)可以嗎?可以啊.....;儲存在MySQL資料庫咧~~很好啊....,端看你準備怎麼用、如何用、好不好用這些資料而定!你自己用的開心、滿足自己所需最重要!
這次,為了方便應用~使用了python安裝時即內建的sqlite資料庫(我自己是習慣使用MySQL啦),作為資料擷取儲存的工具!著眼點就是:內建~~無須在涉及資料庫的安裝、設定...等等!
OK~~這次目標是:
一、擷取台銀指定幣別(日幣)即時匯率資料(前面介紹過請自行參考)
二、使用pandas模組將擷取的資料格式化
三、使用sqlite3配合pandas進行sqlite指定的資料庫-資料表的讀寫操作
好囉~~基本上也是直接看程式碼即可~~~上吧...程式馬(呵!~無聊)
# 先確認已安裝所需之模組
import twder
import sqlite3
import pandas as pd
n_der = twder.now('JPY') # 擷取目前指定幣別(日幣)報價
tc = ["資料時間", "現金買入", "現金賣出", "即期買入", "即期賣出"] # 設定一組資料表欄位之列表
t_data = [] # 設定一組空列表(list)做為儲放資料集之用
t_data.append(n_der) # 將查詢結果儲存至資料庫之資料列表(list)
t_df = pd.DataFrame(t_data, columns=tc) # 組合為pandas 之 DataFrame
with sqlite3.connect('twder_demo.sqlite') as db: #連結sqlite之twder_demo.sqlite資料庫
t_df.to_sql('twder_demo', con=db, if_exists='append') # 使用pandas to_sql將資料集(t_df)寫入資料表:twder_demo
print("=======資料寫入完成=======")
# 使用pandas read_sql_query讀取資料表內容並格式化
read_df = pd.read_sql_query('select * from twder_demo', con=db)
print(read_df)
# =======使用iloc索引選擇輸出內容
print(read_df.iloc[:, 1:])
執行結果如下:
簡單補充說明:
1.本次使用pandas可將擷取資料進行格式化及後續操作,是個很強勁的模組!
2.第13~17行:sqlite資料的讀寫,配合pandas可以直接對資料庫(twder_demo.sqlite)、資料表(twder_demo)進行操作,無須先行設定!
2-1.程式第一次執行完成後,即可在程式檔案目錄下看到建立的資料庫檔案:twder_demo.sqlite
3.第14行:其中 「if_exists='append'」表示若是 資料表:twder_demo不存在就建立該資料表,若已存在則進行資料新增。
4.若想單獨對sqlite資料庫進行管理及設定、維護,可以安裝DB Browser for SQLite管理軟體進行操作。(後續再找時間介紹了)
5.第21行~~pandas讀取資料表內容後,可應用pandas .iloc進行「行、列索引」設定格式化輸出內容。(這部分操作與列表(list)操作設定方式相當類似,請自行體會了~~一樣後續有機會在介紹囉!)
沒有留言:
張貼留言