昨天講解完分別的意義之後,應該就有比較懂這三個分別是在做甚麼了吧!了解之後,今天就來抓取資料了
前面也一樣都是匯入函數
再來就是資料庫的連線、
這裡從 FinLab 獲取指定的財務數據。這裡獲取了:營業毛利率 (GPM)、營業利益率、(OPM)、稅後淨利率 (NPM)
reset_index():將索引重置,這樣原本的索引變為普通欄位,方便後續的數據操作。
定義用於插入資料的 SQL 語句,將數據插入 PP_GPM_OPM_NPM 表中的五個欄位,分別是 DateQ(日期)、StockId(股票代碼)、GPM(營業毛利率)、OPM(營業利益率)和 NPM(稅後淨利率)。
外層迴圈 for i in range(0, data_count)::遍歷每一行資料,對應到每個日期。
內層迴圈 for j in range(1, len(stock_ids))::遍歷每一個股票代碼。
if len(stock_ids[j]) == 4::檢查股票代碼的長度是否為 4,這是檢查是否為有效的股票代碼。
提取數據:從 GPM、OPM、NPM DataFrame 中提取對應的數據:
tx_date:日期
stock_id:股票代碼
Gpm、Opm、Npm:對應的財務數據。
sql_data = []:初始化一個空的列表,用於存放即將插入資料的數據。
sql_data.append(...):將各項數據添加到 sql_data 列表中。
條件過濾:檢查所提取的數據是否有效(即不是 nan、inf 或其他無效數據)。
都完成之後,就可以來去SQL檢查對不對了
檢查完成之後,今天的部分就達成了!明天開始把剩下四季的資料都算出來,就算完成三率這一整個部分了~