程式語言-股票資料存檔
難易程度★★
Published in
5 min readApr 13, 2019
此篇文章使用 Anaconda的 Jupyter寫程式,測試環境 python3.6,事先完成 pandas、numpy、twstock及sqlite3套件安裝
這篇使用【資料庫】儲存股票資料
新手爬蟲時,常常會遇到一件事就是…
電腦拒絕連線…OOXX
存檔方式
參考了多篇文章,發現原來pandas裡的dataframe裡有存檔的功能
主要可以使用三種方式:
- 存成csv檔
- 存成excel檔
- 存進sql資料庫裡,不過在傳統模式dataframe好像只適用sqlite3
安裝軟體
可至以下連結安裝sqlite的database
資料可能會存在C:\Program Files\DB Browser for SQLite
未來開啟檔案,1. 選擇此資料夾 2. 點選DB Browser for SQLite.exe 的執行檔
程式解析
- 從『導入套件』到『爬蟲』都與上一篇一模一樣,這裡不再贅述
#導入套件
%matplotlib inline
import datetime
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt#專門抓台股的套件
import twstock#設定爬蟲股票代號
sid = '2330'
data=twstock.Stock(sid)#用fetch_from抓取資料,指定日期放入dataframe裡
df = pd.DataFrame(data.fetch_from(2018,1))#設定index
df.set_index('date', inplace = True)
2. 用to_csv存檔
這裡試看看編碼有無差異,發現因為twstock下載的資料都是英文,所以可以不用utf_8編碼
#用to_csv存檔,並命名為 “股票代號.csv”
df.to_csv(sid+’.csv’)#用「utf_8_sig」編碼
df.to_csv(sid+’_utf.csv’, encoding=’utf_8_sig’)
3. 用to_sql存檔
(1)先導入套件
(2)開啟一個名為”股票代號.db”的檔案,並與sqlite3的資料庫連結
(3)df的資料用to_sql()的方法存入,檔名為sid,資料庫來源就是con,如果資料庫有已存在檔案就替換掉
猛然發現Anaconda已幫我添加了sqlite3的套件
import sqlite3# 開啟一個名為”股票代號.db"的檔案,並與sqlite3的資料庫連結
con = sqlite3.connect(sid+’.db')#把df寫入sqlite3裡,參數為(檔名, 資料庫, 取代原始資料)
df.to_sql(sid, con, if_exists=’replace’)
可以看到sqlite資料庫裡的長相就是如此,檔名就是2330,df的鍵(key)在檔名底下,每一個鍵裡都有爬下來的值(value)
附上原始程式碼
這次的教學教了
- 溫習前面爬蟲課程
- 學習使用sqlite3套件安裝
- 使用to_csv的方法
- 了解utf_8編碼對twstock下載資料沒影響
- 使用to_sql的方法及參數意義