使用panelexpr处理面板数据

教程大全  / 倒序浏览   ©

#楼主# 2020-2-14

跳转到指定楼层

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

panelexpr是一个专门用于简化面板数据处置惩罚的包,利用方法类似于

  1. pandas.eval
复制代码
,利用一个字符串描述要求值的公式。但差别之处在于panelexpr是针对面板数据进行设计,可以大大简化需要反复分组求值的表达式。

安装

如果pip无法索引到,可能是利用了国内镜像但还没有同步,可手动指定官方源

利用方法

示例数据

sample_zh_2.csv:

DatewindcodeOpenHighLowCloseVolume
20170913000001.SZ1221.48801226.80341205.54171215.1095668237.42
20170914000001.SZ1215.10951232.11891194.91081203.4155883087.77
20170915000001.SZ1200.2261203.41551185.34301200.2263646094.81
20170918000001.SZ1195.97391203.41551190.65851195.9739607612.96
20170919000001.SZ1195.97391205.5421177.90141183.2168764212.62
20170913000002.SZ3473.69143576.66643431.12843536.8494467463.77
20170914000002.SZ3539.59543852.63953508.01643783.98951150696.14
20170915000002.SZ3775.75154149.20773771.63254022.89161550495.61
20170918000002.SZ3983.07464083.30363843.02853849.89351063043.07
20170919000002.SZ3881.47264132.73173858.13153950.12261196308.5

加载数据

计算

这里

  1. ma()
复制代码
称为运算符,也可以说是函数。它的第一个参数是列名,第二个为进行平均运算的时间窗口大小。所有继承自
  1. TimeSeriesOperator
复制代码
的算符利用方法都遵循这一模式。

  1. group_tag
复制代码
  1. time_tag
复制代码
都是用于分组的标签,相当于
  1. pandas.groupby
复制代码
的参数。这两个标签对表达式中的所有运算符都是有效的。
  1. panelexpr
复制代码
会根据运算符自身的特性(时序操作还是截面操作)利用适当的分组方法。时序运算符会根据
  1. group_tag
复制代码
进行分组,截面运算符会根据
  1. time_tag
复制代码
进行分组。如果表达式中仅涉及其中一种运算符,可以不指定另一个参数。

输出:

[	DISCUZ_CODE_9	]

自定义运算

 pd.Series: # 所有的自定义运算需要实现此方法        s = series.rolling(window).mean()        return s        pe.register("my_ma", MyMovingAverageOperator) # 注册运算符pe.eval("my_ma(Open, 2)", data=data, group_tag="windcode")[/code]

自定义运算符时要注意:

  1. 必须继承自
    1. TimeSeriesOperator
    复制代码
    1. DoubleSeriesOperator
    复制代码
    1. CrossSectionalOperator
    复制代码
    。利用时也必须遵循相应的规则。
  2. 自定义运算要实现
    1. eval
    复制代码
    方法。在实现中,不需要考虑分组操作,只需要当作单纯的时序数据或截面数据即可。返回序列长度需和输入序列长度一致且索引不变。
  3. 注册后的算符才为可以在
    1. pe.eval
    复制代码
    中利用。

优势

直观易用

  • 利用和
    1. pd.eval
    复制代码
    类似的公式描述方法
  • 通过利用自定义运算,可以方便地将适用于时间序列的运算应用于面板数据,比方移动平均,移动协方差等

  • 简化复杂公式的描述

算符之间可以不受限制地嵌套

不足

不支持求和等聚合操作

现在已支持的运算

底子运算

  1. +, -, *, \
复制代码

单序列时序运算

利用方法

  1. fun(col_name, window)
复制代码
,继承自
  1. TimeSeriesOperator
复制代码

  1. shift
复制代码
时间轴移位

  1. ma
复制代码
移动平均

  1. mstd
复制代码
移动方差

  1. mmax
复制代码
窗口内的最大值

  1. mmin
复制代码
窗口内的最小值

  1. ema
复制代码
指数移动平均

双序列时序运算

利用方法

  1. fun(col_name1, col_name2, window)
复制代码
,继承自
  1. DoubleSeriesOperator
复制代码

  1. mcov
复制代码
移动协方差

  1. mcorr
复制代码
移动相干系数

截面运算

利用方法

  1. fun(col_name)
复制代码
,继承自
  1. CrossSectionalOperator
复制代码

  1. rank
复制代码
求排序位次值

分享淘帖
回复

使用道具

您的回复是对作者最大的奖励

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于作者

13881871318

新手猿

  • 主题

    5

  • 帖子

    5

  • 关注者

    0

Archiver|手机版|小黑屋|云大陆 | 赣ICP备18008958号-4|网站地图
Powered by vrarz.com!  © 2019-2020版权所有云大陆