本篇我們會繼續討論從Part 1 撈取的 df_878
中提取股票代碼,並使用先前Part 2 定義的 get_info_yfinance
函式來獲取 Yahoo Finance 上的財務資料,接著將這些資料貼回 df_878
的相應欄位中。以下是此程式碼的逐步解說:
df_878
中的每一列資料中,獲取tickeri = 1
for row in df_878.to_records(index=False):
ticker = str(row[0]).strip() + '.TW'
.TW
,以符合 Yahoo Finance 的台灣股票代碼格式。print(ticker)
用於顯示當前處理的股票代碼,方便檢查。get_info_yfinance
函式取得財務資料data = get_info_yfinance(ticker)
將結果儲存在 data
變數中。data
包含多個財務指標的數值。
df_878
的指定欄位:df_878.loc[i, 'eps_trailing'] = data[0]
df_878.loc[i, 'eps_forward'] = data[1]
df_878.loc[i, 'bookvalue_per_share'] = data[2]
df_878.loc[i, 'previousClose'] = data[3]
df_878.loc[i, 'priceToBook'] = data[4]
df_878.loc[i, 'earningsGrowth'] = data[5]
df_878.loc[i, 'trailingPE'] = data[6]
df_878.loc[i, 'forwardPE'] = data[7]
df_878.loc[i, 'trailingPegRatio'] = data[8]
df_878.loc[i, 'currentPrice'] = data[9]
df_878.loc[i, 'targetMedianPrice'] = data[10]
df_878.loc[i, 'totalRevenue'] = data[11]
df_878.loc[i, 'revenuePerShare'] = data[12]
df_878.loc[i, 'revenueGrowth'] = data[13]
df_878.loc[i, 'operatingMargins'] = data[14]
df_878.loc[i, 'totalCashPerShare'] = data[15]
df_878.loc[i, 'averageVolume10day'] = data[16]
df_878.loc[i, 'averageDailyVolume10Day'] = data[17]
將 data
中的每個項目寫入 df_878
的對應欄位,並使用 i
作為列索引。
None
if(data[1] == None):
ticker = str(row[0]).strip() + '.TWO'
print(ticker)
data = get_info_yfinance(ticker)
...
data[1]
(即 eps_forward
)為 None
,則重新設置股票代碼為 .TWO
(表示台灣OTC市場),並再次調用 get_info_yfinance
取得資料。data
資料寫入 df_878
的相應欄位。i
加 1,移動到下一行。此程式碼的作用是瀏覽 df_878
中的每一列,取得股票代碼,並使用 Yahoo Finance 提取相關財務資料,再將這些資料更新回 df_878
的相應欄位。若某些資料為空 (None
),則會切換股票代碼的後綴並重新嘗試提取資料。
下篇會講解最後的部分,將統整後的市值、盈餘計算此ETF的本益比。
謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads/ FB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!