目标:

1.股票数据获取

2.历史趋势分析及可视化

3.风险分析

实验数据:来源于Yahoo Finance / Stooq,该网站提供了很多API接口,本文用的工具是pandas-datareader

实验平台:Anaconda (pandas-datareader 需手动pip install)

导入工具包

1 import datetime
2 import seaborn as sns
3 import matplotlib.pyplot as plt
4 import pandas as pd
5 import numpy as np
6 import pandas_datareader as web

获取数据

1 start = datetime.datetime(2016, 1, 1)  # 获取数据的时间段-起始时间
2 end = datetime.date.today() # 获取数据的时间段-结束时间
3 alibaba = web.DataReader("BABA", "stooq", start, end) # 获取阿里巴巴2016年1月1日至今的股票数据

查看数据

print(alibaba.head())  # 查看前5条数据

print(alibaba.tail())  # 查看后5条数据
print(alibaba.index) # 查看DataFrame索引,索引为时间序列
print(alibaba.columns) # 查看DataFram列名,列信息为开盘价、最高价、最低价、收盘价、成交量
print(alibaba.shape) # 查看DataFram形状
print(alibaba.describe()) # 查看DataFrame数据每组的统计情况,如最小值、最大值、均值、标准差等

趋势分析及可视化

 1 alibaba["Close"].plot(legend=True)  # 收盘价可视化
2 plt.show()

 3 alibaba["Volume"].plot(legend=True)  # 交易量可视化
4 plt.show()
10 # 每日内股票变化
11 alibaba['high-low'] = alibaba['High'] - alibaba['Low']
12 print(alibaba.head())
14 # 每日间股票变化daily return
15 alibaba['daily-return'] = alibaba['Close'].pct_change()
16 alibaba['daily-return'].plot(figsize=(40,2))
17 plt.show()
19 # 每日间股票变化分布图
20 alibaba['daily-return'].plot(kind='hist')
21 plt.show()

23 sns.distplot(alibaba['daily-return'].dropna())
24 plt.show()

风险分析

1 # 获取五家科技公司2015至今的股票数据
2 start = datetime.datetime(2015,1,1)
3 company = ['AAPL','GOOG','MSFT','AMZN','FB']
4 top_tech_df = web.DataReader(company,'stooq',start)['Close']
5 print(top_tech_df.head())



1 # 每日收盘价较前一个交易日的百分比变化,即涨跌幅度
2 top_tech_dr = top_tech_df.pct_change()
3 print(top_tech_dr.head())

# 五家公司的股票收盘价走势图
top_tech_df.plot()
plt.show()


# 探究两组变量的分布及关系
sns.jointplot(x='GOOG',y='MSFT',data=top_tech_dr)
plt.show()

# 所有股票相关性比较

sns.pairplot(top_tech_dr.dropna())
plt.show()

Python 股票市场分析实战的更多相关文章

  1. 通过写n本书的积累,我似乎找到了写好技术文章的方法(回复送我写的python股票电子书)

    我写的书不算少,写的博文就更多了,但大多数书的销量也就一般,而我写的技术文章里,虽然也有点击过万的,但不少点击量也就只有三位数. 通过不断反思,也通过对比了一些畅销书和顶流文章,我似乎找到了一些原因, ...

  2. 关于Python网络爬虫实战笔记③

    Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...

  3. 《Python高效开发实战》实战演练——内置Web服务器4

    <Python高效开发实战>实战演练——开发Django站点1 <Python高效开发实战>实战演练——建立应用2 <Python高效开发实战>实战演练——基本视图 ...

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

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

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

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

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

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

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

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

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

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

  9. python聚类算法实战详细笔记 (python3.6+(win10、Linux))

    python聚类算法实战详细笔记 (python3.6+(win10.Linux)) 一.基本概念:     1.计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库 ...

随机推荐

  1. Javascript关键字,条件语句,函数及函数相关知识

    关键字 条件语句 作用域 回调 关键字 根据规定,关键字是保留的,不能用作变量名或函数名. 下面是一些ECMAScript关键字的完整列表. break ,case,catch,continue,de ...

  2. Linux环境Hadoop安装配置

    Linux环境Hadoop安装配置 1. 准备工作 (1)linux配置IP(NAT模式) (2)linux关闭防火墙 (3)设置主机名 (4)设置映射 (5)设置免密登录 2. 安装jdk (1)上 ...

  3. 数据库MySQL——SQL语句(命令)

    SQL语句分类 DCL (Data Control Language):数据控制语言:用来管理用户及权限 DDL(Data Definition Language):数据定义语言:用来定义数据库对象: ...

  4. log工具类

    package com.pt.platform.core.common; import java.text.SimpleDateFormat; import java.util.Date; impor ...

  5. OpenStack (glance 镜像服务)

    glance介绍 glance 提供云虚拟机上的服务镜像(Image)功能,该模块可看成车间里的模具生产部门,其功能包括虚拟机镜像的查找.注册和检索等.该模具最基本的使用方式就是在为云虚拟机实例提供安 ...

  6. 最小生成树(MST)Prim算法和Kruskal算法

    刚学完最小生成树,赶紧写写学习的心得(其实是怕我自己忘了) 最小生成树概念:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 就是说 ...

  7. AtCoder Beginner Contest 176 E - Bomber (思维)

    题意:有一张\(H\)x\(W\)的图,给你\(M\)个目标的位置,你可以在图中放置一枚炸弹,炸弹可以摧毁所在的那一行和一列,问最多可以摧毁多少目标. 题解:首先我们记录某一行和某一列目标最多的数目, ...

  8. Codeforces Round #633 (Div. 2)

    Codeforces Round #633(Div.2) \(A.Filling\ Diamonds\) 答案就是构成的六边形数量+1 //#pragma GCC optimize("O3& ...

  9. OpenStack Train版-2.安装keystone身份认证服务

    安装 keystone 认证 mysql -uroot create database keystone; grant all privileges on keystone.* to 'keyston ...

  10. ArcGIS处理栅格数据(一)

    一.建立影像金字塔 ArcToolbox--数据管理工具--栅格--栅格属性--构建金字塔(pyramid) 说明:该方式一次只能为一张影像数据建立影像金字塔. ArcToolbox--数据管理工具- ...