pandas如何將dataframe中的NaN替換成None
pandas將dataframe的NaN替換成None
df = df.where(df.notnull(), None)
dataframe缺失值(NaN)處理
在進行機器學習的特征工程時,常常需要根據(jù)選擇的機器學習算法,采用合適的數(shù)據(jù)預處理方式,特別是對于對于空值(NaN)的處理,常常使人感到困惑。
一般對于NaN,常常有兩種處理方式:
- 第一種——填補。
- 第二種——不處理。
當你使用sklearn庫進行機器學習訓練時,一般對于缺失值要求較為嚴格,因此,需要進行填補,至于填補為何值,則需要根據(jù)業(yè)務需求進行。
當你使用lightgbm庫一類庫進行機器學習訓練時,一般不需要處理缺失值,因為這類算法,天然支持缺失值處理,它會將缺失值單獨分為一類。
本人認為,數(shù)據(jù)的缺失,在實際中是存在一定的業(yè)務含義的,例如月收入的缺失,就反應人對于自己收入的不自信,因此在風控領(lǐng)域就存在更容易逾期現(xiàn)象。但此時若是進行均值的缺失值填補,則會使該業(yè)務含義消失,因此我覺得是不可取的。
數(shù)據(jù)的特征工程決定數(shù)據(jù)質(zhì)量,數(shù)據(jù)質(zhì)量決定模型效果上限,模型參數(shù)決定訓練的模型能否逼近理論模型,特征工程的難易復雜程度決定模型最終上線的工作量。
(以上為本人的一點點見解)
判斷缺失值的函數(shù)有:np.isnan()/ pd.isna()/pd.isnull()。
np.isnan():一般用于單個值,也可以用于Series或者DataFrame,但是這里存在一個坑,np.isnan()判斷datetime類型的Series或者DataFrame會報錯。pd.isna()和pd.isnull():用的比較多,一般推薦使用pd.isna()
s1 = pd.Series([1,2,3,np.nan]) np.isnan(s1) >>> 0 False 1 False 2 False 3 True dtype: bool pd.isna(s1) >>> 0 False 1 False 2 False 3 True dtype: bool pd.isnull(s1) >>> 0 False 1 False 2 False 3 True dtype: bool
除了以上的方法之外,還有一種較為方便和萬能的方法來判斷缺失值,取出非缺失值進行處理(本人一般也采用這種方法)。
通過對np.nan==np.nan發(fā)現(xiàn),np.nan是不會等于np.nan,因此我們可以通過以下方式取出非缺失值。
np.nan==np.nan >>> False
s1 = pd.Series([1,2,3,np.nan]) s1==s1 >>> 0 True 1 True 2 True 3 False dtype: bool #獲取非缺失值 s1[s1==s1] >>> 0 1.0 1 2.0 2 3.0 dtype: float64 #獲取非缺失值的數(shù)量 len(s1[s1==s1]) >>>3 #對缺失值進行填補(除了fillna外的方式) s1[~(s1==s1)]=0 s1 >>> 0 1.0 1 2.0 2 3.0 3 0.0 dtype: float64
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python循環(huán)控制之break和continue流程控制語句
這篇文章主要介紹了python循環(huán)控制之break流程控制語句,Python中提供了兩個關(guān)鍵字用來控制循環(huán)語句,分別是break和continue,本文都有介紹,需要的朋友可以參考一下2022-03-03
python創(chuàng)建與遍歷List二維列表的方法
這篇文章主要介紹了python創(chuàng)建與遍歷List二維列表的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-08-08
Python讀取大型數(shù)據(jù)文件的6種方式匯總
在 Python 中,我們可以使用多種方法讀取大型數(shù)據(jù)文件,本文主要為大家介紹6個常用的Python讀取大型數(shù)據(jù)文件的方法,希望對大家有所幫助2023-05-05
Python使用raise報錯拋出異常顯示Unicode碼的解決方法
在 Python 開發(fā)中,我們經(jīng)常使用 raise 拋出異常來處理錯誤情況,但有時候,異常信息中的中文或其他非 ASCII 字符會被顯示為 Unicode 轉(zhuǎn)義序列,下面我們就來看看如何解決吧2026-04-04
python處理csv數(shù)據(jù)動態(tài)顯示曲線實例代碼
這篇文章主要介紹了python處理csv數(shù)據(jù)動態(tài)顯示曲線實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01

