使用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的绘图工具包,使用 ...
随机推荐
- 安装篇一:安装VMware12
#1.安装VMware12 前提:安装不了的解决办法(进入BIOS系统,把虚拟化技术那一项修改为enable) 说明:安装流程(自定义安装) #2.网络适配器设置 虚拟网络编 ...
- 【程序包管理】篇章2:rpm程序包来源合法和完整性验正
来源合法性验正: 数字签名 私钥签名完整性 哈希 注意: 1.如果是网站下载的程序包的话,没有公钥,就无法进行来源合法性验证,所以最好使用系统自带的rpm程序包或去可靠的网站下载程序包.[如 ...
- C#中的深度学习(五):在ML.NET中使用预训练模型进行硬币识别
在本系列的最后,我们将介绍另一种方法,即利用一个预先训练好的CNN来解决我们一直在研究的硬币识别问题. 在这里,我们看一下转移学习,调整预定义的CNN,并使用Model Builder训练我们的硬币识 ...
- 微信小程序--关于加快小程序开发的几个小建议
加快小程序开发的几个小建议 1.使用 app.json创建页面 按照我们平常的开发习惯,创建一个新的页面,一般都会先创建文件夹,再创建对应page的形式,创建完成后,app.json中会自动注册该 ...
- SpringBoot进阶教程(六十九)ApplicationContextAware
在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能.为了让Bean获取它所在的 ...
- 如何解决git创建密匙时报错Too many arguments
如题:git创建密匙时报错Too many arguments. 前几天我遇见了一个问题,git需要重新创建密匙,运行命令ssh-keygen -t rsa -b 4096 -C " you ...
- JVM笔记——类加载
1.在java代码中,类型(如class enum interface)的加载.连接.初始化过程都是在程序运行期完成的.这个特性,使得本为静态语言的java,拥有了动态语言的某些特征 加载:查找并加载 ...
- 盘点 Java 开发 2020 年发生的几件大事,你必须得知道!
2021 年了,在过去的一年 Java 软件开发行业都发生了哪些重大事件呢? 这篇栈长带大家回顾一下,其实在元旦的<滚蛋吧,2020>也略有介绍,这篇就更加详细的总结一下. 1.Java ...
- 解决黑群晖"抱歉,您所指定的页面不存在"-记一次黑群晖修复案例
起因 搞了一个usb外接硬盘准备备份数,刚好看到群晖有个工具软件"USB Copy". 安装后设置拷贝docker文件夹,然后就悲剧了,nas主页抛出提示 一开始也是直接网上搜索标 ...
- Linux命令整理,用户管理,用户组管理,系统管理,目录管理常用命令
知识点梳理 Linux课堂笔记 学习目标 能够知道什么是Linux系统以及它的应用场景 能够独立完成安装VMware虚拟机和网络配置 能够独立完成安装CentOS以及远程终端SecureCRT 能够熟 ...