Pandas应用案例-股票分析:使用tushare包获取股票的历史行情数据进行数据分析
目标:
- 使用tushare包获取股票的历史行情数据
- 输出该股票所有收盘比开盘上涨3%以上的日期
- 输出该股票所有开盘比前日收盘跌幅超过2%以上的日期
- 假如为我们从2010年1月1日开始,每月第一个交易日买入一手股票,每年最后一个交易日卖出,到现在收益如何?
类似的股票数据平台:
聚宽(JoinQuant)量化交易平台是为量化爱好者(宽客)量身打造的云平台,我们为您提供精准的回测功能、高速实盘交易接口、易用的API文档、由易入难的策略库....
安装tushare:
pip install tushare
1. 使用tushare包获取某股票的历史行情数据。
import tushare as ts import pandas as pd from pandas import Series,DataFrame df= ts.get_k_data('600519',start = '1900-01-01')
df.to_csv('./maotai.csv') #写到csv
data = pd.read_csv('./maotai.csv',index_col='date',parse_dates=['date']) #index_col='date' --- 将date日期的作为行索引
#parse_dates=['date'] ---date 转为时间序列
data.drop(labels='Unnamed: 0',axis=1,inplace=True) ---注意drop 删除里的axis=1 表示列,0表示行!
---inplace=True 将删除的数据直接应用回源数据,如果inplace=False 会返回一个新的处理后的数据
2. 输出该股票所有收盘比开盘上涨3%以上的日期。
indexs = (data['close'] - data['open'])/data['open'] > 0.03
indexs返回的是索引对应的true/false 数组,类似如下:
结论:布尔值可以直接作为行索引
a True b False c True d False dtype: bool
data.loc[indexs].index # 查看 indexs 的所有索引
3. 输出该股票所有开盘比前日收盘跌幅超过2%的日期。
data['close'].shift(1) 表示前一条数据;索引上移
4. 假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
知识点:1、字符串模糊切片: data['2010':'2019'] ---索引中包含这个字符串就行
2、数据取样机制(resample('')):根据规则进行指定数据的提取
'M' - 表示月 'A' - 表示年 'D' - 表示日
new_data.resample('M').first() 表示按月进行提取,取每月的第一个交易日的数据
---注意:返回新的数组索引会变更
new_data.resample('A').last() 表示取每年最后一个交易日的数据
---注意:返回新的数组索引会变更
3、切片: 去除最后一行: new_data.resample('A').last().[:-1]
其中[:-1] 表示取0到最后一行,不包含最后一行