網站首頁 編程語言 正文
一、缺失數據剔除
1. python 方式
獲取所有的缺失值,返回一個 true 和 false 的表
df.isnull()
統計缺失值,按照每一列統計
df.isnull().sum()
統計缺失值 按行
df.isnull().sum(axis='columns')
查看列 是否全部缺失
df.isnull().all()
剔除 植物園
這一列 2種方式
df1 = df.drop(columns='植物園') df1 = df.drop('植物園', axis=1)
通過數據索引的方式來剔除掉缺測數據。
列:
df1 = df.loc[:, ~(df.isnull().all())]
刪除所有 有缺失的行
df1[~(df1.isnull().any('columns'))]
這種方式看起來明顯比drop()的方式要復雜一點,那么是不是意味著我們就學drop()就行了,不用再去記住索引方式。
當然不是!drop()看起來簡單只是因為剛好只有一列需要剔除,加入我們需要剔除很多數據,那使用drop()就不足以完成任務,還是要配合索引的方式。
下面我們來看一下剔除行里的缺測值,上面的數據有很多行都有缺測值,如果在drop函數中一個一個填是很不現實的,那么我們看一下合理的解決方案應該是什么樣的。
2. DataFrame 方式
剔除列的缺失值
df.dropna(axis='columns', how='all', inplace=True)
剔除行的缺失值
df.dropna(axis='index', how='any', inplace=True)
二、缺失值補全
用前一行的數據填充
df.fillna(method='bfill')
用后一行的數據填充
df.fillna(method='bfill')
三、重復值剔除(按照行和列)
返回的是 True 和 False 的 列表
df.duplicated()
剔除重復行
df.drop_duplicates()
返回的是 True 和 False 的 列表
df.duplicated(subset=['天壇'], keep=False)
剔除 天壇 這列里面的所有重復值
df.drop_duplicates(subset=['天壇'], keep=False)
四、數值轉換
1. replace
單值轉換,將Nan 替換成 -9999
df.replace(np.nan, -9999)
多值轉化,將想替換的元素放在一個 [ ] 里就行
df.replace([np.nan, 0], -9999)
2. apply
replace可以進行簡單的數據替換,但如果想進行更為復雜的操作replace是無法完成的。
然而對DataFrame而言,apply是非常重要的數據處理方法,它可以接收各種各樣的函數(Python內置的或自定義的),處理方式很靈活,完成各種復雜的需求。他的實際作用是將函數作為一個對象,通過apply的調用對DataFrame里的數組元素應用這個函數。
只關注和設置這個規則,循環這種事情交給編程語言去處理
def aqi_level(aqi): if aqi>0 and aqi<=50: level = '優' elif aqi>50 and aqi<=100: level = '良' elif aqi>100 and aqi<=150: level = '輕度污染' elif aqi>150 and aqi<=200: level = '中度污染' elif aqi>200 and aqi<=300: level = '重度污染' else: level = '嚴重污染' return level # 數據預處理一下 將所有的類型都轉為 AQI aqi = df[df['type']=='AQI'] aqi['東四'].apply(aqi_level)
3.applymap
apply()可以實現對某一行或某一列的函數應用,如果想對DataFrame中的全部數值都使用這個函數來進行轉化我們就需要用到applymap()
#~aqi.columns.isin(['date', 'hour', 'type']) 取非這三列的所有列
aqi.loc[:, ~aqi.columns.isin(['date', 'hour', 'type'])].apply(np.mean, axis=0) aqi.loc[:, ~aqi.columns.isin(['date', 'hour', 'type'])].applymap(aqi_level)
原文鏈接:https://blog.csdn.net/qq_35240689/article/details/126995889
相關推薦
- 2022-05-20 python?使用turtle實現實時鐘表并生成exe_python
- 2022-07-31 一文理解Goland協程調度器scheduler的實現_Golang
- 2022-01-16 ES6新增聲明格式、變量解構賦值及模板字符串
- 2022-05-19 Pytorch使用技巧之Dataloader中的collate_fn參數詳析_python
- 2023-10-26 video標簽未自動播放,autoplay無效,video不能自動播放的原因分析
- 2024-04-08 nvm 在 Windows 上的使用
- 2024-01-27 解決“該項目不在請確認該項目位置,然后重試” 文件無法刪除問題
- 2022-08-12 C++鏈表實現通訊錄設計_C 語言
- 最近更新
-
- 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同步修改后的遠程分支