前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Python中用matplotlib函数绘制股票趋势图

在Python中用matplotlib函数绘制股票趋势图

作者头像
阿黎逸阳
发布2021-01-07 17:39:54
4.5K0
发布2021-01-07 17:39:54
举报
文章被收录于专栏:阿黎逸阳的代码

我们经常在电视上看到股票趋势图,今天跟大家分享怎么用Python绘制这种图。

本文目录

  1. 安装包
  2. 读取数据文件
  3. 将日期列设置为数据框索引
  4. 绘制股票趋势图

1 安装包

首先要在cmd中安装绘图需要的matplotlib包,输入如下语句即可安装。

代码语言:javascript
复制
pip install matplotlib

2 读取数据文件

接着设置文件的存放目录,读取股票数据。

代码语言:javascript
复制
import osimport pandas as pd
os.chdir(r'F:\公众号\6.学习python')   #设置成存放数据文件夹路径date = pd.read_csv("股票数据.csv", encoding = 'GBK')    #读取数据

注:如需文中数据进行练习,可到公众号中回复“股票数据波动”即可免费获取。

由于文件标题是中文,直接读取会报错,所以加了encoding编码申明。一般encoding设置成GBK、utf-8、GB2312即可满足读取需求。

打印date前5行结果如下:

3 将日期列设置为数据框索引

然后把数据框中的日期设置为索引,并把索引中的日期转成时间格式。方便后续根据日期计算波动情况。

代码语言:javascript
复制
date = date.set_index('日期')            #把日期列设置为索引date.index = pd.to_datetime(date.index)  #把索引中的日期转成时间格式date.head(5)

得到结果如下:

4 绘制股票趋势图

可以把时间作为横轴,每天的收盘价或处理后的收盘价作为纵轴绘制折线图,以此当成股票趋势图。

先来看方法一:直接以原始收盘价作为纵轴绘制折线图,具体代码如下:

代码语言:javascript
复制
import matplotlib.pyplot as plt
plt.figure(figsize = (8, 4), dpi = 100)   #图片尺寸(8, 4)plt.plot(date['收盘价'])plt.show()

其中,plt.figure表示设置一个图形区域尺寸为(8, 4),分辨率(dpi)为100,一般dpi数值越小图像越清晰。

plt.plot表示绘制图形,以date的索引列为横轴,收盘价为纵轴绘制折线图。

plt.show表示在窗口打印这个图。

具体结果如下:

其中,2011、2012、2013等表示年份,5、10、15等表示收盘价。

从上图可以看出,该股股价在2011年到2016年呈波动下降的趋势。2017年到2020年的股价波动幅度相较之前会小一些。

而且,明显看到有些日期的收盘价为0,这是由于股票一般在工作日开盘,周末休市。所以在绘图时有些日期的收盘价被填充为0。

为了图形能更好地反映股票的波动趋势,可以人为对收盘价进行处理,比如以前多少天的平均收盘价当成当天的收盘价,以此来避免0值问题。

接着来看方法二,具体代码如下:

代码语言:javascript
复制
plt.plot(date['收盘价'].rolling(50, min_periods=2).mean())

其中.rolling(50, min_periods=2).mean()表示以前50天收盘价的均值当成当天的收盘价。

min_periods = 2表示当时间窗口不够50时,每个窗口最少包含的观测值数量为2,小于2的窗口结果为NaN。

得到结果如下:

从这个图可以发现,相比上一个图更能体现股价的趋势,即从2011年到2020年整体股价是下降的。

有些同学还可能说,时间越近越能体现当前股价的趋势,以前多少天的平均值作为当前值可能掩盖一些股价趋势。

可以让离当前日期越近日期的股价赋予更大的权重,越远日期的股价赋予较小的权重,以此来绘图,具体代码如下:

代码语言:javascript
复制
plt.plot(date['收盘价'].ewm(span = 30).mean())

其中,.ewm(span = 30).mean())表示时间跨度为30,离当前日期越近赋予更高的权重,把这个加权平均值当成当前值绘图。

得到结果如下:

可以发现,以加权平均值绘图会比直接以平均值绘图波动性大一点,更符合我们的常识。

至此,在Python中绘制股票趋势图已介绍完毕,大家可以动手练习一下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档