在Python中用matplotlib函数绘制股票走势图
我们经常在电视上看到股票走势图,今天就给大家分享一下如何用Python绘制这样的图表。
本文目录
安装包读取数据文件,设置日期列为数据框索引绘制股票走势图
1个安装包
首先在cmd中安装绘图需要的matplotlib包,输入如下语句进行安装。
pip install matplotlib
复制
2 读取数据文件
然后设置文件的存放目录,读取股票数据。
import osimport pandas as pd
os.chdir(r'F:\公众号\6.学习python') #设置成存放数据文件夹路径date = pd.read_csv("股票数据.csv", encoding = 'GBK') #读取数据
复制
注:如需文中数据练习,可在公众号回复“股票数据波动”免费获取。
由于文件标题是中文,直接读取会报错,所以加上编码代码声明。 一般设置编码为GBK、utf-8、GB2312即可满足阅读要求。
日期前5行打印结果如下:
3 将日期列设置为数据框索引
然后将数据框中的日期设置为索引,并将索引中的日期转换为时间格式。 方便按照未来日期计算波动。
date = date.set_index('日期') #把日期列设置为索引date.index = pd.to_datetime(date.index) #把索引中的日期转成时间格式date.head(5)
复制
结果如下:
4 绘制股票走势图
可以以时间为横轴,以每日收盘价或处理后的收盘价为纵轴绘制折线图,可以作为股票走势图。
先看方法一:直接画一个以原收盘价为纵轴的折线图。 具体代码如下:
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的意思是绘制图表,以日期指数列为横轴,收盘价为纵轴绘制折线图。
plt.show 表示在窗口中打印图形。
具体结果如下:
其中2011、2012、2013等表示年份,5、10、15等表示收盘价。
从上图可以看出,该股股价在2011-2016年呈震荡下行趋势,2017-2020年股价波动幅度会比之前小。
此外,很明显有些日子的收盘价为 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。
结果如下:
从这张图可以发现,与上一张图相比,更能反映股价走势,即2011年到2020年股价整体有所下降。
可能还有同学会说时间越近越能反映当前股价走势,而前几天的平均值作为当前值可能会掩盖一些股价走势。
可以对离当前日期较近的日期的股价赋予较大的权重,对较远的日期的股价赋予较小的权重来绘制图形。 具体代码如下:
plt.plot(date['收盘价'].ewm(span = 30).mean())
复制
其中.ewm(span = 30).mean())表示时间跨度为30,越接近当前日期赋予的权重越高,并将这个加权平均作为当前值进行绘制。
结果如下:
可以发现,取加权平均会比直接取平均波动更大,更符合我们的常识。
至此,用Python绘制股票走势图就介绍完了,大家可以自己动手练习