1缺失值的統計和刪除?
1.1的缺失信息統計
缺失數據可以用isna或isnull(兩個函數沒有區別)檢查每個單元格是否缺失,結合sum可以計算出每列缺失值的比例。
如果您想查看某壹列的缺失行或未缺失行,可以在Series上使用isna或notna進行布爾索引。例如,查看缺少高度的行:
如果您希望同時檢索所有缺失的行或至少壹個缺失的行或幾列中沒有缺失的行,您可以使用isna、notna和any any、all的組合。例如,分別針對這三個條件搜索身高、體重和應變這三列。
1.2刪除缺失信息
在數據處理中,經常需要根據缺失值的大小、比例或其他特征來刪除行樣本或列特征,熊貓中提供了dropna函數來進行操作。
dropna的主要參數是軸方向的軸(默認為0,即刪除行)、如何刪除、要刪除的非缺失值個數的閾值(對應的非缺失值未達到此個數的維度將被刪除)、刪除的備選子集,其中how主要有兩個參數可供選擇。
2缺失值的填充和插值?
2.1用fillna填充?
fillna中有三個常用的參數:值、方法、限制。其中,value是填充值,可以是標量,也可以是從索引到元素的字典映射;方法是壹種填充方法,可以用前面的元素填充ffill,用後面的元素填充bfill。極限參數表示連續缺失值的最大填充次數。
2.2插值函數?
在interpolate函數的文檔描述中,列舉了很多插值方法,包括Scipy中的大量方法。由於很多插值方法涉及復雜的數學知識,這裏只討論三種常用且簡單的情況,即線性插值、最近鄰插值和指數插值。
對於插值,除了插值方法(默認為線性線性插值),還有兩個類似fillna的常用參數,壹個是控制方向的limit_direction,壹個是控制插值最大連續缺失值個數的limit。其中,受限插值的方向默認為向前,類似於fillna方法中的ffill。如果需要向後限制插值或雙向限制插值,可以指定向後或兩者都指定。
多項式和樣條插值的註意事項
如果在插值中選擇多項式插值方法,則由Scipy進行內部調整。插值。Interp1d (*,*,Kind = order),而且這個函數是用make_interp_spline方法內部調整的,所以實際上是樣條插值而不是類似於numpy中的多項式擬合插值。使用樣條方法時,pandas調用Scipy。插值。單變量樣條代替普通樣條插值。該部分文檔描述混亂,該參數設計不合理。在使用這兩種插補方法時,用戶必須根據自己的實際需要謹慎選擇合適的插補方法。
3可空類型
3.1缺失標誌及其缺陷
python中缺少的值由None表示,它不等於除自身以外的任何其他元素:
在numpy中,np.nan用於表示缺失值。此元素不等於任何其他元素,與自身的比較結果也返回False。
值得註意的是,雖然np.nan的對應位置在比較缺失序列或表的元素時會返回False,但在使用equals函數檢查兩個表或兩個序列的同壹性時,會自動跳過兩個表都缺失值的位置,直接返回True:
在時序對象中,pandas使用pd。NaT來引用缺失值,其功能與np.nan壹致。
那麽為什麽要引入pd呢。NaT來表示時間對象的缺失?還以np.nan的形式存儲有什麽問題?您可以在pandas中看到object類型的對象,object是壹種混合對象類型。如果同時有多種類型的元素串行存儲,其類型將變為Object。
NaT問題的根源來自於np,nan本身就是浮點型,而浮點型和時間型混合的話,如果不設計新的內置缺失型來處理,就會變成壹個模棱兩可的對象類型,顯然是不可取的。
同時,由於np.nan的浮點性質,如果在整數序列中缺失,其類型將改為float 64如果在布爾序列中有壹個刪除,它的類型將變成object而不是Bool。
所以熊貓在進入1.0.0版本後,嘗試設計了新的刪除型pd。NA和三種可空序列類型來處理這些缺陷,分別是Int,boolean和string。
3.2可空類型的性質
從字面上看,Nullable就是可空的,這意味著序列類型不受缺少值的影響。例如,上述三種可空類型中存儲的缺失值將全部轉換為pd。娜變成了熊貓。
在Int的序列中,返回的結果將盡可能可空。
布爾序列和布爾序列有兩個主要區別:
第壹點是在索引器中不能選擇有缺失值的布爾型列表,布爾型會將缺失值視為False。
第二點是在執行邏輯運算時,bool類型總是在缺失的地方返回False,boolean會根據邏輯運算是否能確定唯壹結果返回相應的值。妳什麽意思,妳能決定唯壹的結果嗎?舉個簡單的例子:True | pd。無論缺失值是多少,NA都壹定會返回truefalse | PD . na中的結果會根據缺失值的值發生變化,此時會返回PD . na;虛假& amp不管pd中缺失的值是多少?NA,它必須返回False。
3.3缺失數據的計算和分組
當sum和prob被調用使用加法和乘法時,缺失的數據相當於分別被處理為0和1,即不改變原來的計算結果。
使用累加函數時,會自動跳過缺失值的位置:
在進行單個標量運算時,除了np.nan ** 0和1 ** np.nan是確定值外,所有運算結果都是缺失的(pd的行為。NA與此壹致),而NP。Nan在比較操作時必須返回False,而pd。NA返回pd.NA。
另外需要註意的是,雖然diff,pct_change的功能相似,但是在處理缺失方面是不同的。前者中所有參與缺失計算的部分都被設置為缺失值,而後者中缺失值的位置將被設置為0%變化率。
對於某些函數,缺失可以作為壹個類別來處理。例如,在groupby,get_dummies中,可以設置相應的參數來添加缺失的類別:
4練習?
4.1 Ex1:缺失值和類別之間的相關性測試
4.2例2:用回歸模型解決分類問題