主页 > imtoken > 在Python中用matplotlib函数绘制股票走势图

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

imtoken 2023-09-20 05:13:25

我们经常在电视上看到股票走势图,今天就给大家分享一下如何用Python绘制这样的图表。

本文目录

安装包读取数据文件,设置日期列为数据框索引绘制股票走势图

1个安装包

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

pip install matplotlib

复制

2 读取数据文件

比特币2016年价格走势_比特币走势_比特币股票走势图

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

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

复制

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

由于文件标题是中文,直接读取会报错,所以加上编码代码声明。 一般设置编码为GBK、utf-8、GB2312即可满足阅读要求。

日期前5行打印结果如下:

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

比特币2016年价格走势_比特币走势_比特币股票走势图

然后将数据框中的日期设置为索引,并将索引中的日期转换为时间格式。 方便按照未来日期计算波动。

date = date.set_index('日期')            #把日期列设置为索引date.index = pd.to_datetime(date.index)  #把索引中的日期转成时间格式date.head(5)

复制

结果如下:

4 绘制股票走势图

可以以时间为横轴,以每日收盘价或处理后的收盘价为纵轴绘制折线图,​​可以作为股票走势图。

先看方法一:直接画一个以原收盘价为纵轴的折线图。 具体代码如下:

import matplotlib.pyplot as plt

比特币股票走势图_比特币2016年价格走势_比特币走势

plt.figure(figsize = (8, 4), dpi = 100) #图片尺寸(8, 4)plt.plot(date['收盘价'])plt.show()

复制

其中plt.figure表示设置一个图形区域的大小为(8, 4),分辨率(dpi)为100比特币股票走势图,一般dpi值越小,图像越清晰。

plt.plot的意思是绘制图表,以日期指数列为横轴,收盘价为纵轴绘制折线图。

plt.show 表示在窗口中打印图形。

具体结果如下:

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

从上图可以看出,该股股价在2011-2016年呈震荡下行趋势,2017-2020年股价波动幅度会比之前小。

比特币走势_比特币2016年价格走势_比特币股票走势图

此外,很明显有些日子的收盘价为 0,因为股票通常在工作日开市比特币股票走势图,周末休市。 所以一些日期在绘图时收盘价用 0 填充。

为了更好地反映股票的波动趋势,可以对收盘价进行人为处理,比如将前几天的平均收盘价作为当日的收盘价,从而避免零值问题。

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

plt.plot(date['收盘价'].rolling(50, min_periods=2).mean())

复制

其中.rolling(50, min_periods=2).mean()表示将前50天收盘价的平均值作为当日收盘价。

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

结果如下:

比特币2016年价格走势_比特币股票走势图_比特币走势

从这张图可以发现,与上一张图相比,更能反映股价走势,即2011年到2020年股价整体有所下降。

可能还有同学会说时间越近越能反映当前股价走势,而前几天的平均值作为当前值可能会掩盖一些股价走势。

可以对离当前日期较近的日期的股价赋予较大的权重,对较远的日期的股价赋予较小的权重来绘制图形。 具体代码如下:

plt.plot(date['收盘价'].ewm(span = 30).mean())

复制

其中.ewm(span = 30).mean())表示时间跨度为30,越接近当前日期赋予的权重越高,并将这个加权平均作为当前值进行绘制。

结果如下:

可以发现,取加权平均会比直接取平均波动更大,更符合我们的常识。

至此,用Python绘制股票走势图就介绍完了,大家可以自己动手练习