用python来分析一波股票

Python是一门广泛在各个行业应用的语言,包括计算机,生物学,金融。可以说,python除了不会生孩子,其他啥都行。本文将使用python来玩转股票数据,让你见识Python的强大。

所使用的工具

  • python3.6
  • Juypter notebook(交互式IDE,推荐使用)
  • numpy,pandas用于数据分析
  • matplotlib,seaborn用于数据可视化
  • pandas_datareader用于获取股票数据

数据获取

我们可以从pandas_datareader获取股票数据。首先需要安装这个库

pip install pandas
pip install pandas-datareader

然后就可以访问数据了

from pandas_datareader.data import DataReader
datas = DataReader(name='BABA', data_source='yahoo', start='2015-01-01', end='2018-01-01')

由于数据是从雅虎财经获取不稳定,这里我就先把本次实验所用到的数据下载了下来放在百度网盘,大家有需要的可以进行下载(链接: https://pan.baidu.com/s/1czzR03vuX0-O2lmMJT2otw 密码: 5jxj)

在这里,我首先把数据存为了csv文件,让我们首先看看阿里巴巴前几年的股票数据吧。

import pandas as pd 
file = 'BABA.csv'   #csv文件
index = 'Date'      #将日期作为索引列
alibaba = pd.read_csv(file, index_col=index)    #读取csv文件数据

然后我们简单的查看一下阿里巴巴的股票数据

alibaba.head(n = 5)  #查看前5行数据

下面是股票数据的前5行,我们可以看到每天的开盘价,收盘价,最高值,最低值,成交量等。

股票数据.png

然后再查看一下这些数据的描述,获取对数据的直观感受。

alibaba.describe()

这是对数据的统计量的一些分析,可以看到总共有789行数据,最高值和最低值相差不大。

历史趋势分析

在分析之前,我们先导入所需要的Python科学计算库。

# 数据分析
import numpy as np
import pandas as pd
from pandas import Series, DataFrame

# 可视化
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

我们首先分析股票的闭盘价的总体趋势。

alibaba['Adj Close'].plot(legend = True)
plt.title('Alibaba Adj Close')
plt.ylim([50,200])
plt.xlabel('Date')
plt.ylabel('Price')

可以看到,虽然中间也有小小的波动,闭盘价总体趋势是上升的,这表明阿里巴巴的市值一直在上升。

然后我们了解一下每天阿里巴巴股票的日收益率,毕竟,在股市赚钱,主要靠的就是低买高卖得到的收益。

size = (10,8)
alibaba['daily-return'].plot(figsize = size,linestyle = '--',marker = 'o') #折线图,原点表示最大最小点
plt.title('Alibaba daily return')
plt.xlabel('Date')
plt.ylabel('daily return rate')

每天的收益率不是稳定的,证明股市有风险,需要谨慎对待。

实用小知识:pct_change()函数将每个元素与其前一个元素进行比较,并计算变化百分比。默认情况下,pct_change()对列进行操作; 如果想应用到行上,那么可使用axis = 1参数。

我们再使用密度图和直方图查看一下日收益率的总体情况。

data = alibaba['daily-return'].dropna() #清除异常值
bins = 50 #分为50个区间
#在同一张图上画出分布直方图和密度图
sns.distplot(data, bins  = bins, color = 'red',hist = True, kde = True) 
plt.title('Alibaba daily return distribution')
plt.xlabel('daily-return')
plt.ylabel('probablity')
plt.xlim([-0.05,0.1])

从图中我们可以看出,总体收益率基本稳定在0左右,盈或者损是对称的。

风险分析

在风险分析里,我们对比几家互联网行业的大公司,看看它们的股票有什么差异,这里我选的5家公司是苹果,谷歌,亚马逊,微软,Facebook,时间是2015年到2017年。(大家也可以从前面的百度网盘里面的链接获取哦。)

读取top5.csv文件获取数据,按时间进行排序,并进行查看。

file = "top5.csv"
index = 'Date'
top_tech_df = pd.read_csv(file,index_col = index)  #读取数据
top_tech_df=top_tech_df.sort_index()    #按索引,也就是时间排序
top_tech_df.head(n = 5)

这里的数据指的是股票的闭盘价,这是前5条数据。

首先综合比对一下这5家公司,看看谁更厉害。

top_tech_df.plot(kind = 'line')      #折线图
plt.title('five company adj close picture')
plt.xlabel('Date')
plt.ylabel('price')
plt.legend()     #添加图例

可以看到谷歌和亚马逊,闭盘价始终高于其他三家公司,而这两家也是貌似有点关系,你升我也升,你降我也降。

上面图中看到其他三家貌似是平稳发展的,其实由于图的比例太大,导致相对平缓,真实的情况其实是此起彼伏,也有很大波动,下面查看一下。

another_company = ['AAPL','FB','MSFT']
top_tech_df[another_company].plot()
plt.title('another company adj close picture')
plt.xlabel('Date')
plt.ylabel('price')
plt.legend()

从上面了解到谷歌和亚马逊的闭盘价变化有着某种相似性,我们再来看看它们的日收益率之间的关系。

#使用pct_change()获得日收益率
top_tech_dr = top_tech_df.pct_change()
sns.jointplot("AMZN",'FB',top_tech_dr,kind='scatter',color = 'red',size=8)
plt.title('joint with AMZN and FB')

谷歌和亚马逊的收益率也好像是正相关的,这可以作为预测这两家股票发展的一个参考因素。

股市有风险,投资需谨慎。本文不是教你炒股的,而是教你学习Python的,感兴趣的小伙伴赶快学起来吧。

原文发布于微信公众号 - 日常学python(daily_learn)

原文发表时间:2018-08-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

如何从新闻中识别骗子们的小套路

电信诈骗猖獗盛行,成为国家的重点打击对象,但是我们身边亲朋好友被骗的悲剧还在屡屡发生。小作者思考也许我们可以从新闻中提取电信诈骗的特征信息,为家里的长辈亲人提个...

190100
来自专栏全栈工程师成长之路

2017计算机系书单推荐

我是一名iOS开发工程师,我想成为一名优秀的程序员,我虽然不是计算机系的学生,但我不能落后,我要努力成为优秀程序员的一员。我觉得每个人都有自己的想法和规划,一个...

718100
来自专栏程序员笔记

我的第一个游戏:GetMessage

17340
来自专栏AI科技大本营的专栏

丢人了!英伟达抄代码也就算了,竟然把人家的License都改成自己的

今天一早,营长像往常一样打开手机,来Reddit上看看大家都在讨论啥。 网友Ouitos被人抄代码并改License的声讨,顿时激起了营长的义愤。 ? 仔细看...

33380
来自专栏Golang语言社区

杯子倒水问题自动求解程序(Javascript实现)

智力测试题经常遇到类似的逻辑题,给几个容量不等的杯子,让你倒出多少的水。 安卓上有一款专门玩这个题的游戏叫做Water Logic. ? 我安装这个游戏把几十个...

33430
来自专栏有趣的Python和你

Python数据分析之小鲜肉粉丝情况数据预处理数据分析

19560
来自专栏华章科技

程序猿必须知道的一些有用的(外国)网站

原文:https://github.com/sdmg15/Best-websites-a-programmer-should-visit

1.3K20
来自专栏企鹅号快讯

程序猿必须知道的一些有用的网站

来自:开源中国 原文:https://github.com/sdmg15/Best-websites-a-programmer-should-visit 在学习...

309100
来自专栏java思维导图

牛客面经 |这可能不只是一篇面经

这可能不只是一篇面经 作者:_XiaoTeng_ 来源:牛客网 【这可能不只是一篇面经】 精 写了个显眼的标题,就真得说几句有用的话。 5月份一个很偶然的机...

83270
来自专栏数据结构与算法

博弈论进阶之Anti-SG游戏与SJ定理

前言 在之前,我们初步了解了一下SG函数与SG定理。 今天我们来分析一下SG游戏的变式——Anti-SG游戏以及它所对应的SG定理 首先从最基本的Anti-Ni...

39840

扫码关注云+社区

领取腾讯云代金券