zoukankan      html  css  js  c++  java
  • 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到最后一行,不包含最后一行

                         

  • 相关阅读:
    第八篇 Flask中的蓝图
    第七篇 Flask实例化配置及Flask对象配置
    第六篇 Flask中的路由系统
    第五篇 Flask 中内置的 Session
    第四篇 Flask 中的模板语言 Jinja2 及 render_template 的深度用法
    第三篇 Flask中的request
    守护进程与守护线程
    GIL(全局解释器锁)与互斥锁
    python 面向对象
    实现能计算类似1
  • 原文地址:https://www.cnblogs.com/aitree/p/14278968.html
Copyright © 2011-2022 走看看