[專題實作]以Yfinance之臺股資料進行市場寬度指標驗證-Step2以Yfinance抓取名單中證券2010-2023收盤價

         承前篇,Step1爬取上市櫃公司股票與ETF代碼名單,有了名單之後當然就要來開始爬資料啦!Yfinance的資料抓取很簡單,這邊因為資料的需求我只要Close收盤價,需要其他的小夥伴自己研究蛤。

在本文中,我們將介紹如何使用 Python 中的 requeststimeoscsvpandas 模組,以及 yfinance 庫來爬取台灣上市櫃股票及 ETF 的數據。這些數據將會被處理並保存為 CSV 文件,以供後續分析使用。

1. 讀取股票代碼

首先,我們從 CSV 文件中讀取股票代碼,這些代碼將被用於後續的數據爬取。以下是讀取 CSV 文件並將股票代碼存入列表的代碼:

python

import csv path = r"D:\市場寬度 專題\2023上市櫃股票及ETF代碼(for yfinance)-1.csv" TW_TWO = [] with open(path, "r", newline="", encoding='utf_8_sig') as csvfile: reader = csv.reader(csvfile) for row in reader: TW_TWO.append(row[1]) # 取出股票代碼 del TW_TWO[0] # 刪除第一行(索引) print(TW_TWO) # 檢查讀取結果

2. 爬取股票收盤價

接下來,我們使用 yfinance 庫來爬取每個股票代碼從 2010 年 1 月 1 日到 2023 年 2 月 1 日的收盤價,並將結果存入一個 DataFrame 中。

python

import time import pandas as pd import yfinance as yf df_stock = pd.DataFrame() for i in TW_TWO: time.sleep(1) # 防止過快的請求 print(i) # 顯示當前處理的股票代碼 df = yf.download(i, start='2010-01-01', end='2023-02-01') df = df[['Close']] # 只保留收盤價 df = df.rename(columns={'Close': i}) # 將欄位命名為股票代碼 df_stock = pd.concat([df_stock, df], axis=1) # 合併數據 df_stock = df_stock.dropna(axis=0, how='all') # 刪除空行 path1 = r'D:\市場寬度 專題\2010-2023個股股價df.csv' df_stock.to_csv(path1, sep=',', na_rep='', encoding='utf_8_sig') # 保存數據

3. 爬取大盤指數

最後,我們使用 yfinance 庫爬取台灣加權指數(TWII)的數據,並將其保存為 CSV 文件。

python

import pandas as pd import yfinance as yf TWII = yf.download('^TWII', start='2010-01-01', end='2023-02-01') TWII = TWII[['Close']] TWII = TWII.rename(columns={'Close': '^TWII'}) print(TWII) path2 = r'D:\市場寬度 專題\2010-2023 大盤指數 _raw.csv' TWII.to_csv(path2, sep=',', na_rep='', float_format='%.4f', encoding='utf_8_sig')

總結

本文介紹了如何使用 Python 和 yfinance 庫來爬取和處理台灣上市櫃股票及 ETF 的收盤價數據。我們讀取了包含股票代碼的 CSV 文件,爬取了每個股票的收盤價,並將結果保存為 CSV 文件。此外,我們還爬取了台灣加權指數(TWII)的數據並進行了同樣的處理。這些數據可以用於後續的金融分析和研究。

留言

這個網誌中的熱門文章

[專題實作]以Yfinance之臺股資料進行市場寬度指標驗證-總結

[專題實作]以Yfinance之臺股資料進行市場寬度指標驗證-Step1爬取上市櫃公司股票與ETF代碼名單

[專題實作]以Yfinance之臺股資料進行市場寬度指標驗證-Step4.匯入檔案以產生策略