透過TEJ API打造自己的資料庫(上)

– 資料撈取/存取/使用操作說明

前言

什麼是TEJ API?

每次在做資料分析之前,會不會覺得找到資料一個高品質且穩定的來源非常困難?又或是說,好不容易找到了,卻要時常維護自己的爬蟲程式很耗時呢?台灣經濟新報TEJ已推出TEJ API工具搭配各程式語言,歡迎您申請試用!

在這Medium的文章中會主要以TEJ API為主要資料索取來源,並透過程式語言-Python對金融資料進行分析,目的是對新手來說可以初步了解到如何透過程式對資料進行分析,對老手來說則可以接觸到一個穩定且快速的資料來源!

本文重點概要

  • TEJ API 資料撈取
  • 資料存取(CSV, Xlsx, SQLite)

TEJ API 資料撈取-以股市資料為例子

那應該要如何進行操作呢?其實流程非常簡單
首先我們要先在Python上面安裝tejapi

 pip install tejapi

接下來就是import這個package並設定好自己的api_key,如果還沒有的話,可以透過TEJ API官網進行試用,不過要注意的是,試用版本對能取得的資料範圍有所限制噢

import tejapi
tejapi.ApiConfig.api_key = “你的api_key”

接下來就可以透過TEJ API程式碼進行資料撈取,程式碼如下:

TSMC = tejapi.get(
'TWN/EWPRCD', 
coid = '2330',
mdate={'gte':'2020-01-01', 'lte':'2020-12-31'}, 
opts={'columns': ['mdate','open_d','high_d','low_d','close_d']}, 
paginate=True
)
TSMC

在這之中我們會發現有一些變數會需要我們先行查詢之後才能更為精確的帶入這個function之中,例如:

  1. 該資料所在的資料庫名稱-以TWN/EWPRCD證券交易資料表為例
    ❗❗若是試用帳號也會有專屬的試用版資料庫
    ❗❗如果要申請試用或者是了解試用資料庫授權範圍,請參考連結噢~
  2. 股票/公司代號-以2330為例
  3. 選取資料區間-從2020-01-01到2020-12-31
  4. (optional)指定欄位-以取得開高低收為例
  5. paginate -系統限制單次取得最大筆數,可透過此參數分次取得資料

** 本次使用的例子都是採用TEJ E SHOP的小資方案,可以透過E SHOP網站來了解TEJ現在推出的產品組合包以及其包含的資料清單。然後就可以來看產出啦

2020台積電(2330)股市日資料-開高低收
2020台積電(2330)股市日資料-開高低收

資料存取

在Python資料分析裡面,其中最重要且不可或缺的資料包就是pandas, numpy,還有就是可以處理時間格式的datetime,我們可以透過這幾個資料包進行大多數的資料分析操作,當然這次的資料存取操作也在其中!

之後我們會針對pandas和numpy有更多的應用介紹,如有特別想了解的主題可以在下方留言告訴我們!

import pandas as pd
import numpy as np
import datetime

Excel CSV檔之存/讀取
要把我們上面得到的資料存成Excel CSV檔以及從CSV檔進行讀取的動作,只要透過這幾行程式碼即可達到我們的需求:

#存取
path =’要存放到的路徑/{name}.csv’.format(name = “TSMC”)
TSMC.to_csv(path , index=False )

#讀檔
TSMC = pd.read_csv(‘TSMC.csv’)

Excel Xlsx檔之存/讀取

Excel除了CSV檔之外,還有另一種儲存方式就是Xlsx,如果在表格很多的情況下(如交易資料+基本面資料),透過這種儲存方法我們可以存放多個表格到同一個Excel的不同Sheets裡面
唯一要注意的地方是,因為TEJ API索取資料的日期格式跟這個to_excel function有所衝突的地方,所以我們要先對日期格式進行處理,然後再進行寫入。

#路徑設定
path =’要存放到的路徑/{name}.xlsx’.format(name = “Stock_List”)
writer = pd.ExcelWriter(PATH , engine='xlsxwriter')
#日期資料型態整理
TSMC['mdate'] = 
 TSMC['mdate'].apply(lambda x: pd.to_datetime(x).date())
#存取
TSMC.to_excel(writer, sheet_name='2330' ,index = False)
writer.save()
#讀檔
TSMC = pd.read_excel('Stock_List.xlsx', sheet_name = '2330')

#read_excel()還有許多功能可供使用,可透過查閱其Document取得需要的參數。

SQLite之存/讀取

上面兩種方式都是將資料存到Excel裡面,但如果資料量越來越龐大,想建立一個資料庫的時候,這時候可能就會需要SQLite的登場了!
SQLite是一款佔用資源較低的小型開源資料庫,且已在Python中成為內建模組,因此使用上可說是非常方便。
在這邊我們會簡單介紹如何連接資料庫、並將資料進行存入/讀取。詳細說明以及語法可以參考SQLite官方網站

#import 模組
import sqlite3
#連接資料庫(在沒有該資料庫的時候則是會自動創造一個空的資料庫)
conn = sqlite3.connect('mydatabase.db')
#存取
TSMC.to_sql(name='TSMC', con=conn, if_exists="replace", index=False)
#讀取
sql_query = "SELECT * FROM TSMC"
TSMC = pd.read_sql(sql_query, con=conn, coerce_float=False)
#關閉資料庫
conn.close()

** 接下來就是透過資料庫管理軟體來看一下我們是否有成功匯入
(小編使用的是DBeaver):

資料成功匯入SQLite後畫面

結語

這次教給大家的是對TEJ API裡的資料進行撈取還有將其存放的介紹教學,我們在未來還會寫更多透過這些金融資料進行的分析還有應用,如果有想知道的內容或主題可以在下方留言告訴我們!
最後,如果看過本篇文章之後有任何的問題或者指教都歡迎留言/來信,我們一定盡可能回覆大家。

完整程式碼

延伸閱讀

相關網站連結

返回总览页