呀~部落客是正在學習資料分析的一員,記錄的是自己學習過程中總結的知識點,肯定有不完善的地方,如有問題可以私聊我改正,共同學習進步。希望大家都能保持學習的熱情,堅持自己,不斷超越自己!
部落格位址:qxi的部落格
還是可以先預習下前面的知識點耶:
pandas基礎知識(1)
pandas基礎知識(2)
pandas基礎知識(3)
pandas基礎知識(4)
#今天這篇介紹的是如何在DataFrame中處理缺失值(nan值)#
如何處理缺失值?
①對含有nan值的行或者列進行
删除
操作
用的是
dropna(axis='',how='')
函數,其中axis=0時逐行操作,删除的是行,axis=1則删除的是列;
how=’any’時表示隻要含有nan值,這一行或者這一列就會被删除,how=’all’時表示隻有該行或者該列所有值都是nan時才會被删除。
import pandas as pd
import numpy as np
dates=pd.date_range('20130101',periods=6) #生成時間序列
df=pd.DataFrame(np.arange(24).reshape((6,4)),index=dates,columns=['A','B','C','D'])
df.iloc[0,1]=np.nan
df.iloc[1,2]=np.nan
print(df)
print(df.dropna(axis=0,how='any')) #逐行操作,丢掉的是行
print(df.dropna(axis=1,how='any')) #逐列操作,丢掉的是列
print(df.dropna(axis=0,how='all'))
運作結果:
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #原DataFrame
A B C D
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #含有nan的行被删除了
A D
2013-01-01 0 3
2013-01-02 4 7
2013-01-03 8 11
2013-01-04 12 15
2013-01-05 16 19
2013-01-06 20 23 含有nan的列被删除了
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23
②利用
fillna(value='')
函數給nan值填充資料
print(df)
print(df.fillna(value=0)) #給nan值填充資料
運作結果:
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #原DataFrame
A B C D
2013-01-01 0 0.0 2.0 3
2013-01-02 4 5.0 0.0 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #填充了0
③
判斷
是否有缺失值
print(df)
print(df.isnull()) #判斷哪一些是缺失值
print(np.any(df.isnull())==True) #判斷是否有缺失值
運作結果:
A B C D
2013-01-01 0 NaN 2.0 3
2013-01-02 4 5.0 NaN 7
2013-01-03 8 9.0 10.0 11
2013-01-04 12 13.0 14.0 15
2013-01-05 16 17.0 18.0 19
2013-01-06 20 21.0 22.0 23 #原DataFrame
A B C D
2013-01-01 False True False False
2013-01-02 False False True False
2013-01-03 False False False False
2013-01-04 False False False False
2013-01-05 False False False False
2013-01-06 False False False False #傳回True的是缺失值
True #該DataFrame中确實有缺失值
這一篇内容相對比較少,但是還是比較實用,經常會遇到的,希望對你們有幫助,記得點贊,關注我喲~