缺失数据处理的处理方式有两种:
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