专栏首页听雨堂按照百分比取出数据的去极值方法

按照百分比取出数据的去极值方法

去极值的方法,可以用均值加n倍的方差,来过滤,也可以用中位数加上下范围来过滤。如聚宽就提供了winsorize和winsorize_med等方法。

但我总觉得不合心意,第一,这个过程本来就是需要不断调整参数的,最好能够按照一定步长来取数据,逐条显示取出数据的数量,占比,方差等。此外,参数最好指定数据的百分比,用户只要指定百分比,就能够获得相应的数据。基于此,设计了一个函数。

from pandas import Series, DataFrame
from jqfactor import winsorize_med
def data_dist(data,step=0.1,maxstep=1,outratio=0.9): #以中位数为中心,数据的分布
    print("数据分布,以中位数为中心,默认步长0.1,通过step参数指定,max指定最大step,outratio指定输出百分比(0.9)")
    med=data[0].median()
    d=max(data[0].max()-med,med-data[0].min())  #最大幅度
    f=step    
    out=None
    while(f<maxstep):
        d2=data[(data[0]<med+f*d) & (data[0]>med-f*d)]
        print("%.2f %.2f%% %d var:%.2f"%(f,len(d2)*100.0/len(data),len(d2),d2[0].std()/med))
        if len(d2)*1.0/len(data)>=outratio and out is None:
            out=d2.copy(deep=False)
        f+=step
    return out

这个方法融交互和获取数据于一体,可以一边交互测试,一边设定参数,很python!

取广晟有色1000天的成交量分析,看看效果

arr=get_bars("600259.XSHG", count=1000, unit='1d',fields=['date', 'high','low','volume'],end_dt="2018-12-31")
vol=DataFrame(arr["volume"])
o=data_dist(vol,step=0.01,maxstep=0.5,outratio=0.8)
vol.plot()
o.plot()
print("%d"%(vol.median()))
print("%d"%(vol.mean()))
print("%d"%(o.mean()))

把dataframe传递进去就可以了,默认以中位数为中心,中位数到上下限的最大距离为参考,以指定步长为上下界,取出数据。

可以看出,按80%取出的数据,比原始数据要更加集中,中心点也更加合理

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试数据的整理(1)

    “星文快投”的目标,始终都是想做一个投标工具,不涉及策略。但事与愿违,没有数据支撑,所有操作都变得像在迷雾中前行,既不知道前进方向,也不知道前面是否有大坑等着。...

    用户1075292
  • 程序实现下载文件或者打开文件

    FileInfo DownloadFile = new FileInfo("c:\\a.doc"); // 下面到就是读取文件,通过数据流的方式下载了。 ...

    用户1075292
  • Python练习环境搭建-引入预定义数据

    学习Python,有大量的需要在交互式环境下练习的项目,这时数据来源就很麻烦了,手工输入太慢,写到程序中,运行方便,但各种实验又不方便。昨天试了半天也无法从vs...

    用户1075292
  • [Python3 开发技巧]·如何打乱字典中多个对应数组

    当我们把数个对应数组保存到字典中,在我们读取的时候这些数据会按照我们保存的顺序读取出来。如果我们需要打乱顺序,但不改变对应数组的关系时,例如原先位置0对应的各个...

    小宋是呢
  • 「R」绘制分组排序点图

    我在看过的一些 Nature 文章和 COSMIC 数据库中看到用点图来展示不同癌症类型下 TMB 的分布差异。在 R 包中,我有看到过 maftools 中可...

    王诗翔呀
  • 搭建简易的物联网服务端和客户端-DCloud手机端(十)

    1)介绍 官方介绍:最接近原生APP体验的高性能前端框架 网址:http://dev.dcloud.net.cn/mui/

    治电小白菜
  • jquery mobile 移动web(1)

    轻量级框架jQuery Mobile   所需文件     <link rel="stylesheet" href="jquery.mobile-1.1.2/...

    用户1197315
  • BootstrapTable,选中某几行,获取其数据并进行后台处理。以及其他的属性使用。

    1、首先将复选框搞出来,<table data-single-select="true"> 属性,限制了只能单选。去除以后添加<th data-checkbox...

    别先生
  • 智源小分子预测赛进行中:基于CatBoost建模的baseline分享

    赛题任务为根据从小分子结构中提取的3177个维度特征,预测小分子的六个化学性质。作者将赛题归纳为一个回归问题,直接训练六个模型来分别预测对应的六个性质,此bas...

    大数据文摘
  • 译文 | 在使用过采样或欠采样处理类别不均衡数据后,如何正确做交叉验证?

    最近读的一篇英文博客,讲的很不错,于是便抽空翻译成了中文。 [关于我在这篇文章中使用的术语可以在 Physionet (http://www.physionet...

    用户1332428

扫码关注云+社区

领取腾讯云代金券