Home 程式語言Python來使用python + yfinance library 繪製特斯拉近期的股價吧

來使用python + yfinance library 繪製特斯拉近期的股價吧

by adcapdio

如果你對 python 還不熟的話, 可能建議你先學習一下 python, 有個基本功再來這邊喔!!! 當然完全不懂 python, 照著內文說明做, 誤打誤撞 “可能” 也會成功!! 事不宜遲我們先來準備一下相關環境吧!!


環境設定

首先你當然是會先有 python 的開發與執行環境對吧!! 好比說筆者這邊用的就是 PyCharm, 當然有些人會選擇 jupyter, 就看你自己習慣囉!

如果是 IDE, 你就可以再輸入 source code 時, 依依帶入所需要的 library, 如果是純文字模式, 那你可能就需要先安裝環境套見到你的電腦中.

# jupyter
!pip install yfinance

# terminal mode
pip install yfinance
# or, maybe 如果你的環境中有 python2 與 3 的時候 就會分 pip 與 pip3 兩種指令
pip3 install yfinance

# 其實我們還需要另外兩個 library
# numpy 與 pandas, 只是通常我們的環境內都有, 所以沒有特別提出來

首先我們先小試一下抓取資料

以下就是我們試著抓取美國 Tesla 股價的一小段程式碼

import numpy as np
import pandas as pd

import yfinance as yf

my_data = yf.download('TSLA', start='2025-01-02', end='2025-07-02')
print(my_data.info)

以上存檔執行後你就會看到類似以下畫面的結果, 當然這邊僅顯示一部分而已, 這僅是示意圖

            Close.      High        Low         Open        Volume
Date                                                                 
2025-01-02  379.279999  392.730011  373.040009  390.100006  109710700
2025-01-03  410.440002  411.880005  379.450012  381.480011   95423300
2025-01-06  411.049988  426.429993  401.700012  423.200012   85516500
2025-01-07  394.359985  414.329987  390.000000  405.829987   75699500
2025-01-08  394.940002  402.500000  387.399994  392.950012   73038800
...                ...         ...         ...         ...        ...
2025-06-25  327.549988  343.000000  320.399994  342.700012  119845100
2025-06-26  325.779999  331.049988  323.609985  324.609985   80440900
2025-06-27  323.630005  329.339996  317.500000  324.510010   89067000
2025-06-30  317.660004  325.579987  316.600006  319.899994   76695100
2025-07-01  300.709991  305.890015  293.209991  298.459991  145085700

[123 rows x 5 columns]>

這邊的程式碼有一段關鍵, 那就是 yf.download(‘TSLA’, start=’2025-01-02′, end=’2025-07-02′)
TSLA 這是股價代號, 這個代號要怎麼查呢? 各位可以到 yahoo finance 的網站去查看, 搜尋到你要抓取的股票資訊後, 你可以查看網址列就會發現他的代號是多少了, 未來我再準備一篇查詢教學 building !!
那麼後面那兩個參數就是一個是開始日期, 一個是結束日期. 應該很容易理解.

以下就是執行出來的結果

最後我將 source code 列出如下, 歡迎大家拿去改喔!!!

# For data manipulation
from datetime import datetime

import numpy as np
import pandas as pd

# To fetch financial data
import yfinance as yf

# For visualisation
import matplotlib.pyplot as plt
#print(plt.style.available)
#exit(0)
#plt.style.use('seaborn-darkgrid')
#plt.style.use('seaborn-v0_8-darkgrid')

# Set the ticker as 'EURUSD=X'
endToday = datetime.today().strftime('%Y-%m-%d')
#forex_data = yf.download('EURUSD=X', start='2025-01-02', end='2021-12-31')
#forex_data = yf.download('EURUSD=X', start='2025-01-02', end=endToday)
forex_data = yf.download('TSLA', start='2025-01-02', end=endToday)
#forex_data = yf.download('TSLA', start='2025-01-02', end='2025-07-02')


print(forex_data.info)
#exit(0)
# Set the index to a datetime object
forex_data.index = pd.to_datetime(forex_data.index)

# Display the last five rows
#forex_data.tail()

# Plot the close price
plt.figure(figsize=(15, 7))
#forex_data['Adj Close'].plot()

# 就是這一行讓繪圖先出現, 之後再呼叫 show 就出現一個空白的
#forex_data['Close'].plot()
plt.plot(forex_data['Close'])

# Set the title and axis label
plt.title('Tesla Data', fontsize=16)
plt.xlabel('Year-Month', fontsize=12)
plt.ylabel('Price', fontsize=12)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.legend(['Close'], prop={'size': 12})

# Show the plot
plt.show()

You may also like

Leave a Comment