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

  

1 安装包


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

pip install matplotlib

  
  

2 读取数据文件


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

import os
import 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 将日期列设置为数据框索引


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

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表示绘制图形,以date的索引列为横轴,收盘价为纵轴绘制折线图。
  
plt.show表示在窗口打印这个图。
  
具体结果如下:
  

  

其中,2011、2012、2013等表示年份,5、10、15等表示收盘价。从上图可以看出,该股股价在2011年到2016年呈波动下降的趋势。2017年到2020年的股价波动幅度相较之前会小一些。而且,明显看到有些日期的收盘价为0,这是由于股票一般在工作日开盘,周末休市。所以在绘图时有些日期的收盘价被填充为0。
  
为了图形能更好地反映股票的波动趋势,可以人为对收盘价进行处理,比如以前多少天的平均收盘价当成当天的收盘价,以此来避免0值问题。接着来看方法二,具体代码如下:
  

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中绘制股票趋势图已介绍完毕,大家可以动手练习一下。
  
你可能感兴趣:
用Python绘制皮卡丘
用Python绘制词云图
Python人脸识别—我的眼里只有你
Python画好看的星空图(唯美的背景)
【Python】情人节表白烟花(带声音和文字)
用Python中的py2neo库操作neo4j,搭建关联图谱
Python浪漫表白源码合集(爱心、玫瑰花、照片墙、星空下的告白)

长按(扫一扫)识别上方二维码学习更多Python和建模知识,让你的学习和工作更出彩。

【Python】用matplotlib函数绘制股票趋势图相关推荐

  1. Python学习-Matplotlib库绘制简单点阵图、线型图操作

    Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...

  2. Python绘制股票趋势图

    手里有一点点公司的股票, 拿不准在什么时机抛售, 程序员也没时间天天盯着看,不如动手写个小程序, 把股票趋势每天早上发到邮箱里,用 python 的 pandas, matplotlib 写起来很容易 ...

  3. python的matplotlib库绘制条形图、散点图、饼图、折线图

    python的matplotlib库绘制条形图.散点图.饼图.折线图 当我们学会了爬虫,抓取到了一些数据,接下来就是做数据分析了.本文章介绍绘制图形的基本代码. 打开cmd用pip 安装,若输入pip ...

  4. Python中使用random随机函数与Matplotlib库绘制随机漫步图

    Python中使用random随机函数与Matplotlib库绘制随机漫步图 一.概述 随机现象在我们的生活中并不少见,我们常见的一次抛硬币的正反面,股票的走势等等,都是随机事件.这些不确定性事件给我 ...

  5. python pyqtgraph绘制股票kline图类封装(tcy)

    用途:绘制股票kline图 说明: 绘制基本的股票kline图及相关指标图如ma移动平均线等,绘制其他指标只需传入相关数据及线的颜色即可. 绘制鼠标移动显示交易时间及open,high,low,clo ...

  6. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、为指定的子图添加图例信息(legend)

    Python使用matplotlib函数subplot可视化多个不同颜色的折线图.为指定的子图添加图例信息(legend) 目录

  7. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、在折线图上为每个数据点添加日期数据标签

    Python使用matplotlib函数subplot可视化多个不同颜色的折线图.在折线图上为每个数据点添加日期数据标签 目录

  8. Python使用matplotlib可视化相关性分析热力图图heatmap、使用seaborn中的heatmap函数可视化相关性热力图(Correllogram)

    Python使用matplotlib可视化相关性分析热力图图heatmap.使用seaborn中的heatmap函数可视化相关性热力图(Correllogram) 目录

  9. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、使用set_major_formatter函数自定义设置y轴数值标签格式为百分比

    Python使用matplotlib函数subplot可视化多个不同颜色的折线图.使用set_major_formatter函数自定义设置y轴数值标签格式为百分比 目录

  10. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、在折线图上为每个数据点添加数值标签

    Python使用matplotlib函数subplot可视化多个不同颜色的折线图.在折线图上为每个数据点添加数值标签 目录

最新文章

  1. 利用yum 安装 lamp环境搭载 cacti监控和memcached数据库
  2. 拜托!不要用“ ! = null 做判空了
  3. HDOJ1871 无题
  4. vs2012 智能提示消失解决办法
  5. STM32F103 IAP编程调试记录
  6. java 颜色比较_我该如何比较Java中的颜色?
  7. windows C++ Opengl基础框架源码
  8. RabbitMQ Network Partitions 服务日志对比
  9. MFC透明桌面flash金鱼
  10. vue aplayer 进度条无法拖动_「最近项目小结」使用Vue实现一个简单的鼠标拖拽滚动效果插件...
  11. java numberformat 方法_java.text.NumberFormat用法
  12. mysqlbinlog: unknown variable 'default-character-s
  13. Python单下划线与双下划线
  14. 【新手基础教程】 硬件加速的图像处理
  15. OpenCV摄像头标定
  16. Linux 常用网络命令大全
  17. 职场生涯的3个步骤--法、儒、道家的管理哲学
  18. Scratch编程——跳一跳
  19. 大学生微信小程序项目总结
  20. 手机通话记录重复显示怎么处理_华为出现重复联系人 - 卡饭网

热门文章

  1. 计算机软件系统故障的分类,系统故障
  2. 启动Elasticsearch时:[failed to obtain node locks]
  3. TCP SYN洪水 (SYN Flood) 攻击原理与实现
  4. 随机存储器:SRAM、DRAM、SDRAM的区别
  5. 服务器的正向代理与反向代理
  6. 移动硬盘突然断电导致坏道产生
  7. 程序员到CTO的Java技术路线图
  8. 复合隐写/图片混合/图片格式头修改-西伯利亚大尾巴狼
  9. 互联网酒店预订系统的业务流程图-2
  10. Mac小技巧:五秒学会Mac电脑旋转屏幕