失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python获取时序数据并进行可视化分析

Python获取时序数据并进行可视化分析

时间:2021-11-07 18:15:55

相关推荐

Python获取时序数据并进行可视化分析

作者:飞浪feilang图片来源于网络

1. 准备工作

tushare是一个第三方财经数据接口包,需要安装包并完成注册。

安装tushare包

pipinstalltushare

为防恶意调用接口数据,官方()需要新用户完成注册、提高积分(例如达到200)、取得访问权限token ID,例如:1797f6915fbc1e612c33c6ed4cf85a2b7b349d85db80bf0860337fff))。可通过如下链接(https://tushare.pro/register?reg=285935)进入官网完成注册。

2. 加载数据

首先需要导入包已安装的tushare包。然后通过tokenID获取一个有访问权限的API接口,最终通过官方文档说明,使用index_daily()来获取样例数据。这里取399401.SZ的交易日期和收盘价。

importtushareaststs.set_token("1797f6915fbc1e612c33c6ed4cf85a2b7b349d85db80bf0860337fff")pro=ts.pro_api()df1=pro.index_daily(ts_code="399401.SZ")[["trade_date","close"]]

3. 数据处理-转化与合并

数据类型转化为datetime

导入数据后,先观察源数据的字段类型是否符合预期。通过执行如下脚本,得到当前数据集中,trade_date为object 并非日期类型

#查看数据类型print(df1.dtypes)#查看样例数据print(df1.head())

pandas中改变某列的数据类型为日期时,可用pd.to_datetime。修改完成后,将数据集中的日期字段重新设为索引。注意不要漏掉inplace=True

df1.sort_values("trade_date",inplace=True)#转换列数据类型为日期df1["trade_date"]=pd.to_datetime(df1["trade_date"])#将指定的日期类型列设为索引,并替代。df1.set_index("trade_date",inplace=True)

数据合并concat

上面的df1对象中只包含一支股票的信息,当在matplotlib中展现时,仅可以观察趋势。如果需要与其它股票作对比分析,则需要合并另外的数据。

#获取多支交易数据数据,作对比分析list1=["000002.SZ","000012.SZ","600010.SH"]fori,ts_codeinenumerate(list1):#取指定日期的数据df_tmp=pro.daily(ts_code=ts_code,start_date="0101",end_date="0101")[["trade_date","close"]]df_tmp.sort_values("trade_date",inplace=True)df_tmp["trade_date"]=pd.to_datetime(df_tmp["trade_date"])df_tmp.rename(columns={"close":ts_code},inplace=True)df_tmp.set_index("trade_date",inplace=True)ifi==0:df=df_tmpelse:# axis=1,沿第2条轴即X轴。列增加df=pd.concat([df,df_tmp],axis=1)print(ts_code)#查看数据df.head()

4. 可视化展现

查看单一股票的年度趋势图,并添加参考线

importmatplotlib.pyplotaspltax=df1.plot(color="blue",figsize=(12,4),linewidth=2,fontsize=6)ax.set_xlabel("tradedate")ax.set_ylabel("399401.SZclose")ax.set_title("Trendanalysisofrecentyears-",fontsize=8)#添加水平线ax.axvline("-08-15",color="red",linestyle="--",linewidth=2)ax.axhline(6000,color="green",linestyle="--",linewidth=2)plt.show()

如下示图:

参数设置。

主题切换

可先调用语句`plt.style.available`,查看当前可用的主题名称,再选择即可。

设置X轴日期格式

matploblib中也提供了的dates对象,对X轴的显示日期格式与频度进行设置。如下脚本,将设置日期区间为"-01-01"至"-12-01",显示"年-月",频度为10个月。

#查看可用样式importmatplotlib.datesasmdateprint(plt.style.available)plt.style.use("seaborn-talk")ax1=df1.plot(figsize=(12,4))ax1.set_title("mymewstyle-seaborn-talk")ax1.xaxis.set_major_formatter(mdate.DateFormatter("%Y-%m"))plt.xticks(pd.date_range("-01-01","-12-01",freq="10m"))plt.show()

示例图如下:

对比分析

先预览已完成合并的数据。>trade_date仍为索引,但是新增了其它列。

ax3=df.plot(linewidth=3,fontsize=16,figsize=(12,4))ax3.set_xlabel("trade_date")ax3.set_ylabel("unitprice")#指定X轴显示刻度,取代默认设置ax3.xaxis.set_major_formatter(mdate.DateFormatter("%Y-%m"))plt.xticks(pd.date_range("-01-01","-01-01",freq="3m"))ax3.legend(fontsize=12)ax3.set_title("Comparisonofanalysis")plt.show()

展现结果为:

5. 小结

介绍了获取第三方平台的接口数据的方法

数据清洗与合并,主要有数据类型转换、重新排序、索引重置、数据合并

时序数据的可视化对比分析与基本展现设置

赞 赏 作 者

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以公安部、工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

长按扫描下方二维码关注公众号,回复“时间序列”即可获取本文全部源码

▼ 点击成为社区注册会员「在看」一下,一起PY!

如果觉得《Python获取时序数据并进行可视化分析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。