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

该系列视频已经搬运至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的知识。

转载于:https://www.cnblogs.com/medik/p/10989783.html

Python股票分析系列——基础股票数据操作(一)相关推荐

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

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

  2. python股票分析系列_Python股票分析系列——基础股票数据操作(一)

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

  3. python股票分析系列_Python股票分析系列——基础股票数据操作(一).p3

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

  4. python股票分析系列_Python股票分析系列——基础股票数据操作(二).p4

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

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

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

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

    Python股票分析系列--数据整理和绘制.p2 欢迎来到Python for Finance教程系列的第2部分. 在本教程中,我们将利用我们的股票数据进一步分解一些基本的数据操作和可视化. 我们将要 ...

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

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

  8. 手把手教你利用 python 爬虫分析基金、股票

    手把手教你利用 python 爬虫分析基金.股票 文章目录 手把手教你利用 python 爬虫分析基金.股票 第一步:基金数据爬取 第二步:股票增持计算 第三步:好股基金选取 桌面程序 exe 从前大 ...

  9. python应用中调用spark_在python中使用pyspark读写Hive数据操作

    1.读Hive表数据 pyspark读取hive数据非常简单,因为它有专门的接口来读取,完全不需要像hbase那样,需要做很多配置,pyspark提供的操作hive的接口,使得程序可以直接使用SQL语 ...

  10. python分析股票数据_Python股票分析系列——系列介绍和获取股票数据.p1

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

最新文章

  1. 翻译机之后,搜狗再推智能硬件产品录音笔
  2. 《C和指针》对于数组这一节的总结
  3. Applet 大文件上传
  4. 欢迎大家多来关注下!
  5. 博客系统知多少:揭秘那些不为人知的学问(四)
  6. 上市之后,青云存储平台QingStor也要“进军”云原生
  7. #Win8# 开发你的第一个App《Dota宝典》
  8. bdd java_二元判断图BDD及其JAVA实现的应用与研究
  9. 火绒规则 禁止所有软件的安装_火绒小技巧:禁用程序上网就是这么简单
  10. 计算机系统老更新,win10电脑老是重启更新怎么办_完美解决win10电脑老是重启更新的方法...
  11. Google黑客常用搜索语法
  12. 分享10种用户点击率高的汽车软文标题公式
  13. uni-app以h5网页的方式发布企业微信应用
  14. NodeJs ES6 写简单爬虫 爬小说网站《我当方士那些年》
  15. 【WebService】Caused by: org.apache.cxf.transport.http.HTTPException: HTTP respon ...
  16. xp系统共享打印机服务器不可用,那种方式能够解决WinXP访问Win10共享打印机指定网络不可用的问题?...
  17. LeetCode 题解:一顿操作猛如虎,一看击败百分五
  18. 快应用官网 | 2020年端午假期工作安排
  19. Markdown 学习入门
  20. 微信小程序01---小程序初始

热门文章

  1. AsteriskNow 实用总结
  2. 计算机小知识应用,电脑使用小知识
  3. nginx中的共享内存的3种方式
  4. Linux系统编程 -- 多线程间同步和互斥
  5. 设计模式---工厂方法模式(c++实现)
  6. java代码使用Get请求或者Post请求获取网络内容
  7. gsm模块 java 录音_深入详解Android GSM驱动模块
  8. 【渝粤教育】国家开放大学2018年春季 0161-22T教师职业道德 参考试题
  9. [渝粤教育] 西南科技大学 土木工程材料 在线考试复习资料
  10. 【渝粤题库】 陕西师范大学 210021 学前儿童健康教育 作业(专升本)