栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于tushare指数日线行情数据的python可视化展示

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于tushare指数日线行情数据的python可视化展示

今天主要来介绍获取Pandas DataFrame格式数据以后如何进行可视化展示(个人的tushareID:498867)

如果还没有注册tushare社区账号的,可以点击https://tushare.pro/register?reg=498867进行注册。

下面我以全指医药为例子,向大家展示获取一个指数日线行情后,进行可视化。

(1)首先进入tushare官网,点击数据工具,选择指数,然后点击指数日线行情,会出现下图

输入全指医药的代码,000991.SH,点击生成代码后,将代码复制到jupter notebook或者pycharm中。 

# 导入tushare
import tushare as ts
# 初始化pro接口
pro = ts.pro_api('个人token,每个人不一样')

# 拉取数据
df = pro.index_daily(**{
    "ts_code": "000991.SH",
    "trade_date": "",
    "start_date": "",
    "end_date": "",
    "limit": "",
    "offset": ""
}, fields=[
    "ts_code",
    "trade_date",
    "close",
    "open",
    "high",
    "low",
    "pre_close",
    "change",
    "pct_chg",
    "vol",
    "amount"
])
print(df)

(2)这里以jupter notebook为例子,代码复制运行后,会出现下图

可以看到,获取了4230行的数据,从2005年1月4号开始。由于数据最初始的在最下面,所以我们需要对数据进行重排,输入如下代码:

df=df.sort_values('trade_date')
df

 

(3)目前的索引仍然是0,1,2...如果说为了后续绘图即索引便利,可以将'trade_date'设置成索引,结果如图4。可以看到日期目前就成为了索引。

df1=df.set_index('trade_date')
df1

 

(4)导入绘图库matplotlib,并对中文字体进行设置,不设置如果图中有中文会乱码。

import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False   #绘图中文字体设置

(5)编写绘图函数plotdf(),y即为绘图的因变量,这里以收盘价close为例子,如果想换成其他,比如开盘价open,把y='close'改成y='open'就可。

def plotdf(date, df, path, distance, color,alpha):
    """
    :param date:日期名称
    :param df: df就是导入进来的表格、
    :param path:path是保存文件的路径
    :param distance:横坐标间隔
    :param color:颜色
    :param alpha:透明度
    :return:
    """
    ax1=df.plot(figsize=(16,9), y='close',rot=90, fontsize=6, xlim=(-5,len(date)), color=color,alpha=alpha)   #创建绘图对象
    ax1.set_title("时间序列") #设置标题
    ax1.set_xticks(range(0, len(date), distance)) #设置刻度范围
    ax1.set_xticklabels(date[0:len(date):distance]) #设置刻度标签
    plt.savefig(path,bbox_inches="tight",pad_inches=0,dpi=900) #保存高清图片,并去除白边,path是保存文件的路径
    plt.show()

这里主要是采用面向对象的方式进行绘图,ax1.set_xxx表示给对象ax1设置一个xxx属性,如ax1.set_title('时间序列')就表示把图名设置成“时间序列”。

对图表进行保存时,dpi越高,输出的图片精度越大,bbox_inches="tight",pad_inches=0,是为了去除图片多余的白边。这里要注意的是,plt.show()一定要在plt.savefig()之前,反正保存的图片为空白。

下面对plotdf()进行调用,得到图5结果。这里横坐标展示间距设置成为100,颜色设置为蓝色,透明度0.5。间距可以根据具体的数据量进行调整,不一定100

plotdf(df1.index,df1,r"D:量化金融全指医药test1.png",100,'b',0.5)

 结果储存在'D:量化金融全指医药'文件夹中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号