该系列视频已经搬运至bilibili: 点击查看

欢迎来到Python for Finance教程系列的第4部分。在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采样和其他一些数据可视化概念。

名为烛台图的OHLC图表是一种将开盘价Open,最高价High,最低价Low和收盘价Close数据全部集中在一个很好的格式中的图表。另外,它使得漂亮的颜色,并记住我告诉你关于美观的图表?

在之前的教程中已经涉及到了这一点:

import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import style
import pandas as pd
import pandas_datareader.data as web
style.use('ggplot') df = pd.read_csv('tsla.csv', parse_dates=True, index_col=0)

不幸的是,即使创建OHLC数据,直接从Pandas制作烛台图也不是内置的。未来我确信这个图表类型将会被提供,但现在不是。没关系,we can make it!首先,我们需要import两个新的库:

from matplotlib.finance import candlestick_ohlc
import matplotlib.dates as mdates

第一个导入是来自matplotlib的OHLC图形类型,第二个导入是特殊的mdates类型,它大多只是一个屁股疼痛,但这是matplotlib图形的日期类型。pandas会自动为你处理,但就像我说的那样,我们没有烛台的奢侈品。

首先,我们需要适当的OHLC数据。我们目前的数据确实有OHLC的价值,除非我错了,特斯拉从来没有分裂过,但是你永远不会这么幸运。因此,我们将创建我们自己的OHLC数据,这也将允许我们展示另一个来自Pandas的数据转换:

df_ohlc = df['Adj Close'].resample('10D').ohlc()

我们在这里所做的是创建一个基于df ['Adj Close']列的新数据框,重新封装10天的窗口,并且重采样是一个ohlc(开高低关闭)。我们也可以用.mean()或.sum()做10天的平均值或10天的总和。请记住,这10天的平均值是10天的平均值,而不是平均值。由于我们的数据是每日数据,因此将其重新采样为10天的数据会显着缩小数据的大小。这是你可以如何规范化多个数据集。有时,您可能会在每个月的一个月中记录一次每月记录的数据,每个月末记录的其他数据,以及最终每周记录一些数据。您可以每个月对该数据帧重新采样到月末,并有效地将其标准化!如果你喜欢的话,这是更高级的熊猫功能,你可以从熊猫系列中了解更多。

我们想要绘制烛台数据以及体积数据。我们不必重新采样数据,但我们应该,因为它与我们的10D定价数据相比太细致。

df_volume = df['Volume'].resample('10D').sum()

我们在这里使用金额,因为我们确实想知道在这10天内交易的总量,但您也可以使用平均值。现在如果我们这样做:

print(df_ohlc.head())

我们得到:

                 open       high        low      close
Date
2010-06-29 23.889999 23.889999 15.800000 17.459999
2010-07-09 17.400000 20.639999 17.049999 20.639999
2010-07-19 21.910000 21.910000 20.219999 20.719999
2010-07-29 20.350000 21.950001 19.590000 19.590000
2010-08-08 19.600000 19.600000 17.600000 19.150000

这是预期的,但是,我们现在要将这些信息移动到matplotlib中,并将日期转换为mdates版本。由于我们只是要在Matplotlib中绘制列,所以我们实际上不希望日期成为索引,所以我们可以这样做:

df_ohlc = df_ohlc.reset_index()

现在的日期只是一个普通的专栏。接下来,我们要转换它:

df_ohlc ['Date'] = df_ohlc ['Date']。map(mdates.date2num)

现在我们要设置这个数字:

fig = plt.figure()
ax1 = plt.subplot2grid((6,1),(0,0),rowspan = 5,colspan = 1)
ax2 = plt.subplot2grid((6,1),(5,0),rowspan = 1,colspan = 1,sharex = ax1)
ax1.xaxis_date()

除了ax1.xaxis_date()之外,您已经看到过的所有内容。这对我们来说就是将轴从原始的生成号码转换为日期。

现在我们可以绘制烛台图:

candlestick_ohlc(ax1,df_ohlc.values,width = 2,colorup ='g')

然后做量:

ax2.fill_between(df_volume.index.map(mdates.date2num),df_volume.values,0)

fill_between函数将绘制x,y,然后填充/之间的内容。在我们的例子中,我们选择0。

plt.show()

完整代码:

import datetime as dt
import matplotlib.pyplot as plt
from matplotlib import style
from matplotlib.finance import candlestick_ohlc
import matplotlib.dates as mdates
import pandas as pd
import pandas_datareader.data as web
style.use('ggplot') df = pd.read_csv('tsla.csv', parse_dates=True, index_col=0) df_ohlc = df['Adj Close'].resample('10D').ohlc()
df_volume = df['Volume'].resample('10D').sum() df_ohlc.reset_index(inplace=True)
df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num) ax1 = plt.subplot2grid((6,1), (0,0), rowspan=5, colspan=1)
ax2 = plt.subplot2grid((6,1), (5,0), rowspan=1, colspan=1, sharex=ax1)
ax1.xaxis_date() candlestick_ohlc(ax1, df_ohlc.values, width=5, colorup='g')
ax2.fill_between(df_volume.index.map(mdates.date2num), df_volume.values, 0)
plt.show()

在接下来的几个教程中,我们将留下可视化位,稍微讨论一下获取数据和处理数据。

下一篇教程:Python股票分析系列——自动获取标普500股票列表.p5

Python股票分析系列——基础股票数据操作(二).p4的更多相关文章

  1. Python股票分析系列——基础股票数据操作(一).p3

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第3部分.在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化.我们将要使用 ...

  2. Python股票分析系列——数据整理和绘制.p2

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第2部分. 在本教程中,我们将利用我们的股票数据进一步分解一些基本的数据操作和可视化. 我们将要 ...

  3. Python股票分析系列——系列介绍和获取股票数据.p1

    本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...

  4. python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据

    python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...

  5. Python股票分析系列——自动获取标普500股票列表.p5

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第5部分.在本教程和接下来的几节中,我们将着手研究如何为更多公司提供大量的定价信息,以及如何一次 ...

  6. GIS基础软件及操作(二)

    原文 GIS基础软件及操作(二) 练习二.管理地理空间数据库 1.利用ArcCatalog 管理地理空间数据库 2.在ArcMap中编辑属性数据 第1步 启动 ArcCatalog 打开一个地理数据库 ...

  7. SQLite基础-5.数据操作语言

    目录 一.添加数据(insert) 二.查询数据(select) 三.更新数据(update) 三. 删除数据(delete) 一.添加数据(insert) INSERT INTO 用于向数据库的某个 ...

  8. 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)

    1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...

  9. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作(二)

    CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...

随机推荐

  1. 初学ubuntu命令

    将我第一天学的内容做个笔记 ,方便日后查看 命令的使用: ls     ls -a 显示所有文件  ls -l 显示文件的所有信息 cp   注意命令格式  /home/../temp/a   /ho ...

  2. sql server 计算两个时间 相差的 几天几时几分几秒

    CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR ) + '天 ...

  3. Android Studio插件GsonFormat

    GsonFormat插件用于在androidStudio 根据json自动生成class的字段和方法,极大提高了开发效率 一.安装GsonFormat插件 二.重启Android Studio,新建一 ...

  4. win10安装nodejs遇到提示错误代码2503怎么办

    我们在安装某个软件的时候,最闹心的就是遇到提示安装失败或错误,比如win10系统在安装nodejs遇到提示错误代码2503,遇见这个问题也不要慌张,今天小编就来告诉大家怎么解决这个问题. 1.打开智能 ...

  5. 4.11Python数据处理篇之Matplotlib系列(十一)---图例,网格,背景的设置

    目录 目录 前言 (一)图例legend 1.默认不带参数的图例 2.添加参数的图例 3.将图例移动到框外 (二)网格grid 1.说明 2.源代码: 3.输出效果 (三)背景axses 1.设置全局 ...

  6. ubantu下安装pip,python,pycharm,numpy,scipy,matplotlibm,pandas 以及sklearn

    ubuntu 安装 pip 及 pip 常用命令: https://blog.csdn.net/danielpei1222/article/details/62969815 ubuntu下不同版本py ...

  7. LeetCode算法题-Intersection of Two Arrays(Java实现-四种解法)

    这是悦乐书的第207次更新,第219篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第75题(顺位题号是349).给定两个数组,编写一个函数来计算它们的交集.例如: 输入: ...

  8. C#批量向数据库插入数据

    程序中,批量插入数据有两种思路. 1.用for循环,一条一条的插入,经实测,这种方式太慢了(插入一万条数据至少都需要6-7秒),因为每次插入都要打开数据库连接,执行sql,关闭连接,显然这种方式不可行 ...

  9. Web开发人员vs网页设计师

    Web开发人员vs网页设计师 我们都遇到过,但实际的区别是什么?如果您是该领域的新手,请阅读详细内容,这些内容比您想象的更重要. 经过几周(或几个月)的规划和准备,进行市场调查,与其他企业家交谈,现在 ...

  10. static 关键字和类的加载顺序

      静态变量在类加载时初始化,而非静态变量在创建对象时初始化.static关键字修饰的变量就是静态变量. 子类继承父类,子类在生成对象的时候,先初始化父类的成员变量,接着执行父类的构造器,完成父类的初 ...