今天主要来介绍获取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:\量化金融\全指医药\'文件夹中