首頁 > 軟體

使用python建立股票的時間序列視覺化分析

2022-03-03 13:01:06

簡單介紹

在分析股票或任何其他投資貨幣工具時,時間序列分析是觀察變數如何隨時間變化的有效方法。這種型別的分析通常需要大量的資料點來確保一致性和可靠性。時間序列分析對於分析股票價格非常有效,尤其是對於自動交易。本篇文章,主要是為初學者做一個簡單介紹與使用。

資料獲取

我們收集雅虎財經的資料,直接使用python的庫,安裝如下:

!pip install yfinance
!pip install plotly
!pip install paddlefsl

安裝好後,我們來獲取亞馬遜的股票,當然你也可以獲取別的公司股票:

import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
today = date.today()
d1 = today.strftime("%Y-%m-%d")
end_date = d1
d2 = date.today() - timedelta(days=720)
d2 = d2.strftime("%Y-%m-%d")
start_date = d2
data = yf.download('AMZN', 
                      start=start_date, 
                      end=end_date, 
                      progress=False)
print(data.head())
# data

如下:

繪製視覺化線圖

顯示了變數價格隨時間的變化,下圖是亞馬遜的收盤價,將遊標放在資料點的確切日期上可以檢視收盤價。

import plotly.express as px
figure = px.line(data, x = data.index, 
                 y = "Close", 
                 title = "Time Series Analysis (Line Plot)")
figure.show()

如下:

繪製蠟太圖

燭臺圖在時間序列分析中非常有用,因為它以醒目的方式呈現開盤價、最高價、最低價和收盤價。紅線表示價格下跌,綠線表示價格上漲

import plotly.graph_objects as go
figure = go.Figure(data=[go.Candlestick(x = data.index,
                                        open = data["Open"], 
                                        high = data["High"],
                                        low = data["Low"], 
                                        close = data["Close"])])
figure.update_layout(title = "時間序列蠟臺圖", 
                     xaxis_rangeslider_visible = False)
figure.show()

如下:

條形圖

上面兩個圖主要是便於觀察上漲下跌,條形圖更加比較適合觀察長期上漲下跌

figure = px.bar(data, x = data.index, 
                y = "Close", 
                title = "時間學列分析" )
figure.show()

如下:

分析特定時間段

分析兩個特定日期之間的股票價格,可以如下實現:

figure = px.line(data, x = data.index, 
                 y = 'Close', 
                 range_x = ['2021-01-31','2021-07-31'], 
                 title = "時間序列分析")
figure.show()

如下:

互動式視覺化

程式碼如下:

figure = go.Figure(data = [go.Candlestick(x = data.index,
                                        open = data["Open"], 
                                        high = data["High"],
                                        low = data["Low"], 
                                        close = data["Close"])])
figure.update_layout(title = "時間序列分析(帶有按鈕和滾軸的燭臺圖)")
figure.update_xaxes(
    rangeslider_visible = True,
    rangeselector = dict(
        buttons = list([
            dict(count = 1, label = "1m", step = "month", stepmode = "backward"),
            dict(count = 6, label = "6m", step = "month", stepmode = "backward"),
            dict(count = 1, label = "YTD", step = "year", stepmode = "todate"),
            dict(count = 1, label = "1y", step = "year", stepmode = "backward"),
            dict(step = "all")
        ])
    )
)
figure.show()

可以點選按鈕,根據自己需要選擇時間範圍:

去試試吧,先介紹到這裡了,補充一下,獲取雅虎資料,可能要開梯子,不讓你獲取會失敗。

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!   


IT145.com E-mail:sddin#qq.com