数据挖掘工具pandas(九)Pandas缺失数据的处理

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

猜你喜欢

转载自blog.csdn.net/TFATS/article/details/106339169
今日推荐