,,Python中应用Winsorize缩尾处理的操作经验

,,Python中应用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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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