網站首頁 編程語言 正文
最近搞數據時發現,縮尾時本來是空值或者無效值的地方被填補了數據。傳統的研究會將空值剔除后再進行縮尾,但一些不需要剔除空值的數據集需要剔除極端值,因而不能省略縮尾。結合自己的操作經驗做些記錄:
以保存在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)
(在此鳴謝不厭其煩給我提供參考的張老師、李老師、孫老師?。?/p>
參考文章:
1.Winsorize的正確方法但在Python中忽略nan
2.有關numpy.ma.masked_invalid的用法
3.Python數據分析 - 縮尾處理
總結
原文鏈接:https://blog.csdn.net/m0_53119847/article/details/122729777
相關推薦
- 2022-12-04 Python?棧實現的幾種方式及優劣詳解_python
- 2022-05-22 Flutter利用Canvas繪制精美表盤效果詳解_Android
- 2022-09-08 python輾轉相除法求最大公約數和最小公倍數的實現_python
- 2022-07-14 Nginx限流和黑名單配置的策略_nginx
- 2022-06-08 Spring源碼之Bean的掃描以及創建
- 2023-07-04 在SpringBoot中如何整合數據源?
- 2023-01-05 C++?Boost?Utility超詳細講解_C 語言
- 2022-09-09 PyCharm?設置數據庫,查詢數據庫語句方式_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支