如何使用python创建股票的时间序列可视化分析?

网友投稿 566 2022-05-28

简单介绍

在分析股票或任何其他投资货币工具时,时间序列分析是观察变量如何随时间变化的有效方法。这种类型的分析通常需要大量的数据点来确保一致性和可靠性。时间序列分析对于分析股票价格非常有效,尤其是对于自动交易。本篇文章,主要是为初学者做一个简单介绍与使用。

数据获取

我们收集雅虎财经的数据,直接使用python的库,安装如下:

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

1

2

3

安装好后,我们来获取亚马逊的股票,当然你也可以获取别的公司股票:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

如下:

绘制可视化线图

显示了变量价格随时间的变化,下图是亚马逊的收盘价,将光标放在数据点的确切日期上可以查看收盘价。

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

1

2

3

如何使用python创建股票的时间序列可视化分析?

4

5

如下:

绘制蜡太图

烛台图在时间序列分析中非常有用,因为它以醒目的方式呈现开盘价、最高价、最低价和收盘价。红线表示价格下跌,绿线表示价格上涨

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()

1

2

3

4

5

6

7

8

9

如下:

条形图

上面两个图主要是便于观察上涨下跌,条形图更加比较适合观察长期上涨下跌

figure = px.bar(data, x = data.index, y = "Close", title = "时间学列分析" ) figure.show()

1

2

3

4

如下:

分析特定时间段

分析两个特定日期之间的股票价格,可以如下实现:

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

1

2

3

4

5

如下:

交互式可视化

代码如下:

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()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

可以点击按钮,根据自己需要选择时间范围:

去试试吧,先介绍到这里了,补充一下,获取雅虎数据,可能要开梯子,不让你获取会失败。

Python

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Kafka CPU高排查思路
下一篇:两天速成emwin教程集合
相关文章