4.Pandas處理丟失數據

0 引言

Pandas生成DataFrame表格,有時候表中會有一些空值(NaN),這時候就需要用到 .dropna函數和 .fillna函數來進行去除或重新爲空值賦值,可以調用 .isnull 函數判斷表中是否存在空值,也可以結合numpy的.any函數和 .all函數判斷表格中是否存在空值。

1 Pandas處理丟失數據

import pandas as pd
import numpy as np

創建一個DataFrame表格df1

dates = np.arange(20200101,20200105)
df1 = pd.DataFrame(np.arange(12).reshape((4,3)),index=dates,columns=['A','B','C'])
df1
A B C
20200101 0 1 2
20200102 3 4 5
20200103 6 7 8
20200104 9 10 11

創建一個DataFrame表格df2,但’D’和‘E’沒有具體值,空值

df2 = pd.DataFrame(df1,index=dates,columns=['A','B','C','D','E'])
df2
A B C D E
20200101 0 1 2 NaN NaN
20200102 3 4 5 NaN NaN
20200103 6 7 8 NaN NaN
20200104 9 10 11 NaN NaN

創建兩個Series

s1 = pd.Series([3,4,6],index=dates[:3])
s2 = pd.Series([32,5,2],index=dates[1:])
df2['D'] = s1
df2['E'] = s2
df2
A B C D E
20200101 0 1 2 3.0 NaN
20200102 3 4 5 4.0 32.0
20200103 6 7 8 6.0 5.0
20200104 9 10 11 NaN 2.0

調用 .dropna 去除含有空值的行,其中’any’是含有空值就會刪除該行,'all’是都是空值才刪除該行

df2.dropna(axis=0,how='any') #how=['any','all'],any任意一個或多個,all全部
A B C D E
20200102 3 4 5 4.0 32.0
20200103 6 7 8 6.0 5.0

調用 .dropna 去除含有空值的列

df2.dropna(axis=1,how='any')
A B C
20200101 0 1 2
20200102 3 4 5
20200103 6 7 8
20200104 9 10 11

調用 .fillna 給表中空值進行重新賦值

df2.fillna(value=0) # 把空值賦值爲0
A B C D E
20200101 0 1 2 3.0 0.0
20200102 3 4 5 4.0 32.0
20200103 6 7 8 6.0 5.0
20200104 9 10 11 0.0 2.0

調用 .isnull 查看空值,其中True是空值

df2.isnull() # 查看空值
A B C D E
20200101 False False False False True
20200102 False False False False False
20200103 False False False False False
20200104 False False False True False

調用 .isnull 並結合numpy.any判斷空值,該行只有有一個或多個空值就會返回True

np.any(df2.isnull())
A    False
B    False
C    False
D     True
E     True
dtype: bool

調用 .isnull 並結合numpy.any判斷空值,該行全部爲空值纔會返回True

np.all(df2.isnull())
A    False
B    False
C    False
D    False
E    False
dtype: bool
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章