如何使用 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 或任何其他資料分析工具中開啟。