缺失數據處理的處理方式有兩種:
1)刪除缺失值所在的行列
2)填充數據,t.fillna(t.mean()),t.fiallna(t.median()),t.fillna(0)
一,刪除缺失值所在的行列
1,存在缺失值nan,並且是np.nan
import pandas as pd
import numpy as np
temp =pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list("wxyz"))
temp.iloc[1,1] = np.nan
print(temp)
# print(temp.dropna(axis=0))
# all表示數據中的數據都爲nan時才進行刪除行數據
# print(temp.dropna(axis=0,how='all'))
# inplace表示修改原數組並返回None
print(temp.dropna(axis=0,how='any',inplace=True))
print(temp)
2,存在缺失值,爲其他符號或者數據。如(?、0)
import pandas as pd
import numpy as np
temp =pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list("wxyz"))
temp.iloc[1,1] = "?"
print(temp)
# 將特殊的缺失值替換爲np.nan
temp.replace(to_replace="?",value=np.nan,inplace=True)
# 將nan缺失值整行刪除
temp.dropna(axis=0,how='any',inplace=True)
print(temp)
二,填充缺失值
1,存在缺失值nan,並且是np.nan
import pandas as pd
import numpy as np
import random
random.seed(2)
temp =pd.DataFrame(np.array([random.randint(1,10) for i in range(20)]).reshape(4,5),index=list('abcd'),columns=list("vwxyz"))
temp.iloc[1,0] = np.nan
print(temp)
# 將每個列的均值賦值給數組中每個列的nan
temp.fillna(temp.mean(),inplace=True)
# temp['s'].fillna(temp['s'].mean(),inplace=True)
print(temp)
2,存在缺失值,爲其他符號或者數據。如(?、0)
import pandas as pd
import numpy as np
import random
temp =pd.DataFrame(np.array([random.randint(1,10) for i in range(30)]).reshape(5,6),index=list('abcde'),columns=list("svwxyz"))
temp.iloc[1,0] = "?"
print(temp)
temp.replace(to_replace="?",value=np.nan,inplace=True)
# 將每個列的均值賦值給數組中每個列的nan
temp.fillna(temp.mean(),inplace=True)
# temp['s'].fillna(temp['s'].mean(),inplace=True)
print(temp)
三,判斷數據是否爲NaN
有兩種方式:
1)pd.isnull(df)
2)pd.notnull(df)
1,pd.isnull(df)和pd.notnull(df)的使用
import pandas as pd
import numpy as np
temp =pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list("wxyz"))
temp.iloc[1,1] = np.nan
print(temp)
print(pd.isnull(temp))
print(pd.notnull(temp))
print(temp[pd.notnull(temp['x'])])
#------------output---------------------
w x y z
a 0 1.0 2 3
b 4 NaN 6 7
c 8 9.0 10 11
w x y z
a False False False False
b False True False False
c False False False False
w x y z
a True True True True
b True False True True
c True True True True
w x y z
a 0 1.0 2 3
c 8 9.0 10 11