Python股票分析系列——基础股票数据操作(一).p3
该系列视频已经搬运至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的更多相关文章
- Python股票分析系列——基础股票数据操作(二).p4
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第4部分.在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采 ...
- Python股票分析系列——数据整理和绘制.p2
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第2部分. 在本教程中,我们将利用我们的股票数据进一步分解一些基本的数据操作和可视化. 我们将要 ...
- Python股票分析系列——系列介绍和获取股票数据.p1
本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...
- python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据
python量化分析系列之---5行代码实现1秒内获取一次所有股票的实时分笔数据 最近工作太忙了,有一个星期没有更新文章了,本来这一期打算分享一些对龙虎榜数据的分析结果的,现在还没有把数据内的价值很好 ...
- Python股票分析系列——自动获取标普500股票列表.p5
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第5部分.在本教程和接下来的几节中,我们将着手研究如何为更多公司提供大量的定价信息,以及如何一次 ...
- Python股票分析系列——数据整合.p7
欢迎来到Python for Finance教程系列的第7部分. 在之前的教程中,我们为整个标准普尔500强公司抓取了雅虎财经数据. 在本教程中,我们将把这些数据组合到一个DataFrame中. 到此 ...
- Python股票分析系列——获得标普500的所有公司股票数据.p6
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第6部分. 在之前的Python教程中,我们介绍了如何获取我们感兴趣的公司名单(在我们的案例中是 ...
- 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据
财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...
- python面试题包含基础和Linux操作以及数据库相关
今天面试了一家公司,感觉表现的不是很好,记录一下面试的试题. python基础部分 python 是一门什么样的语言面向对象的语言有那些,python的面向对象和Java面向对象的区别 Python是 ...
随机推荐
- CsQuery中文编码乱码问题
一.问题描述 InnerHTML 中文显示为Модель 二.解决方法 在初始化CQ对象前,先设置执行以下语句: CsQuery.Config.HtmlEncoder = CsQuery.HtmlEn ...
- python使用sax实现xml解析
之前在使用xml解析的时候,在网上搜了很多教程,最终没有能按照网上的教程实现需求. 所以呢,只好自己去看源码,在sax的__init__.py下看到这么一段代码: 1 def parse(source ...
- 在Windows服务中托管 ASP.NET Core的坑
按照官网教程 https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/windows-service?view=aspnetcore- ...
- SQL Server数据库邮件发送异常案例
最近遇到两起关于SQL Server数据库邮件发送异常的案例,这些问题也有点意思,顺便记录一下.方便以后遇到类似问题的人参考,不要被这些问题弄得抓狂! 案例1:我们一台数据库服务器突然发送邮件都不 ...
- 配置正确情况下,hadoop 没有namenode的一个解决方法
将hdfs里name与data清空,和将tmp清空 然后在hadoop目录下运行 hadoop namenode -format 启动 sbin/start-all.sh
- IOS UIWebView用法
转自猫猫小屋 IOS webview控件使用简介(一) IOS webview控件使用简介(二)–加载本地html
- java POI导出Excel文件数据库的数据
在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...
- Linux命令一
软件包管理命令: sudo apt-cache search package #搜索包 sudo apt-cache show package #获取包的相关信息,如说明.大小.版本 s ...
- 浅析data:image/png;base64的应用
...我也是加一个网安交流群发现了他们的入群密码是这个 数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAANwAAAAoCAIAAAAaOwPZAAAAAXNSR ...
- JDBC复习1
1.什么是JDBC JDBC是java数据库连接技术的简称(Java DataBase Connectivity) jdbc是接口,jdbc驱动才是接口的实现,负责连接各种不同的数据库.jdbc的AP ...