天天看點

python資料分析-pandas子產品基礎知識(5)

呀~部落客是正在學習資料分析的一員,記錄的是自己學習過程中總結的知識點,肯定有不完善的地方,如有問題可以私聊我改正,共同學習進步。希望大家都能保持學習的熱情,堅持自己,不斷超越自己!

部落格位址: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中确實有缺失值
           

這一篇内容相對比較少,但是還是比較實用,經常會遇到的,希望對你們有幫助,記得點贊,關注我喲~