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到最后一行,不包含最后一行

                     

 

posted @ 2021-01-14 19:36  元小疯  阅读(839)  评论(0编辑  收藏  举报