zoukankan      html  css  js  c++  java
  • 用Pandas获取商品期货价格并可视化

     用Pandas获取商品期货价格并可视化

    摘  要

    1、用pandas从excel中读取数据;

    2、用pandas进行数据清洗、整理;

    3、用bokeh进行简单的可视化。

    1、数据读取

    本文主要是将获取到的商品期货价格进行整理,获取报价当日对应的当年度年底期货价格,并进行简单的可视化。最终,我们要获取的数据结果为,(a)对于非12月份的报价,获取当年度12月的期货价格;(b)对于12月份的报价,获取第二年12月的报价,如下图所示:

    原始数据是从网站上直接copy到excel表格中,所以有些数据在excel中的显示值和实际存储信息有些不一致。

    如上图所示,excel中B4单元格中,“Strip”列显示的是“18-Dec”,代表的意思是2018年12月,对应的“Price”是2018年12月的期货价格。但excel中实际存储的数据是“2017-12-18”,与显示值不一致。需要后续进行整理。

     

    1.1 导入pandas和bokeh:

    1.2 用pd.read_excel()方法从excel中读取相关数据:

    2、数据清洗、整理

    2.1 整理数据,使strip列显示跟excel中一致:

    用pandas从excel中读取数据后,发现“Strip”列的数据值跟excel中实际保存的信息是一致的,但这并不是我们所需要的结果,需要进行调整,使之跟excel中显示值一致,也是我们需要的对应的期货价格。

    运行结果如下:

    2.2 获取年底期货价格:

    从excel表格中获取的数据,通过观察,可以发现“Date”列的数据类型并不是日期类型,需要进行转化,以便后续分析中对日期进行操作。将“Date”列转换成日期格式,代码如下:

    从运行结果可以看出,经过转换后,“Date”列的数据类型是datetime类型了,可以在后续分析中继续使用。

    为了获取“Date”列对应日期当年度或次年度年底的期货价格,我们先添加2个辅助列,命名为“Year”和“Month”,对应的值分别是“Date”列的年份和月份,便于在后续分析中使用。

    为啥要添加辅助列呢,为啥要添加辅助列呢,不要问为啥了,我也是遇到好多坑之后,觉得直接设置辅助列可能更方便。

    添加辅助列后如下:

    处理特殊情况,12月数据:

    12月属于特殊情况,此处代码属于观察12月数据使用(数据未调整前),如下:

    将12月的数据进行处理后,结果如下:

    在将处理后的数据跟未进行调整前进行对比查看,发现报价日期是12月的价格,没有当年度年底的价格,而是第二年12月的价格,从而获取我们所需的信息。如下:

    接下来,用pandas的replace()方法将“Year”列的格式调整,使之跟“Strip”列一致,方便后续进行分析、判断:

    当Strip列和Year列两者相等时,即为对应日期的当年度或次年度12月的期货价格,最后将整理好的数据保存到csv文件中,如下:

    至此,针对原始数据的清洗和整理已完毕,上述是在jupyter notebook中分步骤的演示,为了方面查看,将上述代码合并如下(在代码中,将代码选中后,按 Ctrl+"/" 可以取消注释):

    3、数据可视化

    最后,在bokeh中针对数据信息进行可视化显示,当然,用matplotlib或者其他绘图包来可视化也是ok的。至于bokeh的进一步用法,本文暂不做详细描述。

    bokeh中用timeseries可视化后如下:

    闲谈:

    从上述曲线图来看,2006-2008年期间,价格经历了剧烈的波动,如果是在期初买入,期末卖出,估计要跳楼了~~~。笔者当年虽未买入,但也经历了这么一波,想起来也是哇凉哇凉的。

    4、源码分享

    最后,为了方便大家查看,本文的源代码及所用数据源,请从微信公众号获取:

     

  • 相关阅读:
    多测师讲解requests __上_高级讲师肖sir
    多测师讲解接口自动化测试 _requests_高级讲师肖sir
    jmeter录制
    构造函数
    函数和方法的区别
    python中类的定义
    jmeter图片的上传
    jmeter图片的下载
    jmeter出现乱码怎么解决
    jmeter目录讲解
  • 原文地址:https://www.cnblogs.com/lemonbit/p/6799193.html
Copyright © 2011-2022 走看看