Python量化的关键是金融数据可视化,无论是传统的K线图,还是现在的策略分析,都需要大量的可视化图表。具体到编程代码,就是使用Python绘图模块库绘图,比如传统的Python绘图模块库有Matplotlib,Seaborn等。

对于股票和财经的金融数据源,可以使用Tushare库来获取和分析股票财经数据,我们获得财经数据源后,就可以使用Pandas对金融数据的各种指标进行定制化的分析了,最后让数据可视化,可以使用Matplotlib来绘制出美观大方的金融图形,为企业的决策提供便利。金融绘图的主要步骤如下:

获得股票数据源

Tushare是一个免费、开源的Python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python 的Pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是Pandas的 DataFrame类型,非常便于用Pandas,NumPy和Matplotlib进行数据分析和可视化。

Tushare的官网地址

http://tushare.org

在Tushare中使用的股票代码,可以参考东方财富网提供的股票代码查询页面,如图7-63所示

http://quote.eastmoney.com/stocklist.html

图763股票代码查询页面

使用pip安装Tushare。安装Tushare之前,需要使用pip命令先安装好lxml,requests和bs4模块。

pip install tushare

显示股票历史数据

TuShare里的 get_hist_data()函数用于获取到目前为止3年的历史数据。获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。

参数说明:

  • code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)

  • start:开始日期,格式YYYY-MM-DD

  • end:结束日期,格式YYYY-MM-DD

  • ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D

  • retry_count:当网络异常后重试次数,默认为3

  • pause:重试时停顿秒数,默认为0

返回值说明:

  • date:日期

  • open:开盘价

  • high:最高价

  • close:收盘价

  • low:最低价

  • volume:成交量

  • price_change:价格变动

  • p_change:涨跌幅

  • ma5:5日均价

  • ma10:10日均价

  • ma20:20日均价

  • v_ma5:5日均量

  • v_ma10:10日均量

  • v_ma20:20日均量

  • turnover:换手率[注:指数无此项]

查看编号为600848的股票代码在2018年3月的历史数据,使用Tushare的get_hist_data()返回的是Pandas的DataFrame对象,这个DataFrame对象的columns比较多,在控制台显示不全,所以使用Pandas的to_csv()函数保存到hist_data.csv文件中。

import tushare as tsdata = ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')data.to_csv('hist_data.csv' )

运行脚本,已记事本打开hist_data.csv文件。

我们查看hist_data.csv文件会发现,编号为600848的股票代码在2018年3月的历史交易数据是按照交易日期降序排列的。但展示在折线图上的的日期一般要按升序排列。所以还要对DataFrame对象的index属性进行排序。使用Pandas的DataFrame对象的sort_index()函数,使交易日期按照从小到到大的升序排列。这样画出的折线图就符合人们查看历史交易数据的正常习惯了,完整代码如下。

import tushare as ts

data = ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')# 对交易时间进行降序排列data = data.sort_index()data.to_csv('hist_data.csv' )

获得编号为600848的股票代码在2018年3月的历史交易数据后,就可以使用Maplotlib画出股票历史数据的折线图,折线图的横坐标是股票历史数据的交易日期,纵坐标是股票交易数据的开盘价(open)。

import tushare as tsimport matplotlib.pyplot as pltfrom datetime import datetime

data = ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')# 对时间进行降序排列data = data.sort_index()

xs = [datetime.strptime(d, '%Y-%m-%d').toordinal() for d in data.index ]plt.plot_date( xs , data['open'] , 'b-')plt.gcf().autofmt_xdate()  # 自动旋转日期标记plt.show()

运行脚本输出以下图形。

以上代码的核心代码如下,使用Tushare的get_hist_data()函数返回股票交易代码的股票历史数据,也就是Pandas的DataFrame对象data,data.index索引值是日期型字符串,使用Matplotlib的plot_date()画图函数,需要转换成函数可以识别的Gregoian Calendar类型数据。

xs = [datetime.strptime(d, '%Y-%m-%d').toordinal() for d in data.index ]

以上表达式语句等同于以下语句。

xs = []for date in data.index:    print( date )    transDate = datetime.strptime( date , '%Y-%m-%d')    xs.append( transDate.toordinal())

绘制折线图的X 轴的日期也可以使用matplotlib.dates.strpdate2num()函数进行转换,完整代码如下。

import tushare as tsimport matplotlib.pyplot as pltimport matplotlib.dates as mdates

data = ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')# 对时间进行降序排列data = data.sort_index()

xs = [mdates.strpdate2num('%Y-%m-%d')(d ) for d in data.index ]

plt.plot_date( xs , data['open'] , 'b-')plt.gcf().autofmt_xdate()  # 自动旋转日期标记plt.show()

运行脚本输出以下图形。

获取60分钟k线数据。

import tushare as tsimport matplotlib.pyplot as pltimport matplotlib.dates as mdates

data = ts.get_hist_data('600848', ktype='60')xs = [mdates.strpdate2num('%Y-%m-%d %H:%M:%S')(d ) for d in data.index ]

#设置时间标签显示格式ax = plt.gca()ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M:%S'))

plt.plot_date(xs, data['open'],'-' , label='open')plt.legend(loc=0  )

plt.gcf().autofmt_xdate()plt.show()

运行脚本输出以下图形。

图768编号为600848的股票代码的60分钟内的k线图

留言回复你用Python做过哪些有趣的应用,我们会在留言中随机抽取一位读者免费送出北京大学出版社出版的《Python 3 数据分析与机器学习实战》图书一本。

热 门 推 荐
用Python创建微信机器人

用Python机器人监听微信群聊

用Python获取摄像头并实时控制人脸

开源项目 | 用Python美化LeetCode仓库

推荐Python中文社区旗下的几个服务类公众号
征稿启事 | Python中文社区有奖征文

文章节选自北京大学出版社出版的《Python 3 数据分析与机器学习实战》,本书现在5折优惠,点击阅读原文购书~

用 Python 进行金融数据可视化相关推荐

  1. python 金融可视化_用 Python 进行金融数据可视化

    Python量化的关键是金融数据可视化,不管是传统的K线图,仍是如今的策略分析,都须要大量的可视化图表.具体到编程代码,就是使用Python绘图模块库绘图,好比传统的Python绘图模块库有Matpl ...

  2. python量化投资必背代码-量化投资:用Python实现金融数据的获取与整理

    小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的.本文以优矿网为例,带领大家用Python实现金融数据的获取与整理. 本文选自<Python与量化投资:从基础到实战> ...

  3. 【Python】Pyecharts数据可视化模块练习

    python:Pyecharts数据可视化模块练习 # -*- coding: utf-8 -*- """ Created on Sun Aug 5 22:16:09 2 ...

  4. Py之pyecharts:python包之数据可视化包pyecharts简介、安装、使用方法之详细攻略

    Py之pyecharts:python包之数据可视化包pyecharts简介.安装.使用方法之详细攻略 目录 pyecharts简介 pyecharts的安装 pyecharts的使用方法 1.图形绘 ...

  5. python基于web可视化_独家 | 基于Python实现交互式数据可视化的工具(用于Web)

    转自:数据派ID:datapi 作者:Alark Joshi 翻译:陈雨琳 校对:吴金笛 本文2200字,建议阅读8分钟. 本文将介绍实现数据可视化的软件包. 这学期(2018学年春季学期)我教授了一 ...

  6. python交互式数据可视化_基于Python实现交互式数据可视化的工具,你用过几种?...

    作者:Alark Joshi 翻译:陈雨琳 来源:数据派THU(ID:DatapiTHU) 我教授了一门关于数据可视化的数据科学硕士课程.我们的数据科学硕士项目是一个为期15个月的强化项目,这个项目已 ...

  7. 量化金融投资及其python应用_量化投资:用Python实现金融数据的获取与整理

    小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的.本文以优矿网为例,带领大家用Python实现金融数据的获取与整理. 本文选自<Python与量化投资:从基础到实战> ...

  8. python 爬虫及数据可视化展示

    python 爬虫及数据可视化展示 学了有关python爬虫及数据可视化的知识,想着做一些总结,加强自己的学习成果,也能给各位小伙伴一些小小的启发. 1.做任何事情都要明确自己的目的,想要做什么,打算 ...

  9. Python爬虫以及数据可视化分析

    Python爬虫以及数据可视化分析之Bilibili动漫排行榜信息爬取分析 简书地址:https://www.jianshu.com/u/40ac87350697 简单几步,通过Python对B站番剧 ...

最新文章

  1. DllMain中不当操作导致死锁问题的分析——线程中调用GetModuleFileName、GetModuleHandle等导致死锁
  2. python软件开发-Python
  3. python定义词典_python – 自定义类是一个字典,但初始化没有字典副本?
  4. 使用$.post和$.get向服务器发送请求
  5. oracle如何处理死锁,Oracle死锁处理实例
  6. 【C语言进阶深度学习记录】十九 #pragma使用与分析
  7. 吉利汽车发布澄清公告:并未与百度公司合作生产智能电动车
  8. C++安全方向(三)3.4 使用哈希列表验证文件的完整性
  9. 找出单身狗java_Java单身狗 —— 单例模式
  10. python globals()
  11. 深度学习框架间互操作的工具:MMdnn
  12. python分布式爬虫_python-分布式爬虫
  13. php做图书管理系统绪论,基于PHP图书管理系统的设计与实现本科毕业论文
  14. 综合集团如何利用oa系统实现协同办公
  15. RDP服务针对性攻击、钓鱼邮件攻击和勒索病毒家族Phobos研究
  16. R Error: BiocParallel errors 1 remote errors, element index: 1 506 unevaluated and other errors解决办法
  17. Linux – cp: omitting directory 复制文件失败
  18. 读《黄自元间架结构九十二法》
  19. 好玩的Python-摩斯码发报机
  20. vue中实现简单答题卡,问卷调查逻辑(单选,多选,简答);

热门文章

  1. 筑基期第一式:SpringMVC源码解析
  2. 大数据——把Kafka中的数据传输到HBase中
  3. transformers的beam_search
  4. QQmail安装例子
  5. 神奇的CSS用法之border-radius
  6. 中国黑色金属行业产量需求与十四五战略规划报告2022版
  7. cookie、seesionStorage、localStoreg的区别
  8. Linux下Web服务器开发
  9. 杰理之使用 mic_rec_play_start()测试 mic 无声的解决方法【篇】
  10. FFmpeg命令行工具系列二---转码流程及过滤器