jqfactor_analyzer icon indicating copy to clipboard operation
jqfactor_analyzer copied to clipboard

update-pandas for vresion 2.2.2

Open sunshe35 opened this issue 1 year ago • 2 comments

更新匹配pandas最新版2.2.2
主要内容如下:

  • 默认情况下,要指定group_keys=False,否则结果会多一个group level。但是部分场景又需要设置group_keys=True,所以对所有groupby都设置了group_keys参数,将来pandas升级到3.0也能适用。
grouby(group,group_keys=False).apply(func)
  • df.iteritems()已经弃用,变更为df.items()
  • get_forward_returns_columns()方法中,改进了 (年化)加权平均/标准差 计算逻辑,原来嵌套3层apply,现在只需要一层。
  • 月度类型由M变成 ME
  • pd.Int64Index([1, 2], name='group')已经弃用,变更为 pd.Index([1, 2],name='group', dtype='int64')
  • gitignore新增test?.py test?.ipynb 忽略文件,方便写测试代码。
  • 其他小细节。

sunshe35 avatar Jun 11 '24 09:06 sunshe35

通过我的修改,使用pandas最新版2.2.2,官方demo可以成功运行。

# 载入函数库
import pandas as pd
import jqfactor_analyzer as ja

# 获取 jqdatasdk 授权,输入用户名、密码,申请地址:http://t.cn/EINDOxE
# 聚宽官网,使用方法参见:http://t.cn/EINcS4j
import jqdatasdk
jqdatasdk.auth('', '')

# 获取5日平均换手率因子2018-01-01到2018-12-31之间的数据(示例用从库中直接调取)
# 聚宽因子库数据获取方法在下方
from jqfactor_analyzer.sample import VOL5
factor_data = VOL5.iloc[:30,:30]


# 对因子进行分析
far = ja.analyze_factor(
    factor_data,  # factor_data 为因子值的 pandas.DataFrame
    quantiles=10,
    periods=(1, 10),
    industry='jq_l1',
    weight_method='avg',
    max_loss=0.1
)

print(far.ic)


# 生成统计图表
far.create_full_tear_sheet(
    demeaned=False, group_adjust=False, by_group=False,
    turnover_periods=None, avgretplot=(5, 15), std_bar=False
)

sunshe35 avatar Jun 11 '24 09:06 sunshe35

我估计官方不会merge这个pull-request了,毕竟更新pandas版本可能和聚宽其他的官方sdk有冲突。

kia69028 avatar Jul 23 '25 10:07 kia69028