iT邦幫忙

1

[Python爬蟲] YFinance 模組

  • 分享至 

  • xImage
  •  

YFinance 模組

想像你是一位探險家,探索充滿神秘的金融世界。在這裡,股市就像一座變化莫測的山脈,股價每天都在起起伏伏。這時,yfinance套件就像你手中的萬能探險工具,讓你能輕鬆獲取雅虎財經(Yahoo Finance)上的股市數據,包括股票價格、歷史數據、公司資料等。無論是想分析特斯拉的股價走勢,還是比較蘋果和微軟的財報,yfinance都能助你一臂之力。對於那些渴望用程式操盤的金融探險家來說,學習如何使用yfinance,就像掌握了一把開啟股市寶藏的鑰匙!

yfinance 是一個 Python 套件,它提供了一種簡單的方法來從 Yahoo 財經獲取金融數據。這個套件非常適合那些需要進行股票市場分析、財務數據探索或建立投資策略的程式開發人員和數據分析師。

以下是一些 yfinance 的主要功能:

  1. 獲取歷史數據:您可以獲取任何可在 Yahoo 財經上找到的股票、ETF、指數或加密貨幣的歷史市場數據。這包括開盤價、最高價、最低價、收盤價以及交易量。
  2. 實時數據yfinance 也允許用戶獲取實時交易數據(雖然可能有輕微的延遲)。
  3. 公司財務數據:這個套件可以用來獲取公司的財務報告,比如收益表、資產負債表和現金流量表。
  4. 股票資訊:您還可以獲取關於股票的基本信息,如股票代碼、市值、股息等。
  5. 易於使用yfinance 的 API 設計得非常直觀,方便用戶快速上手。它允許您使用簡單的函數調用來獲取所需的數據。
  6. 兼容性:它可以與其他 Python 數據分析工具(如 Pandas、NumPy、Matplotlib)無縫集成,方便進行進一步的數據處理和視覺化。

安裝 yfinance 的方法非常簡單,只需要使用 Python 的包管理器 pip:

pip install yfinance

使用 yfinance 獲取數據的一個基本示例:

import yfinance as yf

# 獲取 Apple 股票的數據
apple = yf.Ticker("AAPL")

# 獲取 Apple 股票的歷史價格
hist = apple.history(period="1mo")

# 顯示數據
print(hist)

yfinance 程式範例

這個示例將顯示過去一個月內 Apple 股票的歷史價格數據。您可以調整 period 參數來獲取不同時間範圍的數據。

History 方法

yfinance 套件中,history 方法是用來獲取股票或其他金融工具的歷史市場數據的主要方式。這個方法返回一個包含了選定時間範圍內的市場數據的 Pandas DataFrame。這些數據通常包括開盤價、最高價、最低價、收盤價和交易量。

以下是 history 方法的基本用法:


import yfinance as yf

# 創建一個股票對象
stock = yf.Ticker("股票代碼")

# 使用 history 方法獲取歷史數據
historical_data = stock.history(period="1mo", interval="1d", start=None, end=None, actions=True, auto_adjust=True, back_adjust=False)

這裡是 history 方法的參數說明:

  • period:要獲取數據的時間範圍。可以是 "1d", "5d", "1mo", "3mo", "6mo", "1y", "2y", "5y", "10y", "ytd", "max" 等。
  • interval:數據的時間間隔。可以是 "1m", "2m", "5m", "15m", "30m", "60m", "90m", "1h", "1d", "5d", "1wk", "1mo", "3mo" 等。
  • startend:分別指定獲取數據的起始和結束日期。它們應該是字符串(例如 "YYYY-MM-DD")或 datetime 對象。
  • actions:是否包括股息和股票分割數據。預設為 True。
  • auto_adjust:是否自動調整開盤、收盤、最高和最低價格,以反映股息和股票分割。預設為 True。
  • back_adjust:是否對歷史數據進行回溯調整,以反映股票分割。預設為 False。

例如,若要獲取台積電(代碼 "2330.TW")過去三個月的每日股票數據,您可以這樣做:

taiwan_2330 = yf.Ticker("2330.TW")
data = taiwan_2330.history(period="3mo")
# 畫出收盤價圖片
data['Close'].plot()

yfinance 程式範例ㄧ

這段代碼將返回一個 DataFrame,其中包含台積電在過去三個月內每天的開盤價、最高價、最低價、收盤價和交易量。這些數據可用於進行股票市場分析和決策制定。

Download 方法

yfinance 套件中,download 方法是一種非常有用的功能,它允許用戶批量下載多個股票的歷史市場數據。這對於需要一次性分析多個股票或資產的用戶來說特別方便。

使用 download 方法的基本語法如下:

import yfinance as yf

data = yf.download(tickers, start=None, end=None, interval="1d", group_by='ticker', auto_adjust=False, prepost=False, threads=True, proxy=None)

這裡是參數的簡要說明:

  • tickers:一個字符串或字符串列表,代表想要下載數據的股票代碼。例如 "AAPL" 或 ["AAPL", "MSFT", "GOOG"]。
  • startend:分別代表數據下載的起始和結束日期。它們應該是字符串(例如 "YYYY-MM-DD")或 datetime 對象。
  • interval:數據的時間間隔。可選值包括 "1m"(一分鐘)、"1h"(一小時)、"1d"(一天)、"1wk"(一周)和 "1mo"(一個月)。
  • group_by:決定如何組織返回的數據。通常設置為 'ticker'。
  • auto_adjust:是否自動調整數據,以反映股息和股票分割。
  • prepost:是否包括盤前和盤後的交易數據。
  • threads:是否使用多線程來加速下載。
  • proxy:用於下載數據的代理服務器。

例如,如果您想下載蘋果公司(AAPL)、微軟公司(MSFT)和谷歌(GOOGL)從 2020 年 1 月 1 日到 2020 年 12 月 31 日的每日股票數據,您可以這樣寫:

data = yf.download(["AAPL", "MSFT", "GOOGL"], start="2020-01-01", end="2020-12-31")

yfinance 程式範例2

此方法會返回一個包含所選股票在指定時間範圍內的歷史數據的 Pandas DataFrame。這是一個非常強大的功能,因為它讓收集和分析多個股票的數據變得非常簡單和高效。

當使用 yfinancedownload 方法下載股票數據時,返回的資料通常是一個 Pandas DataFrame。這個 DataFrame 包含了若干列,每列代表不同的市場數據。以下是這些列的一般說明:

列名稱 說明
Date 日期,表明數據點的具體日期。
Open 開盤價,指股票在該交易日開市時的價格。
High 最高價,指股票在該交易日的最高交易價格。
Low 最低價,指股票在該交易日的最低交易價格。
Close 收盤價,指股票在該交易日結束時的價格。
Adj Close 調整後收盤價,將股票分割和股息等因素考慮進去後的收盤價。
Volume 交易量,表示在該交易日內買賣該股票的總股數。

如果您下載多個股票的數據,DataFrame 會稍有不同。在這種情況下,數據通常會按股票代碼進行分組,每個股票代碼下會有上述的數據列。

台灣股票數據

說明如何使用 yfinance 下載台灣 2330 (台積電) 的股票數據並繪製 K 線圖。您可以在您自己的 Python 環境中運行此程式。

首先,您需要安裝 yfinancemplfinance 套件。mplfinance 是一個用於財經數據視覺化的套件,特別適用於繪製 K 線圖。您可以使用 pip 進行安裝:

pip install yfinance mplfinance

然後,您可以使用以下腳本來下載台灣 2330 股票數據並繪製 K 線圖:


import yfinance as yf
import mplfinance as mpf

# 下載台灣 2330 (台積電) 的股票數據
taiwan_2330 = yf.Ticker("2330.TW")
df = taiwan_2330.history(period="1mo")

# 檢查數據是否成功下載
if df.empty:
    print("股票數據下載失敗或沒有數據。")
else:
    # 繪製 K 線圖
    mpf.plot(df, type='candle', style='charles', title='2330', volume=True)

yfinance 程式範例3

這段腳本將從 Yahoo 財經下載過去一個月的台積電股票數據,然後使用 mplfinance 套件繪製 K 線圖。您可以根據需要調整 period 參數來改變數據的時間範圍。請在您的本地 Python 環境中運行這段腳本來獲取結果。

結論

yfinance 模組的資料來源是從 Yahoo財經上面的的股票資訊,資料包括開盤價、最高價、最低價、收盤價和交易量等重要信息。結合 pandas 的強大數據處理能力和配合繪圖庫,如 matplotlib 或 mplfinance,用戶可以方便地生成圖表,如 K 線圖,這對於視覺化分析和呈現市場趨勢來說非常的好用。

參考

yfinance github

Python基礎系列文章

分享所學貢獻社會
[Python教學]開發工具介紹
[開發工具] Google Colab 介紹
[Python教學] 資料型態
[Python教學] if判斷式
[Python教學] List 清單 和 Tuple元組
[Python教學] for 和 while 迴圈
[Python教學] Dictionary 字典 和 Set 集合
[Python教學] Function函示
[Python教學] Class 類別
[Python教學] 例外處理
[Python教學] 檔案存取
[Python教學] 實作密碼產生器
[Python教學] 日期時間
[Python教學] 套件管理

Python 爬蟲系列文章

[Python爬蟲] 網路爬蟲
[Python爬蟲] 分析目標網站
[Python爬蟲] 發送請求與解析網站內容
[Python爬蟲] Requests 模組
[Python爬蟲] Beautiful Soup 模組
[Python爬蟲] Selenium 模組
[Python爬蟲] Pandas模組

Python 投資系列文章

[Python投資] YFinance 模組

訂閱免費電子報

我們推出電子報拉,歡迎大家訂閱免費電子報,會接收到分享的程式文章,
透過閱讀文章,今天比昨天進步一點,每天的一小步,就是未來的一大步。
訂閱免費電子報
Facebook 粉絲頁 - TechMasters 工程師養成記
同步分享到部落格


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言