文章目录

  • 原理浅析
  • 一个例子说清楚怎么用Python实现
  • 一个正态分布缩尾处理的例子
  • see also

原理浅析

和经常听到的“去掉一个最低分去掉一个最高分”操作类似,缩尾处理相当于对数据进行掐头(尾)去尾,然后再按照一定的方法填补被掐掉的数据。需要注意的是,缩尾处理并不是掐掉指定个数的数据,而是按照比例,比方说删掉前10%和后20%的数据。

一个例子说清楚怎么用Python实现

话不多说,直接搬运scipy.stats.mstats.winsorize
一个例子说的清清楚楚,而且还把轮子也搬出来了。Python调个包就能用了

>>> from scipy.stats.mstats import winsorize
>>> import numpy as np
>>> a = np.array([10, 4, 9, 8, 5, 3, 7, 2, 1, 6])
>>> winsorize(a, limits=[0.1, 0.2])
masked_array(data=[8, 4, 8, 8, 5, 3, 7, 2, 2, 6],mask=False,fill_value=999999)

代码注释:

  • 将一个从1到10的数组的顺序打乱,得到a
  • 掐掉最小的10%的数据,同时用2去替换
  • 掐掉最大的20%的数据,同时用8去替换

一个正态分布缩尾处理的例子

import numpy as np
from scipy.stats.mstats import winsorize
import matplotlib.pyplot as pltnp.random.seed(12345)
data = np.random.standard_normal(12345)
data_winsorize = winsorize(data, limits=[0.025, 0.025])
lower_band = np.percentile(data, 2.49)  # 避开临界点
upper_band = np.percentile(data, 97.51)  # 避开临界点
bins = [min(data), lower_band, -1, 0, 1, upper_band, max(data)]  # 注意区间是左闭右开,所以要避开临界点
plt.hist(data,# alpha=0.15,label='data',bins=bins,color='b'
)
plt.figure()
plt.hist(np.array(data_winsorize),# alpha=0.15,label='data_winsorize',bins=bins,color='r'
)
plt.legend()

结果如图所示

see also

  1. SciPy专栏
  2. 时间序列特征提取
  3. sklearn/scikit-learn孤立森林(IsolationForest)中decision_function和score_samples函数的区别和联系

缩尾处理(winsorize)-数据分析、数据处理相关推荐

  1. 【Python中应用Winsorize缩尾处理的心得】

    最近搞数据时发现,缩尾时本来是空值或者无效值的地方被填补了数据.传统的研究会将空值剔除后再进行缩尾,但一些不需要剔除空值的数据集需要剔除极端值,因而不能省略缩尾.结合自己的操作经验做些记录: 以保存在 ...

  2. ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)

    ML之FE:利用[数据分析+数据处理]算法对国内某平台上海2020年6月份房价数据集[12+1]进行特征工程处理(史上最完整,建议收藏) 目录 利用[数据分析+数据处理]算法对链家房价数据集[12+1 ...

  3. 数据分析---数据处理工具pandas(二)

    文章目录 数据分析---数据处理工具pandas(二) 一.Pandas数据结构Dataframe:基本概念及创建 1.DataFrame简介 2.创建Dataframe (1)方法一:由数组/lis ...

  4. Stata安装外部命令——以Winsor2缩尾命令为例

    说明 计量经济学中经常要对数据进行缩尾处理,winsor是Stata中常用的缩尾命令,需要安装才能调用. 安装winsor2 方法一:ssc install winsor2 方法二:findit wi ...

  5. winsor2:离群值和异常值的缩尾处理

    全文阅读:https://www.lianxh.cn/news/29b1139efd0bb.html 目录 1. 异常值(离群值) 2. winsor2 2.1 winsor2 的简介 2.2 win ...

  6. 缩尾处理、均值和中位数的差异检验

    缩尾处理 如果样本量很大的时候,为了防止异常值对研究结果的影响,通常对连续变量进行缩尾处理.缩尾处理的思想:将超出变量特定百分位范围的数值替换为其特定百分位数值的方法 对于离群值的处理有取对数和缩尾处 ...

  7. python 数据分析--数据处理工具Pandas(2)

    数据处理模块--Pandas 4. Pandas处理字符串和日期数据 5. Pandas 数据清洗 5.1 重复观测处理 5.2 缺失值处理 5.2.1 删除法 5.2.2 替换法 5.3 异常值处理 ...

  8. 互联网业务数据分析- 数据处理

    本文简单介绍互联网业务数据分析中的数据处理,主要包括excel的数据格式化.数据清洗步骤以及数据的二次处理,此外,还简单介绍了数据如何进行快如呈现以及一些市面上较为好用的数据可视化工具.

  9. 数据分析——数据处理

    数据处理步骤 1.数据清洗 1)处理缺失值  ①查看   df.info():查看数据基本信息  ②查找   df.isna():查找DataFrame对象缺失值,缺失数据用True表示,False表 ...

最新文章

  1. ai为什么要栅格化_英语学习为什么不能“碎片化”?要想学好英语,系统化是关键...
  2. 判断一颗二叉树是否是平衡二叉树
  3. matplotlib -work4
  4. 大型网站系统架构实践(一)从简单到复杂
  5. Android零基础入门第86节:探究Fragment生命周期
  6. 数据库建表设计规范及原则
  7. pkgm : 压缩包维护与解压脚本
  8. ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题...
  9. nginx系列第一篇:nginx源码下载,编译和安装
  10. 机器学习视频课程(超清完整11周)分享给大家!
  11. 证件阅读机所能识别的类型与应用
  12. Python3对多股票的投资组合进行分析
  13. 淘宝数据魔方技术架构解析阅读心得
  14. 分段点处导数怎么求,导数和导函数的极限有关系吗?
  15. 有哪些值得推荐的,关于脑科学认知研究的经典书籍 ?
  16. 成功需要培养独特的眼光,芸赞通天下沈杨
  17. PC端如何同时登录多个微信账号
  18. tensorflow-gpu版本使用问题和方法汇总
  19. 打印机服务器型号有哪些,第二章 D-Link 打印机服务器支持打印机型号清单.pdf
  20. Linux (Centos)删除文件找回

热门文章

  1. PPT里面实现动态图表
  2. android不同activity是ruhr进行通信和数据传递,Preface.
  3. Visual Studio Console 无法关闭
  4. C语言操作符之前置++/后置++
  5. 台球和斯诺克设备行业调研报告 - 市场现状分析与发展前景预测
  6. 简单了解background-origin
  7. php文件上传时文件大小超出限制如何解决?
  8. delphi txmldocument报错 no active document
  9. Internet Download Manager2023最新永久版下载及功能介绍
  10. linux 从摄像头采集一帧 jpg,基于Video4Linux 的USB 摄像头图像采集实现.pdf