2024-11-05|閱讀時間 ‧ 約 5 分鐘

Python 解鎖 - 如何計算 ETF 的PE Ratio? (以00878為例) Part 3

本篇我們會繼續討論從Part 1 撈取的 df_878 中提取股票代碼,並使用先前Part 2 定義的 get_info_yfinance 函式來獲取 Yahoo Finance 上的財務資料,接著將這些資料貼回 df_878 的相應欄位中。以下是此程式碼的逐步解說:

  • df_878 中的每一列資料中,獲取ticker
i = 1
for row in df_878.to_records(index=False):
ticker = str(row[0]).strip() + '.TW'
  1. 提取當前行的股票代碼,去除多餘的空白並加上 .TW,以符合 Yahoo Finance 的台灣股票代碼格式。
  2. 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)
...
  1. 如果 data[1](即 eps_forward)為 None,則重新設置股票代碼為 .TWO(表示台灣OTC市場),並再次調用 get_info_yfinance 取得資料。
  2. 同樣地,將新的 data 資料寫入 df_878 的相應欄位。
  • i 加 1,移動到下一行。

此程式碼的作用是瀏覽 df_878 中的每一列,取得股票代碼,並使用 Yahoo Finance 提取相關財務資料,再將這些資料更新回 df_878 的相應欄位。若某些資料為空 (None),則會切換股票代碼的後綴並重新嘗試提取資料。

下篇會講解最後的部分,將統整後的市值、盈餘計算此ETF的本益比。


謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads/ FB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!


分享至
成為作者繼續創作的動力吧!
從 Google News 追蹤更多 vocus 的最新精選內容從 Google News 追蹤更多 vocus 的最新精選內容

作者的相關文章

DigNo Ape 數遊原人 的其他內容

你可能也想看

發表回應

成為會員 後即可發表留言
© 2024 vocus All rights reserved.