python根据时间序列画折线图_如何根据时间序列金融数据画出分年对比的季节性图表...

季节性分析是金融数据分析的常用分析方法,经常用于股票和商品价格分析中,对于观察价格、价差、基差和比价及商品供需水平十分准确直观,现在介绍几种获取季节性图表的方法。

一、金融数据终端

很多金融数据终端在提取数据的面板中提供了季节性图表的展示和导出功能,常见的如Bloomberg、Wind、钢联数据、天下粮仓等。以wind为例,在选择和提取数据之后,在看板下方可以切换到“图像”工作簿,提取到的数据会自动生成时间序列的折线图,在图片左上角工具栏中点击“季节性图表”图标,设置区间年份便可以自动生成,此处的数据和图片和数据都可以下载导出,但是没有自动更新功能。

二、用excel透视图画出

将整理好的数据序列数据,选择数据区域,在“插入”选项卡点击“数据透视图”,设置透视图表的位置,将数据列和时间列拖拽到“值”和“行”,这时会默认安装“年”和“季度”透视,如果我们想要按照日期比对,可以在右击透视表的“行标签”,点“组合”,只选中“年”和“日”,之后把“年”字段拖拽到“图例系列”中,就得到了分年柱状图。然后可以根据需要对图片进行修饰,可以右击图片“更改图片类型”为折线图,如果数据频率较低或存在nan值,折线图会不连续,解决方法是在图片区域右击“选择数据”,点击“隐藏的单元格和空单元格”,选择用直线连接数据点,最后我们得到了分年对比的折线图,可以自行设置线条的颜色和宽度、线型等。这种方法的优点是excel自动分析加工、数据排序自然准确;缺点是数据承载量较小,需要手工刷新图表,一旦软件出现故障容易造成数据毁损。

三、用excel公式生成图表

主要思路是构建年份、月份、周数或日期的辅助列,根据需求者的不同目的构建图标结构,大体思路是用IF函数与SUMIF函数或INDEX与MATCH函数配合,搜寻源数据中的唯一值,然后根据年份或更高频数据提供的坐标把数据填充到新的表结构中,最终形成类似于前述的透视表,然后插入折线图。这种方法的关键在于数据坐标的确定方法,优点是图片会随源数据自动更新、每次重算,缺点是对公式的灵活应用有一定要求。

四、用python实现

开始我用pandas自带的透视图功能可以把数据拆分但是没有实现想要的结果,一种解决思路是从数据源的datetimeindex提取“年”和“日期”两个辅助列,按年遍历数据,以“日期”列为键,作为index,join合并各年数据,效果如图。

这种方法存在问题是,pandas的合并默认按照index进行排序,一旦用到跨年的时间段,比如某一期货合约的存续期间,join的结果就会时间顺序错乱。

解决的思路是对时间区间是否跨年进行判断,作为初始参数选择不同处理方法,跨越元旦的区间以“年”为colunms、以“日期”str为index,遍历写入新的dataframe,可以最大程度保存数据原貌,所得到的数据表可以直接保存到excel。

你可能感兴趣的:(python根据时间序列画折线图_如何根据时间序列金融数据画出分年对比的季节性图表...)