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

欢迎来到Python for Finance教程系列的第3部分。在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化。我们将要使用的开始代码(在前面的教程中已经介绍过)是:

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)

pandas模块配备了一系列可以利用的内置功能,以及创建自定义pandas功能的方法。稍后我们将介绍一些自定义函数,但现在让我们对这些数据执行一个非常常见的操作:移动平均线moving averages。

简单移动平均线的想法是花时间窗口,并计算该窗口中的平均价格。然后我们把这个窗口转过一段时间,然后再做一次。在我们的例子中,我们将执行100日均线(100ma)。因此,这将采用当前价格,并将过去99天的价格加起来除以100,然后确定当前的100日均线。然后我们移动窗户超过1天,然后再做同样的事情。在pandas中这样做很简单:

df['100ma'] = df['Adj Close'].rolling(window=100).mean()

做df ['100ma']允许我们重新定义包含现有列的内容(如果我们有一个名为“100ma”的),或者创建一个新列,这就是我们在这里所做的。我们说df ['100ma']列等同于应用滚动方法的df ['Adj Close']列,窗口为100,这个窗口将是一个平均值( )(平均)操作。

现在,我们可以这样做:

print(df.head())
                  Date       Open   High        Low      Close    Volume  \
Date
2010-06-29 2010-06-29 19.000000 25.00 17.540001 23.889999 18766300
2010-06-30 2010-06-30 25.790001 30.42 23.299999 23.830000 17187100
2010-07-01 2010-07-01 25.000000 25.92 20.270000 21.959999 8218800
2010-07-02 2010-07-02 23.000000 23.10 18.709999 19.200001 5139800
2010-07-06 2010-07-06 20.000000 20.00 15.830000 16.110001 6866900 Adj Close 100ma
Date
2010-06-29 23.889999 NaN
2010-06-30 23.830000 NaN
2010-07-01 21.959999 NaN
2010-07-02 19.200001 NaN
2010-07-06 16.110001 NaN

发生了什么? 在100ma列下,我们只看到NaN。 我们选择了100个移动平均线,理论上需要100个之前的数据点进行计算,所以我们在前100行中不会有任何数据。 NaN的意思是“Not a Number”。 在Pandas,你可以决定做许多事情与缺失的数据,但现在,让我们实际上只是改变最小周期参数:

df['100ma'] = df['Adj Close'].rolling(window=100,min_periods=0).mean()
print(df.head())
                  Date       Open   High        Low      Close    Volume  \
Date
2010-06-29 2010-06-29 19.000000 25.00 17.540001 23.889999 18766300
2010-06-30 2010-06-30 25.790001 30.42 23.299999 23.830000 17187100
2010-07-01 2010-07-01 25.000000 25.92 20.270000 21.959999 8218800
2010-07-02 2010-07-02 23.000000 23.10 18.709999 19.200001 5139800
2010-07-06 2010-07-06 20.000000 20.00 15.830000 16.110001 6866900 Adj Close 100ma
Date
2010-06-29 23.889999 23.889999
2010-06-30 23.830000 23.860000
2010-07-01 21.959999 23.226666
2010-07-02 19.200001 22.220000
2010-07-06 16.110001 20.998000

看吧,现在生效了,现在我们想看看它! 但是我们已经看到了简单的图表,稍微复杂一点的东西呢?

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

基本上,我们说我们要创建两个子图,并且这两个子图都会像6x1网格一样工作,我们有6行1列。 第一个子图从该网格上的(0,0)开始,跨越5行,并跨越1列。 下一个轴也位于6x1网格上,但它始于(5,0),跨越1行和1列。 第二个轴也有sharex = ax1,这意味着ax2将始终将其x轴与ax1的x轴对齐,反之亦然。 现在我们只是制作我们的地块:

ax1.plot(df.index, df['Adj Close'])
ax1.plot(df.index, df['100ma'])
ax2.bar(df.index, df['Volume']) plt.show()

综上,我们绘制了第一轴上的close和100ma,第二轴上的volume。 我们的结果:

完整的代码到目前为止:

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)
df['100ma'] = df['Adj Close'].rolling(window=100, min_periods=0).mean()
print(df.head()) 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.plot(df.index, df['Adj Close'])
ax1.plot(df.index, df['100ma'])
ax2.bar(df.index, df['Volume']) plt.show()

在接下来的几节教程中,我们将学习如何通过Pandas数据重采样制作烛台图形,并学习更多关于使用Matplotlib的知识。

下一篇教程:Python股票分析系列——基础股票数据操作(二).p4

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

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

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第4部分.在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采 ...

  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. Python股票分析系列——数据整合.p7

    欢迎来到Python for Finance教程系列的第7部分. 在之前的教程中,我们为整个标准普尔500强公司抓取了雅虎财经数据. 在本教程中,我们将把这些数据组合到一个DataFrame中. 到此 ...

  7. Python股票分析系列——获得标普500的所有公司股票数据.p6

    该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第6部分. 在之前的Python教程中,我们介绍了如何获取我们感兴趣的公司名单(在我们的案例中是 ...

  8. 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据

    财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...

  9. python面试题包含基础和Linux操作以及数据库相关

    今天面试了一家公司,感觉表现的不是很好,记录一下面试的试题. python基础部分 python 是一门什么样的语言面向对象的语言有那些,python的面向对象和Java面向对象的区别 Python是 ...

随机推荐

  1. 如何训练AI

    如何训练AI让其更加智能,而不是用特定的代码控制AI逻辑! AI守则 首先应该为机器人设置几个必要信息: 目标 规则 能力 目标,规定机器人要做到什么. 规则,规定机器人的限制,不能做什么. 能力,规 ...

  2. SQL 中常用存储过程xp_cmdshell运行cmd命令

    目的: 使用SQL语句,在D盘创建一个文件夹myfile 首先查询系统配置 SELECT * FROM sys.configurations WHERE name='xp_cmdshell' OR n ...

  3. ORACLE等待事件:SQL*Net message from client & SQL*Net message to client

    在ORACLE当中有两个很常见的等待事件"SQL*Net message from client"与"SQL*Net message to client",两者 ...

  4. Lua中的#

    Lua中的 对字符串来说,#取字符串的长度,但对于table需要注意. lua的table可以用数字或字符串等作为key, #号得到的是用整数作为索引的最开始连续部分的大小, 如果t[1] == ni ...

  5. win10同时安装 office2016和visio2016

    一.下载镜像文件 因为office 2016和 visio2016 镜像文件是一样的,只是名称不一样,所以只需要下载一个即可. 二.下载Office 2016 Deployment Tool工具 到微 ...

  6. PHP中cURL的应用

    这里是慕课网上讲cURL 的一张图,觉得吧这个过程说的很清楚,因此就不错了. 1, 打开一个网页,下载网页内容 <?php $curl = curl_init("http://www. ...

  7. mysql统计一年12月的数据

    效果图: select end) as 一月份, end) as 二月份, end) as 三月份, end) as 四月份, end) as 五月份, end) as 六月份, end) as 七月 ...

  8. Servlet工作原理解析(tomcat7、嵌入式服务器)

      目录 Servlet 容器Tomcat Servlet 容器的启动过程 Web 应用的初始化工作 Servlet 体系结构 创建 Servlet 对象(如何被加载) 初始化 Servlet(如何被 ...

  9. 关于HashMap的一些深入探索与理解

    在java中.大家差点儿是离不开对集合的使用的,像Map系列,List系列.Set系列.可是非常多人没有了解过或者研究过这些集合类究竟能够用在什么地方,而且有什么注意的地方.因此本文分Map系列和Li ...

  10. tomcat 设置连接数

    maxConnections.maxThreads.acceptCount的含义及关系maxThreads:tomcat同时处理请求的任务个数,默认值为200maxConnections :tomca ...