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

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

importdatetime as dtimportmatplotlib.pyplot as pltfrom matplotlib importstyleimportpandas as pdimportpandas_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 \

Date2010-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 6866900Adj Close 100ma

Date2010-06-29 23.889999NaN2010-06-30 23.830000NaN2010-07-01 21.959999NaN2010-07-02 19.200001NaN2010-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 \

Date2010-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 6866900Adj Close 100ma

Date2010-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。 我们的结果:

完整的代码到目前为止:

importdatetime as dtimportmatplotlib.pyplot as pltfrom matplotlib importstyleimportpandas as pdimportpandas_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股票分析系列_Python股票分析系列——基础股票数据操作(一).p3相关推荐

  1. python数据分析的发展前景_Python+BI分析5000条招聘数据,原来数据分析工作在这儿最好找...

    这两年的大数据热潮带火了数据分析这个职业,很多人想转行干数据分析,但是又不知道现在这个行业的求职环境和前景如何,动了心却不敢贸然行动. 前两天有个干运营的妹子找我聊天,也是问我数据分析岗位前景的问题, ...

  2. math python 向上取整_Python成为专业人士笔记-各数学运算操作深度剖析

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com Python可以执行常见的数学运算符,包括整 ...

  3. python足球大数据分析_Python 抓取欧洲足球联赛数据进行大数据分析

    摘要: 背景 Web Scraping 在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 数据的展 ...

  4. python电影数据分析报告_Python数据分析实战:TMDB电影数据可视化

    一.数据预处理 本文将以项目实战的形式,对 TMDB电影数据进行数据分析与可视化实战,所使用的数据来源于 Kaggle,文末提供数据的下载方式. import json import pandas a ...

  5. python深浅拷贝 面试_Python面试宝典之基础篇-02

    原标题:Python面试宝典之基础篇-02 我觉得你如果正在找工作,我的Python面试宝典几期教程,你一定得花时间看完了! 题目006:说说Python中的浅拷贝和深拷贝. 点评:这个题目本身出现的 ...

  6. python爬虫自学笔记分析解密_Python爬虫自学系列(七) -- 项目实战篇(一)

    前言 之所以标题不说是爬什么网,主要是怕大家看了标题以为是之前那篇的返稿.其实不是啊. 这次爬的是腾讯的暑期实习招聘. 上次爬完之后放那边也没去更新过,今天再上去看,发现人家已经改版了. 不知道为啥啊 ...

  7. python自动炒股软件下载_Python自动获取当日所有股票数据

    开年以来,大盘直接从2400站上了3200,为了后续进一步分析股票数据,我想把每只股票每天的数据保存下来. import pandas as pd import tushare as ts impor ...

  8. python爬虫今日头条_python爬虫—分析Ajax请求对json文件爬取今日头条街拍美图

    python爬虫-分析Ajax请求对json文件爬取今日头条街拍美图 前言 本次抓取目标是今日头条的街拍美图,爬取完成之后,将每组图片下载到本地并保存到不同文件夹下.下面通过抓取今日头条街拍美图讲解一 ...

  9. python标准类型内建函数_Python 标准库系列之内建函数

    Python的强大有很大一部分是因为其庞大的标准库提供了各式各样的功能,基本上日常使用中你所需要的功能都可以从中找到,从而大大减轻开发人员的压力,节省开发人员的时间,因此,要想更好的使用python, ...

  10. python语言的语法_Python语言学习系列------基础语法(一)

    本博客系列为自己按照网上视频教学学习python的一个随笔系列文章,也不知道会更新到多少,反正闲开个坑呗. 一.高级语言的分类 高级的编程语言分为解释型语言和编译型语言,两者的区别是主要是:在执行前是 ...

最新文章

  1. 使用谷歌Colab Notebooks,这6个小技巧你需要掌握
  2. Android maps应用
  3. 【转载】register、volatile、restrict 三关键字的用法
  4. 网管型光纤收发器功能介绍
  5. LoadRunner11支持的浏览器小结-Loadrunner11打不开IE浏览器的问题
  6. Object-C 学习笔记(IOS程序设计课程)01
  7. CSS 改变文本选中颜色
  8. 小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
  9. oracle如何给临时表增加字段,Oracle 临时表用法
  10. DELL服务器运行硬件检测
  11. 使用pinyin4j完成中文拼音转换
  12. 2021最新 杭州互联网公司排名
  13. 八、python爬虫伪装 [免费伪装ip伪装请求头]
  14. oracle判断字符串是不是日期,在ORACLE中如何判断一个字符串是否是一个合适的日期...
  15. 小偷电竞酒店换显卡被抓!网吧/电竞酒店如何防盗?
  16. 汤道生任腾讯云与智慧CEO;阿里巴巴副总裁范驰离职 | 高管变动2021年5月10日-16日...
  17. Linux 锐捷 用户不允许,mentohust“不允许使用的客户端类型”的解决方法
  18. Flink DataStream中join
  19. office 2007 官方版
  20. pycharm自动化测试-调用xls文件数据

热门文章

  1. 水质评价--- 1单因子指数法
  2. C语言——花括号{}的作用域限定
  3. Intellij idea 出现错误 error:java: 无效的源发行版: 8解决方法
  4. 配置Exchange邮箱服务器
  5. excel制表基础:规范的制表理念和思路让效率提升 上篇
  6. MPchart的piechart一些方法
  7. 解读Inf文件(驱动程序安装信息文件)
  8. 【C++ 11】 error C3861: ‘_beginthreadex‘: identifier not found
  9. 转 3GP文件格式分析
  10. 12:jquery查找