網站首頁 編程語言 正文
一、缺失值的判斷
在通過Pandas做數據分析時,數據中往往會因為一些原因而出現缺失值NaN (Nota number)o比如前文中的例子,當兩個DataFrame對象進行簡單運算時,無法匹配的位置會出現缺失值NaN或者None.
isnull ( )和notnull ( )方法都可以用于判斷數據是否為缺失值( NaN或者None).如果是缺失值,則isnull()返回值為True, notnull()返回值為False.
df2
Out[170]:
A B C D
a 2.0 4.0 6.0 NaN
b 6.0 8.0 10.0 NaN
c 10.0 12.0 14.0 NaN
df2.isnull()
Out[171]:
A B C D
a False False False True
b False False False True
c False False False True
df2.notnull()
Out[172]:
A B C D
a True True True False
b True True True False
c True True True False
二、缺失值數據的過濾
有時遇到包含缺失值的數據處理起來比較簡單,只需要保留有數值的數據即可:
df2
Out[182]:
A B C D
a 2.0 4.0 6.0 NaN
b 6.0 8.0 10.0 NaN
c 10.0 12.0 14.0 1.0
#把D列中的缺失值過濾掉
df2.D[df2.D.notnull()]
Out[183]:
c 1.0
Name: D, dtype: float64
三、缺失值數據的填充
有時處理數據時我們會想將缺失值用實際的值做替代,Pandas包里也有函數可以調 用:DataFrame.fillna(value=None, method = None, axis = None, inplace=False, limit=None)
參數value是在缺失值處填充的值,可以是數值數字,也可以是字符串;method 是填充的方式,默認為None,也可以取值為ffin、pad、bfill或backfill,其中ffill/pad是用行或列方向上的上一個觀測值來填充缺失值,bfill/backfin是用行或列方向上的下一個觀測 值來填充;axis與method配合使用,指定行(axis=l)或列(axis=0)的方向;limit=None 時,會填充連續的缺失值,如果指定數值的話,比如limit=2,只會依次填充連續NaN值的 指定數字個數(比如2個);若inplace=False則不會變更原DataFrame,若inplace=True, 則會改變原DataFrame。
import pandas as pd
import numpy as np
h2h2df=pd.DataFrame(np.arange(1,21).reshape(5,4),index=list('abcde'),columns=list("ABCD"))
h2df.loc['c','A']=np.nan
h2df.loc['b':'d','C']=np.nan
h2df
Out[192]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 NaN 8
c NaN 10 NaN 12
d 13.0 14 NaN 16
e 17.0 18 19.0 20
h2df.fillna(0)
Out[193]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 0.0 8
c 0.0 10 0.0 12
d 13.0 14 0.0 16
e 17.0 18 19.0 20
h2df.fillna(method='ffill')
Out[194]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 3.0 8
c 5.0 10 3.0 12
d 13.0 14 3.0 16
e 17.0 18 19.0 20
h2df.fillna(method='pad')
Out[197]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 3.0 8
c 5.0 10 3.0 12
d 13.0 14 3.0 16
e 17.0 18 19.0 20
h2df.fillna(method='backfill',axis=1)
Out[196]:
A B C D
a 1.0 2.0 3.0 4.0
b 5.0 6.0 8.0 8.0
c 10.0 10.0 12.0 12.0
d 13.0 14.0 16.0 16.0
e 17.0 18.0 19.0 20.0
h2df.fillna(method='ffill',limit=2)
Out[198]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 3.0 8
c 5.0 10 3.0 12
d 13.0 14 NaN 16
e 17.0 18 19.0 20
四、缺失值的刪除
Pandas提供對包含缺失值的數據集進行行列的刪除操作:
DataFrame.dropna(axis=0, how=‘any’, thresh=None)?
axis = 0指刪除包含缺失值的行,axis = 1指刪除包含缺失值的列,默認為0; how=any表示只要有一個缺失值就刪除該行(列),how = all表示只有當所有的元素都為缺失值時才刪除該行(列),how默認取值為any;thresh默認為None。當thresh=5時表示只有當某行(列)缺失值的數量大于或者等于5時刪除該 行(列)。
df
Out[199]:
A B C D
a 1.0 2 3.0 4
b 5.0 6 NaN 8
c NaN 10 NaN 12
d 13.0 14 NaN 16
e 17.0 18 19.0 20
df.dropna(axis=0)
Out[200]:
A B C D
a 1.0 2 3.0 4
e 17.0 18 19.0 20
df.dropna(axis=1)
Out[201]:
B D
a 2 4
b 6 8
c 10 12
d 14 16
e 18 20
原文鏈接:https://blog.csdn.net/hudashi/article/details/124720180
相關推薦
- 2022-07-07 ASP.NET對Cookie的操作_ASP.NET
- 2022-11-19 C#字符串與正則表達式的圖文詳解_C#教程
- 2022-09-23 Golang分布式應用之Redis示例詳解_Golang
- 2022-09-22 登錄、注冊相關業務邏輯(模擬登錄、注冊)-H5本地存儲
- 2022-07-25 Android自定義View原理(實戰)_Android
- 2022-08-03 GoFrame框架garray并發安全數組使用開箱體驗_Golang
- 2023-01-18 一文帶你了解Qt中槽的使用_C 語言
- 2022-04-10 git本地提交到遠程倉庫報錯error: failed to push some refs to
- 最近更新
-
- 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同步修改后的遠程分支