使用Python的pandas模块、mplfinance模块、matplotlib模块绘制K线图
pandas模块、mplfinance模块和matplotlib模块介绍
pandas模块
pandas为解决数据分析任务而创建,纳入了大量的库和一些标准的数据模型,简而言之,它提供了很多数据处理的方法,此文就是借用它来生成DataFrame格式的数据。
mplfinance模块和matplotlib模块
mplfinance是专用于金融数据的可视化分析模块,是基于matplotlib的实用模块程序,而matplotlib模块是python绘图领域使用最广泛的套件。简而言之,python想使用可视化,就可以使用matplotlib,想在可视化里面绘制金融方面的图标,就可以使用mplfinance。
安装mplfinance模块、pandas模块和matplotlib模块
可以使用Python包管理也就是pip来进行安装,在cmd命令行中输入 pip install mplfinance后,系统将自动安装完成。如下图:
然后依次安装Pandas模块和matplotlib模块, pip install Pandas pip install matplotlib
当然,在模块安装过程中会因为网络问题导致失败,多次尝试后仍然失败,可以更换pip源为国内镜像。
处理股票数据
该文处理的数据为一个包含股票数据的json格式文件。由于我们要使用mplfinance.plot()函数绘制K线图,而该函数就只接收pandas.DataFrame格式的数据,所以需要将json格式文件数据转换为pandas.DataFrame格式数据。
# k线图数据处理
# 读取json文件,获取数据
df = pd.read_json('AAPL.json', orient='index')
# 删除无效数据数据
for index, row in df.iterrows():
if(isnot_float(row['Open'])):
df.drop(index, inplace=True)
# 调整数据顺序
df = df.iloc[::-1]
# 设置索引
df.set_index(['Date'], inplace=True)
# 将数据列转换为float,因为json字符串存在坏数据,所以读取的时候,所有列默认为字符串了。
df = df.apply(pd.to_numeric, errors='ignore')
处理前的json数据格式如下图:

处理后的DataFrame数据格式:

设置图像大小
# 绘图
# 自定义一个10*8的画布
fig = plt.figure(figsize=(12, 8))
# 对画布划分,显示在1行*1列的第一块区域,其实也仅有一块区域
ax = fig.add_subplot(1, 1, 1)
加载K线图并设置格式
# 加载K线图
mpf.plot(df, type='candle', ax=ax, style='binance', datetime_format='%Y-%m-%d')
# 设置横轴值为时间格式
ax.xaxis_date()
# 通过tight_layout(),实现子图集铺满
plt.tight_layout()
# 显示
plt.show()
完整代码
import matplotlib.pyplot as plt
import mplfinance as mpf
import pandas as pd
# 用来判断str能否转换为float,用于剔除无效数据
def isnot_float(str):
try:
float(str)
return False
except ValueError:
print(str)
return True
# k线图数据处理
# 读取json文件,获取数据
df = pd.read_json('AAPL.json', orient='index')
# 删除无效数据数据
for index, row in df.iterrows():
if(isnot_float(row['Open'])):
df.drop(index, inplace=True)
# 调整数据顺序
df = df.iloc[::-1]
# 设置索引
df.set_index(['Date'], inplace=True)
# 将数据列转换为float,因为json字符串存在坏数据,所以读取的时候,所有列默认为字符串了。
df = df.apply(pd.to_numeric, errors='ignore')
# 绘图
# 自定义一个10*8的画布
fig = plt.figure(figsize=(12, 8))
# 对画布划分,显示在1行*1列的第一个子图集,其实也仅有一个子图集
ax = fig.add_subplot(1, 1, 1)
# 加载K线图
mpf.plot(df, type='candle', ax=ax, style='binance', datetime_format='%Y-%m-%d')
# 设置横轴值为时间格式
ax.xaxis_date()
# 通过tight_layout(),实现子图集铺满
plt.tight_layout()
# 显示
plt.show()
使用Python的pandas模块、mplfinance模块、matplotlib模块绘制K线图的更多相关文章
- python pandas 画图、显示中文、股票K线图
目录: 1.pandas官方画图链接 2.标记图中数据点 3.画图显示中文 4.画股票K线图 5.matplotlib基本用法 6.format输出 6.format输出例子 eps_range=[0 ...
- 小白学Python(14)——pyecharts 绘制K线图 Kline/Candlestick
Kline-基本示例 from pyecharts import options as opts from pyecharts.charts import Kline data = [ [2320.2 ...
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)
最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...
- windows下python安装Numpy、Scipy、matplotlib模块(转载)
python下载链接 Numpy下载链接 python中Numpy包的安装及使用 Numpy包的安装 准备工作 Python安装 pip安装 将pip所在的文件夹添加到环境变量path路径中 ...
- [python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上
将沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上 原理:python读取前一次处理完的计算5日后涨跌幅输出的csv文件 文件名前加"[paint]" 安照通达信的画图文件和板 ...
- Windows python 安装 nNumpy、Scipy、matplotlib模块
折腾了 很久,总结一些. 首先如果python 是64位,安装32位的numpy ,Scipy,或者matplotlib 模块. 会出现很多问题. 比如当你 在python 导入 Numpy 时,导入 ...
- pandas 生成并排放置的条形图和箱线图
1.代码 import numpy as np import pandas as pd import matplotlib.pyplot as plt # 生成数据,创建 DataFrame np.r ...
- windows下python安装Numpy、Scipy、matplotlib模块
来源http://blog.csdn.net/Katrina_ALi/article/details/64922107 http://blog.csdn.net/qq_16633405/article ...
- 【Python】模块学习之matplotlib柱状图、饼状图、动态图及解决中文显示问题
前言 众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象.而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用 ...
随机推荐
- python并发编程——多线程
编程的乐趣在于让程序越来越快,这里将给大家介绍一个种加快程序运行的的编程方式--多线程 1 著名的全局解释锁(GIL) 说起python并发编程,就不得不说著名的全局解释锁(GIL)了.有兴趣的同 ...
- 常用Appium API
以最右App为例 .apk文件网盘地址: 链接:https://pan.baidu.com/s/1L4MYkhpb5ECe8XeaneTx_Q 提取码:0jqm 操作类API # -*- coding ...
- 160个Crackerme破解
001: 第一个破解: 有两种登陆方式:序列号/名字和序列号,观察报错信息 两个报错信息,直接中文搜索字符: 第一种登陆方式报错为:sorry,xx 右键中文字符搜索,ctrl+f输入要搜索的字符,这 ...
- 记git提交异常
描述:git项目工作目录和idea空间配置不一致导致git提交了其他项目至gitlab 项目a的工作目录设置为为a的父目录.提交时将目录下的 b项目提交至git 且提交时显示内容与实际提交不符 工作电 ...
- eclipse再见,android studio 新手入门教程(一)基本设置
写在前面: 作为一个刚半只脚踏入android开发的新手,在使用eclipse开发了两个自我感觉不甚成熟的商城类app之后,遇到了一些问题,总结为如下: 代码复用性.findviewById,oncl ...
- 在jsp页面嵌入java代码让某些div显示或者隐藏
<!--监测评价人显示评价人信息 --> <% if("D3".equals(role_flag)){%> <div id="crud&qu ...
- java中产品分类返回给前台页面 后台数据组装
public ResultBean getSpfl(Integer yyb) { ResultBean res = new ResultBean(); try { JSONArray data = n ...
- jdbc编程学习之增删改查(2)
一,enum类型的使用 在SQL中没有布尔类型的数据,我们都使用过布尔类型,当属性的值只用两种情况时.例如性别等.那在数据库对这些属性的值个数比较少时我们应该使用什么数据类型呢?SQL给我们提供了枚举 ...
- HTML中,大小不确定图片的水平垂直居中
html: css: div{ width:400px;height:300px;text-align:center;font-size:0;*font-size:200px;} div:after{ ...
- Amazing 2020
Amazing 2020 Intro 2020 转眼即逝,2020 是比较艰辛的一年,因为疫情原因,很多人的工作以及生活都多多少少受到了一些影响. 引用网上盛传的一句话--2020 实"鼠& ...