學(xué)習(xí)資料:
創(chuàng)建含 NaN 的矩陣
有時候我們導(dǎo)入或處理數(shù)據(jù), 會產(chǎn)生一些空的或者是 NaN 數(shù)據(jù),如何刪除或者是填補這些 NaN 數(shù)據(jù)就是我們今天所要提到的內(nèi)容.
建立了一個6X4的矩陣數(shù)據(jù)并且把兩個位置置為空.
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
"""
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
"""
pd.dropna()
如果想直接去掉有 NaN 的行或列, 可以使用 dropna
df.dropna(
axis=0, # 0: 對行進行操作; 1: 對列進行操作
how='any' # 'any': 只要存在 NaN 就 drop 掉; 'all': 必須全部是 NaN 才 drop
)
"""
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
"""
pd.fillna()
如果是將 NaN 的值用其他值代替, 比如代替成 0:
df.fillna(value=0)
"""
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
"""
pd.isnull()
判斷是否有缺失數(shù)據(jù) NaN, 為 True 表示缺失數(shù)據(jù):
df.isnull()
"""
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
"""
檢測在數(shù)據(jù)中是否存在 NaN, 如果存在就返回 True:
np.any(df.isnull()) == True
# True
下次課會將pandas如何導(dǎo)入導(dǎo)出數(shù)據(jù)的過程。