數據挖掘工具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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章