如何使用python创建股票的时间序列可视化分析?
2023-09-14 09:05:41 时间
简单介绍
在分析股票或任何其他投资货币工具时,时间序列分析是观察变量如何随时间变化的有效方法。这种类型的分析通常需要大量的数据点来确保一致性和可靠性。时间序列分析对于分析股票价格非常有效,尤其是对于自动交易。本篇文章,主要是为初学者做一个简单介绍与使用。
数据获取
我们收集雅虎财经的数据,直接使用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()
可以点击按钮,根据自己需要选择时间范围:
去试试吧,先介绍到这里了,补充一下,获取雅虎数据,可能要开梯子,不让你获取会失败。
相关文章
- 【Python成长之路】从零学GUI -- 制作智能聊天机器人
- python 读取文件时报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 127: illegal multibyte sequence
- python扫描后台地址
- Python 入门(八)切片
- 你没见过的python语法
- 【python cookbook】【数据结构与算法】18.将名称映射到序列的元素中
- 【python cookbook】【数据结构与算法】16.筛选序列中的元素
- 华为OD机试 - 演唱会、计算最多能观看几场演出(Java & JS & Python)
- Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离
- Python带你下载你想看的高质量cartoon,不要太爽~
- python:看我来个代码展示向靓仔打招呼~
- 几行 Python 代码就可以提取数百个时间序列特征
- 如此优雅,4款 Python 自动数据分析神器真香啊
- 【阶段三】Python机器学习33篇:机器学习项目实战:医学病症关联规则分析
- 【华为机试真题 Python实现】二叉树层序遍历(从后序与中序遍历序列构造二叉树)
- 【LeetCode Python实现】673. 最长递增子序列的个数(中等)
- python 同时迭代多个序列
- Python 在序列上跟踪索引和值
- Python: 在序列上执行聚集函数(比如sum() , min() , max() )
- Python: 序列: 过滤序列元素
- python 找出序列中出现次数最多的元素方法
- 【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
- 【Leetcode刷题Python】674. 最长连续递增序列