winsorize缩尾处理命令,

  winsorize缩尾处理命令,

  拖尾处理相当于把数据(尾)捏成尾,然后按照一定的方法把捏好的数据填充进去。下面这篇文章主要介绍了Python中Winsorize尾部处理应用的相关信息,有需要的可以参考一下。

  最近做数据的时候,发现数据填在了原来空值或者无效值被截断的地方。在传统的研究中,先剔除空值,再进行截断,但有些不需要剔除空值的数据集需要剔除极值,所以截断不能省略。根据自己的操作经验做一些记录:

  以保存在Excel中的数据为例:

  从scipy.stats.mstats导入winsorize

  进口熊猫作为pd

  df=pd.read_excel(Excel.xlsx ,engine=openpyxl ,header=0)

  Df_list=[a , b , c]#要截断的列的名称

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

  对于df_list():中的I

  Df [i]=Winsorize (df [i],limits=[0.01,0.01]) # 1%和99% winsorize指定列中的连续数据。

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

  对于df_list():中的I

  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),如果条件为x,否则为y

  #这里判断是否为null,如果是,则为null,否则将被截断1%和99%以屏蔽null和无效值。

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

  对于df_list():中的I

  df[i]=winsorize(df[i],limits=[0.01,0.01],nan_policy=omit )

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

  对于df_list():中的I

  mask=df[i]。诺特娜()

  df.loc[mask,i]=winsorize(df[i])。loc[mask],limits=[0.01,0.01])

  #此掩码是一个布尔索引,指示哪些位置是nan。

  #例如,一列数据是[1,NaN,2]。如果用df[A]。isnan(),你将得到一个[False,True,False]的数组

  #这个数组就是所谓的mask,可以挑出dataframe中的特定数据。

  遇到了后续描述性统计有负无穷大值的问题,就用null值代替了。

  #如果您需要将一个无限值更改为空值

  df=df.replace(-np。Inf,np。南)

  (在此感谢张老师、李老师、孙老师不厌其烦的为我提供参考!)

  参考文章:

  1.1的正确方法。Python中Winsorize但忽略nan

  2.关于numpy.ma.masked_invalid的用法

  3.Python数据分析-尾部收缩处理

  总结

  关于Winsorize在Python中的应用的这篇文章就到这里了。更多关于Winsorize在Python中的应用,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门的IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: