美文网首页Pythonpython爬虫实战Python
Python股票数据分析(tushare/seaborn)

Python股票数据分析(tushare/seaborn)

作者: CiferZ | 来源:发表于2016-11-23 14:39 被阅读5798次

    python版本:3.4
    最近在学习基于python的股票数据分析,其中主要用到了tushare和seaborn。tushare是一款财经类数据接口包,国内的股票数据还是比较全的,官网地址:http://tushare.waditu.com/index.html#id5 。seaborn则是一款绘图库,通过seaborn可以轻松地画出简洁漂亮的图表,而且库本身具有一定的统计功能。
    导入的模块:
    import matplotlib.pyplot as plt
    import seaborn as sns
    import seaborn.linearmodels as snsl

    from datetime import datetime
    import tushare as ts
    代码部分:
    股票收盘价走势曲线
    <code>sns.set_style("whitegrid")</code>
    end = datetime.today() #开始时间结束时间,选取最近一年的数据
    start = datetime(end.year-1,end.month,end.day)
    end = str(end)[0:10]
    start = str(start)[0:10]

    stock = ts.get_hist_data('300104',start,end)#选取一支股票
    stock['close'].plot(legend=True ,figsize=(10,4))
    <code>plt.show()</code>

    股票日线

    同理,可以做出5日均线、10日均线以及20日均线
    stock[['close','ma5','ma10','ma20']].plot(legend=True ,figsize=(10,4))

    日线、5日均线、10日均线、20日均线

    股票每日涨跌幅度
    stock['Daily Return'] = stock['close'].pct_change()
    stock['Daily Return'].plot(legend=True,figsize=(10,4))

    每日涨跌幅

    核密度估计
    sns.kdeplot(stock['Daily Return'].dropna())

    核密度估计

    核密度估计+统计柱状图
    sns.distplot(stock['Daily Return'].dropna(),bins=100)

    核密度+柱状图

    两支股票的皮尔森相关系数
    sns.jointplot(stock['Daily Return'],stock['Daily Return'],alpha=0.2)

    皮尔森相关系数

    多只股票相关性计算
    <code>stock_lis=['300113','300343','300295','300315`] #随便选取了四支互联网相关的股票</code>
    <code>df=pd.DataFrame()</code>

         closing_df = ts.get_hist_data(stock,start,end)['close']
         df = df.join(pd.DataFrame({stock:closing_df}),how='outer')```
    ```tech_rets = df.pct_change()```
    <code>snsl.corrplot(tech_rets.dropna())</code>
    
    
    ![相关性](https://img.haomeiwen.com/i2166775/e37e7396d6b405b9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    简单地计算股票的收益与风险,衡量股票收益与风险的数值分别为股票涨跌的平均值以及标准差,平均值为正则说明收益是正的,标准差越大则说明股票波动大,风险也大。
    ```rets = tech_rets.dropna()```
    <code>plt.scatter(rets.mean(),rets.std())</code>
    ```plt.xlabel('Excepted Return')```
    <code>plt.ylabel('Risk')</code>
    ```for label,x,y in zip(rets.columns,rets.mean(),rets.std()):#添加标注
         plt.annotate(
                      label,
                      xy =(x,y),xytext=(15,15),
                      textcoords = 'offset points',
                      arrowprops = dict(arrowstyle = '-',connectionstyle = 'arc3,rad=-0.3'))```
    
    
    ![收益风险](https://img.haomeiwen.com/i2166775/2d99abea2190b8e0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    相关文章

      网友评论

      • 麦口胡:“import seaborn.linearmodels as snsl“ 提示改成 ”import seaborn.regression as snsl“
      • 留存的情缘:哥哥我想绘制stock[['Daily Return','ma5']].plot(legend=True,figsize=(10,4)),Daily Return一直以一条y=0的直线,为啥额
      • yusunsunyu:不错,一直想用tushare做点股票的事情,学习一下挺好
      • wuhao1987:这个写的详细
      • 82709210c359:楼主能发一个GitHub demo不:smile:
        西西吃西瓜:@Aric 优矿有全部这篇文章的
        CiferZ: @Aric 这个。。目前还没传到自己的github上 代码的话 这篇文章里的应该是全部了
      • 一直不见:创富干货吗
      • phoenixor:我只是 想用python做一个数据库系统自用
        phoenixor:@ironbeak_owl 教程在哪里
        ironbeak_owl:@广度阅读 有教程可以试试,<i>500</i>行左右
      • dalalaa:图好漂亮 :+1:

      本文标题:Python股票数据分析(tushare/seaborn)

      本文链接:https://www.haomeiwen.com/subject/qyumpttx.html