本文摘自php中文网,作者爱喝马黛茶的安东尼,侵删。
Python是一门广泛在各个行业应用的语言,包括计算机,生物学,金融。可以说,python除了不会生孩子,其他啥都行。本文将使用python来玩转股票数据,让你见识Python的强大。
所使用的工具
python3.6Juypter notebook(交互式IDE,推荐使用)numpy,pandas用于数据分析matplotlib,seaborn用于数据可视化pandas_datareader用于获取股票数据
数据获取
我们可以从pandas_datareader获取股票数据。首先需要安装这个库
相关推荐:《python视频教程》
1 2 | pip install pandas
pip install pandas-datareader
|
然后就可以访问数据了
1 2 | from pandas_datareader.data import DataReader
datas = DataReader(name= 'BABA' , data_source= 'yahoo' , start= '2015-01-01' , end = '2018-01-01' )
|
在这里,我首先把数据存为了csv文件,让我们首先看看阿里巴巴前几年的股票数据吧。
1 2 | import pandas as pd
file = 'BABA.csv' #csv文件index = 'Date' #将日期作为索引列alibaba = pd.read_csv(file, index_col=index) #读取csv文件数据
|
然后我们简单的查看一下阿里巴巴的股票数据
1 | alibaba.head(n = 5) #查看前5行数据
|
下面是股票数据的前5行,我们可以看到每天的开盘价,收盘价,最高值,最低值,成交量等。

然后再查看一下这些数据的描述,获取对数据的直观感受。
这是对数据的统计量的一些分析,可以看到总共有789行数据,最高值和最低值相差不大。

历史趋势分析
在分析之前,我们先导入所需要的Python科学计算库。
1 2 3 4 5 6 7 | # 数据分析
import numpy as np
import pandas as pd
from pandas import Series, DataFrame# 可视化
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
|
我们首先分析股票的闭盘价的总体趋势。
1 2 3 4 5 | alibaba[ 'Adj Close' ].plot(legend = True)
plt.title( 'Alibaba Adj Close' )
plt.ylim([50,200])
plt.xlabel( 'Date' )
plt.ylabel( 'Price' )
|
可以看到,虽然中间也有小小的波动,闭盘价总体趋势是上升的,这表明阿里巴巴的市值一直在上升。

然后我们了解一下每天阿里巴巴股票的日收益率,毕竟,在股市赚钱,主要靠的就是低买高卖得到的收益。
1 2 3 4 | 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参数。
我们再使用密度图和直方图查看一下日收益率的总体情况。
1 2 3 4 5 | 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文件获取数据,按时间进行排序,并进行查看。
1 2 3 | 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家公司,看看谁更厉害。
1 2 3 4 | top_tech_df.plot(kind = 'line' ) #折线图plt.title( 'five company adj close picture' )
plt.xlabel( 'Date' )
plt.ylabel( 'price' )
plt.legend() #添加图例
|
可以看到谷歌和亚马逊,闭盘价始终高于其他三家公司,而这两家也是貌似有点关系,你升我也升,你降我也降。

上面图中看到其他三家貌似是平稳发展的,其实由于图的比例太大,导致相对平缓,真实的情况其实是此起彼伏,也有很大波动,下面查看一下。
1 2 3 4 5 6 | 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()
|

从上面了解到谷歌和亚马逊的闭盘价变化有着某种相似性,我们再来看看日收益率。
1 2 | sns.jointplot( "AMZN" , 'FB' ,top_tech_dr,kind= 'scatter' ,color = 'red' ,size=8)
plt.title( 'joint with AMZN and FB' )
|
谷歌和亚马逊的收益率也好像是正相关的,这可以作为预测这两家股票发展的一个参考因素。

以上就是python可以用来炒股吗的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Python动态定义函数的方法介绍
Python数据可视化利器matplotlib详解
json.loads是干嘛的?简单阐述json.loads Python的用法
Python中(urlparse)模板的使用详解
如何理解Python中with语句
Python中flask应用(表单处理)
Python定时任务,实现自动化的方法
excel转sqlite在Python下实现的方法介绍
Python整数类型的相关介绍
Python中的os模块
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » python可以用来炒股吗