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

from scipy.stats.mstats import winsorize
import pandas as pd
df = pd.read_excel('Excel.xlsx', engine='openpyxl', header=0)
df_list=["a","b","c"]#需要进行缩尾的列名

1:直接应用Winsorize,不考虑空值和无效值,缩尾结果可能导致部分空值被填充数据

for i in df_list():df[i]=winsorize(df[i],limits=[0.01, 0.01])#对指定列中的连续数据进行1%和99%的缩尾(Winsorize)处理

2.1:屏蔽空值和无效值,仅对其他值进行Winsorize处理,缩尾结果不改变原来的空值和无效值

for i in df_list():df[i]=np.where(df[i].isnull(), np.nan, winsorize(np.ma.masked_invalid(df[i]),limits=(0.01,0.01)))
#np.where(condition, x, y),满足condition是x,否则y
#此处判断是否空值,是的话为空,否的话进行屏蔽空值和无效值的1%和99%缩尾处理

2.2:winsorize提供的参数,但这个方法我没有成功…仅供参考

for i in df_list():df[i]=winsorize(df[i],limits=[0.01, 0.01], nan_policy='omit')


3:屏蔽空值和无效值,对所有值进行Winsorize处理,缩尾结果不改变原来的空值和无效值,与方法2的区别在于方法3没有改变需要缩尾的数据长度

for i in df_list():mask = df[i].notna()df.loc[mask,i] = winsorize(df[i].loc[mask],limits=[0.01, 0.01]) #这个mask就是一个bool index,指示哪些位置上是nan#比如一列数据是[1, NaN, 2],如果用df['A'].isnan()得到的就是一个[False, True, False]的数组 #这个数组就是所谓的mask,它可以把dataframe中的特定数据挑出来

我碰到后续描述性统计有负无穷值的问题,因而将其替换为空值

#如果需要将无穷值换为空值
df=df.replace(-np.Inf,np.NaN)

(在此鸣谢不厌其烦给我提供参考的张老师、李老师、孙老师!)
参考文章:
1.Winsorize的正确方法但在Python中忽略nan
2.有关numpy.ma.masked_invalid的用法
3.Python数据分析 - 缩尾处理

【Python中应用Winsorize缩尾处理的心得】相关推荐

  1. python缩写词_扩展Python中的英语缩略词

    我把wikipedia的扩展页面压缩成python字典(见下文) 请注意,如您所料,在查询字典时,您一定要使用双引号: 另外,我在维基百科页面中留下了多个选项.你可以随意修改它.注意,对右展开的消歧将 ...

  2. 缩尾处理(winsorize)-数据分析、数据处理

    文章目录 原理浅析 一个例子说清楚怎么用Python实现 一个正态分布缩尾处理的例子 see also 原理浅析 和经常听到的"去掉一个最低分去掉一个最高分"操作类似,缩尾处理相当 ...

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

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

  4. python中tensor与variable_NLP实战篇之tf2中tensor、variable、gradient、ops

    本文是基于tensorflow2.2.0版本,介绍了tf中变量.张量的概念,tf中梯度的计算方式和tensor相关的操作. 实战系列篇章中主要会分享,解决实际问题时的过程.遇到的问题或者使用的工具等等 ...

  5. python中列表和集合_15个例子掌握Python列表,集合和元组

    Python中的一切都是对象.每个对象都有自己的数据属性和与之关联的方法.为了有效和恰当地使用一个对象,我们应该知道如何与它们交互. 列表.元组和集合是三种重要的对象类型.它们的共同点是它们都被用作数 ...

  6. 教你在Python中实现潜在语义分析(附代码)

    作者:PRATEEK JOSHI 翻译:李润嘉 校对:万文菁 本文约3400字,建议阅读15分钟. 本文将通过拆解LSA的原理及代码实例来讲解如何运用LSA进行潜在语义分析. 介绍 你有没有去过那种运 ...

  7. 第五章 python中正则表达式的使用

    第一节    正则表达式的一些介绍 1)掌握正则表达式的案例 2)写一个小爬虫 3)正则表达式(或RE)是一个小型的.高度专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实 ...

  8. 链表list(链式存储结构实现)_VOL.2 如何在python中实现链式存储结构

    一.前言 链式存储作为一种重要的数据存储方式有着极强的数据组织能力.灵活型和动态性,在众多数据结构中应用非常广泛.所谓链式存储结构,就是采用分散的存储空间分别存储每一组数据再通过地址链接的形式将全部数 ...

  9. python中标识符下划线用作开头_python python中那些双下划线开头的那些函数都是干啥用用的...

    1.写在前面 今天遇到了__slots__,,所以我就想了解下python中那些双下划线开头的那些函数都是干啥用用的,翻到了下面这篇博客,看着很全面,我只了解其中的一部分,还不敢乱下定义. 其实如果足 ...

最新文章

  1. visual studio 插件开发(5) -- 在任意位置添加自己的菜单
  2. Spring AOP + AspectJ Annotation Example---reference
  3. linux ps查看进程命令
  4. 使用Popup窗口创建无限级Web页菜单(5)
  5. Maven实战读书笔记(3)
  6. bios sgx需要开启吗_Win10改Win7,UEFI改Legacy 启动,修改BIOS大全
  7. 计算机是如何执行代码的?
  8. 图文详解超五类网线的接法
  9. HR问:“对我们公司你有什么问题要问的吗”,怎样回答才算完美!
  10. 构建用户画像-标签体系
  11. python求幂_python矩阵求幂
  12. 5 月最大的 GameFi 崩溃受害者能否在熊市中生存?| May Monthly Report
  13. [HITML]哈工大2020秋机器学习复习笔记
  14. linux环境下安装cwp的地震专业软件su
  15. SylixOS操作系统自学经历(一)
  16. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
  17. Eclipse插件大全 (下)
  18. 人工智能导论笔记-第四章-不确定性推理方法
  19. Parsec测试基准程序在zynq板上测试
  20. 线下沙龙 | EOS入门及最新技术解读

热门文章

  1. 听力测试软件电脑版,磨耳英语听力电脑版
  2. Unity3D--Procedural buildings
  3. 程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)
  4. 冶金工业室内定位方案详解
  5. 基于TI CC254X+iBeacon的室内定位解决方案
  6. 【点晴OA】创造用户体验最好的免费OA系统
  7. C++语言程序设计(第四版)清华大学 郑莉 实验6实习报告
  8. 用extundelete恢复Ubuntu Linux下删除的文件
  9. 在自家房子住了30年却被驱逐,区块链如何破解这一难题?
  10. [2022 SP] Copy, Right? 深度学习模型版权保护的测试框架