通过tushare获取贵州茅台和中国平安历史交易数据并使用plotly进行可视化分析

通过tushare获取贵州茅台和中国平安历史交易数据并使用plotly进行可视化分析

 

贵州茅台:赤水河永流淌

 

贵州茅台酒股份有限公司总部位于中国贵州省遵义市茅台镇,其主导产品贵州茅台酒历史悠久、源远流长,具有深厚的文化内涵,是我国大曲酱香型白酒的鼻祖和典范代表,也是具有特色的绿色食品、有机食品和地理标志性产品。

 

中国平安:有后盾才会有安全感

 

中国平安是国内金融牌照最齐全的金融服务集团,业务有车险、意外保险、重疾险、小额贷款、信用贷款、投资理财产品、平安普惠、平安信用卡、平安保险、平安银行等

 

Plotly

 

Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大,可以在线绘制很多图形比如条形图、散点图、饼图、直方图等等。

而且还是支持在线编辑,以及多种语言python、javascript、matlab、R等许多API。

它在python中使用也很简单,直接用pip install plotly就可以了。推荐最好在jupyter notebook中使用,pycharm操作不是很方便。使用Plotly可以画出很多媲美Tableau的高质量图。

Plotly也对对应的免费的offline模式

Plotly生成的图像是动态的(底层是javascript)支持许多的自定义的后处理功能;

Tushare

 Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。


#需要安装的python包

# pip install tushare

#pip install plotly

 

#加载需要的画图包plotly

 

from plotly.offline import download_plotlyjs,init_notebook_mode,plot
import plotly.graph_objs as go

from plotly.offline import init_notebook_mode
init_notebook_mode(connected = True)

 # 600519 是贵州茅台

import tushare as ts

#
# https://tushare.pro/document/2
# , start_date='20140601', end_date='20210511'
stock = ts.get_hist_data('600519',start = '2014-06-10',end ='2021-05-11',ktype = 'W')
stock.shape
stock.tail()

 

stock.columns
Index(['open', 'high', 'close', 'low', 'volume', 'price_change', 'p_change',
       'ma5', 'ma10', 'ma20', 'v_ma5', 'v_ma10', 'v_ma20', 'turnover'],
      dtype='object')

 

#旧API说明:

# code:string
#               股票代码 e.g. 600848
#   start:string
#               开始日期 format:YYYY-MM-DD 为空时取到API所提供的最早日期数据
#   end:string
#               结束日期 format:YYYY-MM-DD 为空时取到最近一个交易日数据
#   ktype:string
#               数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
#   retry_count : int, 默认 3
#              如遇网络等问题重复执行的次数 
#   pause : int, 默认 0
#             重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题

# 做贵州茅台的K线图:

import plotly as py
import plotly.graph_objs as go
import pandas as pd

fig = go.Figure()

# -------------pre def
pyplt = py.offline.plot

trace = go.Candlestick(x=stock.index,
                open=stock.open,
                high=stock.high,
                low=stock.low,
                close=stock.close,
                increasing=dict(line=dict(color='red')),
                decreasing=dict(line=dict(color='green'))
                )
data = [trace]

fig = go.Figure(data=data, layout=layout)
# fig = go.Figure(data=data, layout=layout)


plot_url = pyplt(fig)
iplot(fig)

# 绘制贵州茅台的均线图:

import plotly as py
import plotly.graph_objs as go

pyplt = py.offline.plot

trace1 = go.Scatter(
    x=stock.index,
    y=stock.ma5,
    name='ma5'
)
trace2 = go.Scatter(
    x=stock.index,
    y=stock.ma10,
    name='ma10'
)
trace3 = go.Scatter(
    x=stock.index,
    y=stock.ma20,
    name='ma20'
)
trace4 = go.Scatter(
    x=stock.index,
    y=stock.v_ma5,
    name='v_ma5',
    yaxis='y2'
)
trace5 = go.Scatter(
    x=stock.index,
    y=stock.v_ma10,
    name='v_ma10',
    yaxis='y2'
)
trace6 = go.Scatter(
    x=stock.index,
    y=stock.v_ma20,
    name='v_ma20',
    yaxis='y2'
)

data = [trace1, trace2, trace3, trace4, trace5, trace6]
layout = go.Layout(
    title='multi_y_aixs',
#     width=800,
#     xaxis=dict(
#         domain=[0.3, 0.7]
#     ),
    yaxis=dict(
        title='movingaverage',
        titlefont=dict(
            color='#1f77b4'
        ),
        tickfont=dict(
            color='#1f77b4'
        )
    ),
    yaxis2=dict(
        title='movingvolume',
        titlefont=dict(
            color='#ff7f0e'
        ),
        tickfont=dict(
            color='#ff7f0e'
        ),
        anchor='free',
        overlaying='y',
        side='left',
        position=1
    )
)
fig = go.Figure(data=data, layout=layout)
plot_url = pyplt(fig)
iplot(fig)

# 通过新接口获取中国平安的交易数据:

# mail: you resigter mail
# cipher: you cipher setted

ts.set_token('you token get from tushare')
pro = ts.pro_api()

stock_new = pro.daily(ts_code='601318.SH', start_date='20140601', end_date='20210511',ktype = 'W')
# weekly,monthly,moneyflow,pledge_stat

stock_new.shape

# 进行日期格式处理

stock_new['trade_date'] = pd.to_datetime(stock_new['trade_date'])

# 画图获取中国平安的收盘价和成交量:

import plotly as py
import plotly.graph_objs as go

pyplt = py.offline.plot

trace1 = go.Scatter(
    x=stock_new.trade_date,
    y=stock_new.close,
    name='shoupanjia'
)
trace2 = go.Scatter(
    x=stock_new.trade_date,
    y=stock_new.vol,
    name='duoshaoshou',
    yaxis='y2'
)

data = [trace1, trace2]

layout = go.Layout(
    title='liangjiqqifei',
#     width=800,
#     xaxis=dict(
#         domain=[0.3, 0.7]
#     ),
    yaxis=dict(
        title='shoupan',
        titlefont=dict(
            color='#1f77b4'
        ),
        tickfont=dict(
            color='#1f77b4'
        )
    ),
    yaxis2=dict(
        title='shoushu',
        titlefont=dict(
            color='#ff7f0e'
        ),
        tickfont=dict(
            color='#ff7f0e'
        ),
        anchor='free',
        overlaying='y',
        side='left',
        position=1
    )
)
fig = go.Figure(data=data, layout=layout)
plot_url = pyplt(fig)
iplot(fig)

 

由此可以对比贵州茅台和中国平安的走势并进行自定义的可视化和分析;

参考:tushare

参考:plotly

参考:Plotly之高级使用说明

 

 

 

 

 

 

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data+Science+Insight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值