pandas-datareader,panda 数据处理
熊猫简介-datareader熊猫库提供了一个专门用于从金融网站获取金融数据的API接口,可以作为获取量化交易股票数据的另一种方式。该接口基于urllib3库,实现了客户端对网站股票数据的访问。需要注意的是,目前该模块已经迁移到了pandas-datareader包中,所以在导入模块时需要从import pandas.io.data as web改为import pandas _ datareader . data as web。
相关网站
官方网站
开源代码库
0.6.0版操作文件
DataReader方法介绍查看熊猫的操作文档可以发现,第一个参数是股票代码,苹果的代码是‘AAPL’,国内股市采用的输入法是‘股票代码’和‘对应股市’。SS”添加到上海证券交易所和”。深交所新增“深证”。DataReader可以从几个金融网站获取股票数据,比如Yahoo!金融”、“谷歌金融”等。这里以雅虎为例。第三和第四个参数是股票数据的开始时间。返回的数据格式是DataFrame。
Start=datetime . datetime(2017 . 1 . 1)#数据采集时间段-开始时间end=datetime.date.today()#数据采集时间段-结束时间stock=web . datareader( 600797 . ss , Yahoo ,start,End)#获取浙大网新2017 . 1 . 1至今的股票数据分析。1.打印DataFrame数据的前5行和后5行(浙大网新因重大事项停牌,1月6日复牌)
打印纸张.头部(5)打印纸张.尾部(5)
2.打印DataFrame的数据索引和列名,索引是时间序列,列信息是开盘价、最高价、最低价、收盘价、复权收盘价、成交量。
打印股票.索引打印股票.分栏
3.打印DataFrame的数据形状,索引长度为248,列数为6,即248个交易日,6个股票数据项。
打印原料.形状
4.打印数据帧,查看是否有任何缺失数据以及每列数据的类型。
打印stock.info()
5.打印每组DataFrame数据的统计,如最小值、最大值、平均值、标准偏差等。
打印stock.describe()
6.在数据框中增加一个涨跌柱,涨跌=(当日收盘-前一日收盘)/前一日收盘* 100%
(1)增加一栏change,存储当日股价与前一日收盘价相比的波动值,即当日收盘价与前一日收盘价的差值。1月3日没有前一天的数据,所以缺失。
变化=股票。close . diff()stock[ Change ]=Change print stock . head(5)
(2)对于缺失数据,用上升值和下降值的平均值代替NaN。
change.fillna(change.mean(),inplace=True)
(3)波动幅度有两种计算方法。pct_change()算法的思想是先向前减去第二项,再除以第一项,计算出波动序列。
股票[pct_change]=(股票[ Change ]/股票[Close])。shift(1))# stock[ pct _ change 1 ]=stock。Close.pct_change()
7.gap gap的数字序列被添加到数据帧中。这里定义的缺口是上升趋势和下降趋势的突破缺口。在上升趋势中,今日最低价高于昨日收盘价,意味着向上跳空;在下跌趋势中,昨日最高价高于今日收盘价,意味着向下跳空。遍历每个交易日,增加满足跳空缺口条件的交易日的跳空值。
jump_pd=pd。np.arange(1,stock.shape[0])中kl_index的data frame():today=stock . IX[KL _ index]yes day=stock . IX[KL _ index-1]today[ pre cloae ]=yes day。关闭if today[pct_change] 0和(today。low-today[ pre clae ])0:today[ jump _ power ]=(today。low-today[ pre coae ])elif today[ pct _ change ]0和(today。high-today[ pre coae ])0:today[ jump _ power ]=(today。high-today[ pre claae ])jump _ PD=jump _ PD . append(today)stock[ jump _ power ]=jump _ PD[ jump _ power ]print stock . loc[ 2017-04-26 : 2017-06-15 ]#默认打印所有列。
8.数据帧数据以两位小数显示。
format=lambda x: % . 2f % x stock=stock . apply map(format)print stock . loc[ 2017-04-26 : 2017-06-15 ]#默认打印所有列
股价数据的可视化Matplotlib是使用计算机编程语言进行绘图里非常方便的库。这次情节使用的数据是接近的栏的数据。这是所说的已调整收盘价。
如下仅仅需要两行写就可以简单的将股价作为时间序列数据画出来。
阿里巴巴plot(legend=True,figsize=(10,4))plt.show()完整示例
从熊猫进口系列导入熊猫作为PD,数据帧导入数量作为铭牌导入matplotlib.pyplot作为熊猫_数据阅读器导入数据,wbfrom日期时间导入日期时间结束=日期时间。现在()开始=日期时间(结束。第1年,月末,月末,日)阿里巴巴=数据.DataReader(BABA , yahoo ,开始,结束)阿里巴巴接近的.plot(legend=True,figsize=(10,4))plt.show()更多图表操作可参考:
实例操作:Python提取雅虎财经数据,并做数据分析和可视化
以战斗支援车格式存放将数组作为公证人导入熊猫作为警察局导入pandas_datareader.data作为网导入datetimedf_csvsave=web .DataReader(600018 .SS , yahoo ,datetime.datetime(2019,1,1),datetime。约会。today())打印(df _ CSV保存)df _ CSV保存。to _ CSV(r c:\ Users \ 15461 \ Desktop \ table。CSV ,columns=df_csvsave.columns,index=True)可能遇到的问题在《利用Python进行数据分析》 一书中,学习到熊猫这一章节,利用书中的方法去获取雅虎数据会出现以下问题:
问题一pandas.io.data模块被移动到一个单独的包(熊猫-datareader)中导入pandas.io.data作为网络回溯(最近一次调用最后):文件pyshell#0 ,第一行,模块中导入pandas.io.data作为网文件c:\ Program Files(x86)\ python 36-32 \ lib \ site-packages \ pandas \ io \ data。py ,第2行,模块pandas.io.data模块被移动到一个单独的包导入错误:pandas.io.data模块被移动到一个单独的包(中安装熊猫-数据阅读器包(https://github。com/pydata/pandas-datareader)后,您可以将导入"从熊猫. io导入数据,wb "更改为"从熊猫_datareader导入数据,wb .根据提示,我们很快可以知道,熊猫。木卫一这个模块已经变成了熊猫_datareader 了,cmd命令行中执行以下语句即可解决这个问题:
点安装熊猫_datareader用以下语句可以调用模块
将pandas_datareader.data作为网导入问题二由于大量中断,雅虎行动立即被否决web.get_data_yahoo(AAPL ,2000年一月一日, 2010年一月一日)追溯(最近一次调用是最后一次):文件“pyshell#2”,第一行,位于模块雅虎( AAPL ,2000年一月一日, 2010年一月一日) File C:\ Program Files(x86)\ python 36-32 \ lib \ site-packages \ pandas _ datareader \ data。py ,第63行,位于欢迎重新启用这些数据连接器的请求。参见https://github.com/pydata/pandas-datareader/issues原因美国美国yahoo公司公司的数据接口有改动导致不可用。
在网上搜了好久才找到这一方法,这里我们需要引入另外一个模块fix_yahoo_finance ,同样使用点方法进行安装
点安装修复_雅虎_金融调用方式如下:
导入熊猫_ datareader。数据作为web导入datetime导入fix _ Yahoo _ finance作为yyf。PDR _ override()start=日期时间。datetime(2006,10,1)end=datetime.datetime(2012,1,1)web.get_data_yahoo(AAPL ,开始,结束)这样子就可以下载雅虎数据了。
问题三-在键入1/1/2000和1/1/2010后报错这里提示是时间的格式错误,应改为%Y-%m-%d
解决办法:用于循环这里这样写
对于[AAPL , IBM , MSFT ,谷歌]中的股票:all _ data[ticker]=web。雅虎公司(股票代码, 2000年1月1日, 2010年1月1日)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。