删除表中的某一行或者某一列更明智的方法是使用drop,它不改變原有的df中的資料,而是傳回另一個dataframe來存放删除後的資料。本文出處主要來源于必備工具書《利用python進行資料分析》。
1.清理無效資料
df[df.isnull()] #傳回的是個true或false的Series對象(掩碼對象),進而篩選出我們需要的特定資料。
df[df.notnull()]
df.dropna() #将所有含有nan項的row删除
df.dropna(axis=1,thresh=3) #将在列的方向上三個為NaN的項删除
df.dropna(how='ALL') #将全部項都是nan的row删除
此處:print data.dropna() 和 print data[data.notnull()] 結果一樣
2.填充無效值
df.fillna(0)
df.fillna({1:0, 2:0.5}) #對第一列nan值賦0,第二列指派0.5
df.fillna(method='ffill') #在列方向上以前一個值作為值賦給NaN
3.drop函數的具體使用案例
####(1)drop函數的使用:删除行、删除列
print frame.drop(['a'])
print frame.drop(['Ohio'], axis = 1)
drop函數預設删除行,列需要加axis = 1
####(2)drop函數的使用:inplace參數 采用drop方法,有下面三種等價的表達式:
1. DF= DF.drop('column_name', axis=1);
2. DF.drop('column_name',axis=1, inplace=True)
3. DF.drop([DF.columns[[0,1, 3]]], axis=1, inplace=True) # Note: zero indexed
注意:凡是會對原數組作出修改并傳回一個新數組的,往往都有一個 inplace可選參數。如果手動設定為True(預設為False),那麼原數組直接就被替換。也就是說,采用inplace=True之後,原數組名(如2和3情況所示)對應的記憶體值直接改變;
而采用inplace=False之後,原數組名對應的記憶體值并不改變,需要将新的結果賦給一個新的數組或者覆寫原數組的記憶體位置(如1情況所示)。
####(3)drop函數的使用:資料類型轉換
df['Name'] = df['Name'].astype(np.datetime64)
DataFrame.astype() 方法可對整個DataFrame或某一列進行資料格式轉換,支援Python和NumPy的資料類型。