Pandas學習筆記 缺失值處理

2021-10-07 10:05:30 字數 4222 閱讀 5898

isna和notna方法

1.將方法用於series,返回布林列表,如下所示

df[

'physics'

].isna(

).head()0

false

1false

2false

3true

4false

name: physics, dtype:

bool

df['physics'

].notna(

).head()0

true

1true

2true

3false

4true

name: physics, dtype:

bool

2.對dataframe使用返回布林表

df.isna(

).head(

)school class id gender address height weight math physics

0false

false

true

false

false

false

true

false

false

1false

false

true

false

false

false

true

false

false

2false

false

false

false

false

false

true

false

false

3false

true

true

false

false

false

false

false

true

4false

false

false

true

false

false

false

false

false

同時isna配合sum方法可以檢視dataframe每列缺失值

df.isna().

sum(

)

檢視dataframe,某列缺失值所在行,以第二行為例

df[df[

'class'

].isna()]

school class id gender address height weight math physics

3 s_1 nan nan f street_2 167

81.0

80.4 nan

11 s_1 nan 1302.0 f street_1 175 nan 87.7 a-

18 s_2 nan 2104.0 f street_5 159

97.0

72.2 b+

26 s_2 nan 2302.0 m street_5 171

88.0 nan a

挑選出所有非缺失值行(學習資料中寫的列,可能是筆誤)

使用all就是全部非缺失值,如果是any就是至少有乙個不是缺失值

f[df.notna().

all(1)

]chool class id gender address height weight math physics

5 s_1 c_2 1201.0 m street_5 159

68.0

97.0 a-

6 s_1 c_2 1202.0 f street_4 176

94.0

63.5 b-

12 s_1 c_3 1303.0 m street_7 188

82.0

49.7 b

1.np.nan

在所有的**讀取後,無論列是存放什麼型別的資料,預設的缺失值全為np.nan型別,如果該列有缺失值,整型列轉為浮點;而字元由於無法轉化為浮點,因此只能歸併為object型別(『o』),原來是浮點型的則型別不變。

type

(np.nan)

pd.series([1

,2,3

]).dtype

pd.series([1

,np.nan,3]

).dtype

2.none

在傳入數值型別後,會自動變為np.nan,只有當傳入object型別是保持不動,幾乎可以認為,除非人工命名none,它基本不會自動出現在pandas中

s=pd.series([1

,none])

s[1]type

(pd.series([1

,none

],dtype=

'o')[1

])

3.nat

nat是針對時間序列的缺失值,可以完全看做時序版本的np.nan,特性與np.nan類似

pandas在1.0新版本中引入的重大改變,其目的就是為了(在若干版本後)解決之前出現的混亂局面,統一缺失值處理方法,nullable型別主要有int,boolean,string,其缺失值統一用na表示

進行邏輯運算時,只需看該邏輯運算的結果是否依賴pd.na的取值,如果依賴,則結果還是na,如果不依賴,則直接計算結果

進行算術運算和比較運算時,這裡只需記住除了下面兩類情況,其他結果都是na即可pd.na ** 0 =11 ** pd.na =1

convert_dtypes方法

這個函式的功能往往就是在讀取資料時,就把資料列轉為nullable型別

加號與乘號規則:使用加法時,缺失值為0,使用乘法時,缺失值為1,使用累計函式時,缺失值自動略過:

s = pd.series([2

,3,np.nan,4]

)s.sum()9

s.prod()24

s.cumsum(

)//累加

02.0

15.0

2 nan

39.0

dtype: float64

groupby方法中的缺失值

自動忽略為缺失值的組

主要有兩種方法

fillna方法

值填充

df[

'physics'

].fillna(

'missing'

).head(

)0 a+

1 b+

2 b+

3 missing

4 a-

name: physics, dtype:

object

dropna方法

主要有三個引數axis引數、how引數、subset引數

以線性插值為例,線性插值又分為與索引無關以及與索引有關的插值

s = pd.series([1

,10,15

,-5,

-2,np.nan,np.nan,28]

)ss.interpolate(

)s.interpolate(

).plot(

)s.index = np.sort(np.random.randint(50,

300,8)

)s.interpolate(

)s.interpolate(

).plot(

)

與索引有關的插值

s.interpolate(method=

'index'

).plot(

) 方法interpolate中的限制引數主要有:limit表示最多插入多少個、limit_direction表示插值方向,可選forward,backward,both、limit_area表示插值區域,可選inside,outside預設none

在本小節主要學習缺失值處理相關的一些方法,第一部分學習了觀測缺失值第二部分學習了缺失資料的運算及分組,第三部分是有關缺失資料填充與剔除,最後是關於插值的方法的學習,總之通過本節學習掌握了pandas在缺失值處理方面的一些特性,便於以後應用於實際中。

Pandas 缺失值處理

二 處理缺失值 首先拿到乙份資料,以dataframe提取後,要檢視缺失值的情況 import pandas as pd df pd.read csv df.isnull 獲得true,false的返回值 df.isnull sum 判斷缺失的數量常用此介面來快速判斷各特徵的缺失值情況!df.dro...

Pandas缺失值處理

判斷資料是否為nan pd.isnull df pd.notnull df 判斷缺失值是否存在 np.all pd.notnull data 返回false代表有空值 np.any pd.isnull data 返回true代表有空值處理方式 2 替換缺失值 fillna value,inplace...

Pandas的缺失值處理

處理方式 不是缺失值nan,有預設標記的 判斷資料是否為nan pd.isnull df pd.notnull df pd.isna df 讀取資料 movie pd.read csv date imdb movie data.csv 第一種 刪除 pandas刪除缺失值,使用dropna的前提是,...