pandas中使用fillna函式填充NaN值

2021-10-25 16:22:47 字數 4492 閱讀 3997

補充2. **例項

2.2 使用inplace引數

2.3 使用method引數

2.4 使用limit引數

2.5 使用axis引數

取值:true、false

true:直接修改原物件

false:建立乙個副本,修改副本,原物件不變(預設預設)

取值 : , default none

pad/ffill:用前乙個非缺失值去填充該缺失值

none:指定乙個值去替換缺失值(預設預設這種方式)

限制填充個數

修改填充方向

isnull 和 notnull 函式用於判斷是否有缺失值資料

isnull:缺失值為true,非缺失值為false

notnull:缺失值為false,非缺失值為true

#導包

import pandas as pd

import numpy as np

from numpy import nan as nan

df1=pd.dataframe([[

1,2,

3],[nan,nan,2]

,[nan,nan,nan],[

8,8,nan]])

df1

**結果:

012

01.0

2.03.0

1 nan nan 2.0

2 nan nan nan

38.0

8.0 nan

#1.用常數填充

print

(df1.fillna(

100)

)print

("-----------------------"

)print

(df1)

執行結果:

012

01.0

2.03.0

1100.0

100.0

2.02

100.0

100.0

100.0

38.0

8.0100.0--

----

----

----

----

----

-012

01.0

2.03.0

1 nan nan 2.0

2 nan nan nan

38.0

8.0 nan

第key列的nan用key對應的value值填充

df1.fillna(

)

執行結果:

012

01.0

2.03.0

110.0

20.0

2.02

10.0

20.0

30.0

38.0

8.030.0

print

(df1.fillna(

0,inplace=

true))

print

("-------------------------"

)print

(df1)

執行結果:

在這裡插入**片
1.method = 'ffill'/'pad':用前乙個非缺失值去填充該缺失值

df2 = pd.dataframe(np.random.randint(0,

10,(5

,5))

)df2.iloc[1:

4,3]

=none

df2.iloc[2:

4,4]

=none

print

(df2)

print

("-------------------------"

)print

(df2.fillna(method=

'ffill'

))

執行結果:

012

3408

445.06.015

28 nan 7.026

31 nan nan35

49 nan nan46

546.09.0--

----

----

----

----

----

---0

1234

0844

5.06.015

285.07.026

315.07.035

495.07.046

546.09.0

df2 = pd.dataframe(np.random.randint(0,

10,(5

,5))

)df2.iloc[1:

4,3]

=none

df2.iloc[2:

4,4]

=none

print

(df2)

print

("-------------------------"

)print

(df2.fillna(method=

'bfill'

))

執行結果:

012

3401

041.03.014

64 nan 2.024

92 nan nan39

73 nan nan46

135.05.0--

----

----

----

----

----

---0

1234

0104

1.03.014

645.02.024

925.05.039

735.05.046

135.05.0

用下乙個非缺失值填充該缺失值且每列只填充2個

df2 = pd.dataframe(np.random.randint(0,

10,(5

,5))

)df2.iloc[1:

4,3]

=none

df2.iloc[2:

4,4]

=none

print

(df2)

print

("-------------------------"

)print

(df2.fillna(method=

'bfill'

, limit=2)

)

執行結果:

012

3402

044.00.017

99 nan 1.021

73 nan nan38

58 nan nan48

624.04.0--

----

----

----

----

----

---0

1234

0204

4.00.017

99 nan 1.021

734.04.038

584.04.048

624.04.0

axis=0 對每列資料進行操作

axis=1 對每行資料進行操作

df2 = pd.dataframe(np.random.randint(0,

10,(5

,5))

)df2.iloc[1:

4,3]

=none

df2.iloc[2:

4,4]

=none

print

(df2.fillna(method=

"ffill"

, limit=

1, axis=1)

)

執行結果:

012

3400.0

4.09.0

7.02.0

16.0

5.00.0

0.03.0

28.0

8.08.0

8.0 nan

35.0

5.06.0

6.0 nan

47.0

5.07.0

4.01.0

還有一些pandas的基礎運算請參考這篇文章->pandas | dataframe基礎運算以及空值填充

在pandas中使用sql

from pandasql import sqldf 查詢記憶體中的pandas資料框 pysqldf lambda q sqldf q,globals 匯入模組,自帶資料,尋找pandas資料框 from pandasql import sqldf,load meat,load births py...

Pandas使用總結

第一參加阿里天池舉辦的比賽,關於美年雙高 的比賽,成績0.08。因為之前只學習過理論,沒有具體做過專案,對python會一些,但對pandas基本從零開始。比賽初期基本copy大佬的資料處理部分的 後面再在此基礎上修改。天池的比賽,比較貼近實際的專案,還是很有參與價值的。在這個比賽中,我也認識到了特...

pandas 高階使用

目錄 csv comma separated values 格式的檔案是指以純文字形式儲存的 資料,這意味著不能簡單的使用excel 工具進行處理,而且excel 處理的資料量十分有限,而使用pandas來處理資料量巨大的csv檔案就容易的多了。import pandas as pd deftest...