如何使用 Python 從標準普爾 500 指數中提取基本資料


標準普爾 500 指數代表美國 500 家最大上市公司的基準表現。對於投資者、分析師和研究人員來說,提取這些公司的基本資料非常重要。

Python 是一種很棒的語言,藉助其豐富的庫,可以提取並分析此類資訊。以下文章介紹瞭如何在 Python 的幫助下提取標準普爾 500 指數的基本資料。

為什麼要提取基本資料?

基本資料包括核心財務資訊,例如收益、收入、股息和其他通常用於確定公司財務實力的指標。

透過這種資料提取,投資者無疑可以做出更明智的投資決策。基本面分析是價值投資的組成部分,從本質上確定了股票的內在價值所在。

先決條件

在繼續之前,請確認您具備以下先決條件:

  • 已安裝 Python 3.x:您需要確保您的系統中已安裝Python 3.x
  • Python 的基本理解:您需要對 pandas、requests 和 yfinance 等庫有基本的瞭解。此外,您應該選擇任何您喜歡的 IDE/文字編輯器,例如 Jupyter Notebook 或 VS Code。
  • 安裝所需的庫:您可以使用以下命令透過 pip 安裝必要的庫:
    pip install pandas requests yfinance
    

提取資料步驟

以下是使用 Python 從標準普爾 500 指數中提取基本資料的步驟:

步驟 1:匯入所需的庫

首先,匯入如下所示的必要庫:

import pandas as pd
import yfinance as yf
import requests
from bs4 import BeautifulSoup
  • pandas:用於操作和分析資料。
  • yfinance:一個 Python 包,用於從雅虎財經下載股票市場資料。
  • requests:用於向網頁發出 HTTP 請求。
  • Beautiful Soup:它解析 HTML,提供了一種易於訪問的方式來從網頁中提取資訊。

此外,如果您希望線上執行 Python 程式碼而無需在本地安裝任何內容,請使用Python 線上編譯器。對於那些希望直接在瀏覽器中執行 Python 指令碼以進行快速測試和學習的人來說,這是一個受歡迎的補充。

步驟 2:獲取標準普爾 500 公司列表

我們需要獲取構成標準普爾 500 指數的公司列表:

response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', {'id': 'constituents'})
df = pd.read_html(str(table))[0]
df.to_csv('sp500_companies.csv', index=False)
# Show the first few rows of the dataframe
df.head()

步驟 3:使用 yfinance 抓取基本資料

以下程式碼從維基百科抓取標準普爾 500 公司的表格,並將資料傳遞到 pandas DataFrame 中。它將包含一個列表,其中包含公司的股票程式碼、名稱、所屬行業和其他相關詳細資訊。

有了標準普爾 500 公司的列表,我們現在可以使用 yfinance 開始提取基本資料。以下是提取市值、市盈率和股息收益率的方法:

def get_fundamental_data(ticker):
 stock = yf.Ticker(ticker)
 info = stock.info

 data = {
 'Ticker': ticker,
'Market Cap': info.get('marketCap', 'N/A'),
 'PE Ratio': info.get('trailingPE', 'N/A'),
 'Dividend Yield': info.get('dividendYield', 'N/A'),
 'EPS': info.get('trailingEps', 'N/A')
 }
 return data

# Extract data for a few companies
tickers = df['Symbol'].head(5) # Get tickers for the first 5 companies
fundamental_data = [get_fundamental_data(ticker) for ticker in tickers]
fundamental_df = pd.DataFrame(fundamental_data)

# Print the extracted data
fundamental_df

以上程式碼用於:

  • get_fundamental_data 函式,它以股票程式碼作為輸入,並返回一個包含基本資料的字典。
  • 將其應用於標準普爾 500 公司的一個子集,並將輸出儲存在 DataFrame 中。

步驟 4:視覺化或分析資料

提取資料後,您很可能希望視覺化或以某種方式分析資料。以下是如何繪製標準普爾 500 指數中遠期市盈率分佈的示例:

import matplotlib.pyplot as plt

# Extract PE Ratios for all companies
df['PE Ratio'] = df['Symbol'].apply(lambda x: get_fundamental_data(x)['PE Ratio'])
df['PE Ratio'] = pd.to_numeric(df['PE Ratio'], errors='coerce')

# Plot the distribution of PE Ratios
plt.figure(figsize=(10, 6))
df['PE Ratio'].dropna().hist(bins=50)
plt.title('Distribution of PE Ratios in the S&P 500')
plt.xlabel('PE Ratio')
plt.ylabel('Number of Companies')
plt.show()

此圖表提供了對標準普爾 500 指數中上市公司的估值的寶貴見解。直方圖直觀地顯示了有多少公司屬於特定的市盈率範圍。

步驟 5:儲存和共享您的資料

最後,您可能希望儲存提取的資料以供進一步分析或與他人共享。您可以以非常直接的方式將 DataFrame 匯出到 CSV 檔案

fundamental_df.to_csv('sp500_fundamental_data.csv', index=False)

以上命令將 DataFrame 寫入名為 sp500_fundamental_data.csv 的 CSV 格式檔案,該檔案可以在 Excel 或任何其他資料分析工具中開啟。

micahgreen
micahgreen

我是一名軟體工程師和充滿激情的程式設計師

更新於: 2024年9月10日

201 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告