Python中應(yīng)用Winsorize縮尾處理的操作經(jīng)驗(yàn)
最近搞數(shù)據(jù)時(shí)發(fā)現(xiàn),縮尾時(shí)本來是空值或者無效值的地方被填補(bǔ)了數(shù)據(jù)。傳統(tǒng)的研究會(huì)將空值剔除后再進(jìn)行縮尾,但一些不需要剔除空值的數(shù)據(jù)集需要剔除極端值,因而不能省略縮尾。結(jié)合自己的操作經(jīng)驗(yàn)做些記錄:
以保存在Excel中的數(shù)據(jù)為例:
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"]#需要進(jìn)行縮尾的列名
1:直接應(yīng)用Winsorize,不考慮空值和無效值,縮尾結(jié)果可能導(dǎo)致部分空值被填充數(shù)據(jù)
for i in df_list():
df[i]=winsorize(df[i],limits=[0.01, 0.01])#對指定列中的連續(xù)數(shù)據(jù)進(jìn)行1%和99%的縮尾(Winsorize)處理
2.1:屏蔽空值和無效值,僅對其他值進(jìn)行Winsorize處理,縮尾結(jié)果不改變原來的空值和無效值
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
#此處判斷是否空值,是的話為空,否的話進(jìn)行屏蔽空值和無效值的1%和99%縮尾處理
2.2:winsorize提供的參數(shù),但這個(gè)方法我沒有成功…僅供參考
for i in df_list():
df[i]=winsorize(df[i],limits=[0.01, 0.01], nan_policy='omit')

3:屏蔽空值和無效值,對所有值進(jìn)行Winsorize處理,縮尾結(jié)果不改變原來的空值和無效值,與方法2的區(qū)別在于方法3沒有改變需要縮尾的數(shù)據(jù)長度
for i in df_list():
mask = df[i].notna()
df.loc[mask,i] = winsorize(df[i].loc[mask],limits=[0.01, 0.01])
#這個(gè)mask就是一個(gè)bool index,指示哪些位置上是nan
#比如一列數(shù)據(jù)是[1, NaN, 2],如果用df['A'].isnan()得到的就是一個(gè)[False, True, False]的數(shù)組
#這個(gè)數(shù)組就是所謂的mask,它可以把dataframe中的特定數(shù)據(jù)挑出來
我碰到后續(xù)描述性統(tǒng)計(jì)有負(fù)無窮值的問題,因而將其替換為空值
#如果需要將無窮值換為空值 df=df.replace(-np.Inf,np.NaN)
(在此鳴謝不厭其煩給我提供參考的張老師、李老師、孫老師?。?/p>
參考文章:
1.Winsorize的正確方法但在Python中忽略nan
2.有關(guān)numpy.ma.masked_invalid的用法
總結(jié)
到此這篇關(guān)于Python中應(yīng)用Winsorize縮尾處理的文章就介紹到這了,更多相關(guān)Python應(yīng)用Winsorize縮尾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Python實(shí)現(xiàn)讀取照片的Exif信息
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)讀取照片的Exif信息,文中的示例代碼簡潔易懂,具有一定的參考價(jià)值,有需要的小伙伴可以參考下2023-10-10
Python3實(shí)現(xiàn)Web網(wǎng)頁圖片下載
這篇文章主要介紹了Python3通過request.urlopen實(shí)現(xiàn)Web網(wǎng)頁圖片下載,感興趣的小伙伴們可以參考一下2016-01-01
Python二進(jìn)制文件讀取并轉(zhuǎn)換為浮點(diǎn)數(shù)詳解
這篇文章主要介紹了Python二進(jìn)制文件讀取并轉(zhuǎn)換為浮點(diǎn)數(shù)詳解,用python讀取二進(jìn)制文件,這里主要用到struct包,而這個(gè)包里面的方法主要是unpack、pack、calcsize。,需要的朋友可以參考下2019-06-06
Python利用pynput實(shí)現(xiàn)劃詞復(fù)制功能
這篇文章主要為大家想詳細(xì)介紹了Python如何利用pynput實(shí)現(xiàn)劃詞復(fù)制功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05
Python RPA自動(dòng)化機(jī)器人模擬鼠標(biāo)鍵盤
這篇文章主要介紹了Python RPA自動(dòng)化機(jī)器人模擬鼠標(biāo)鍵盤,RPA,全稱為Robotic Process Automation,即機(jī)器人流程自動(dòng)化。我們可以利用RPA技術(shù)將工作中可重復(fù)的部分流程化,讓機(jī)器替我們完成這一工作2023-02-02
python實(shí)現(xiàn)對任意大小圖片均勻切割的示例
今天小編就為大家分享一篇python實(shí)現(xiàn)對任意大小圖片均勻切割的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
詳解Python 多線程 Timer定時(shí)器/延遲執(zhí)行、Event事件
這篇文章主要介紹了Python 多線程 Timer定時(shí)器/延遲執(zhí)行、Event事件的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06

