python進行資料處理——pandas的drop函式
阿新 • • 發佈:2018-12-30
刪除表中的某一行或者某一列更明智的方法是使用drop,它不改變原有的df中的資料,而是返回另一個dataframe來存放刪除後的資料。本文出處主要來源於必備工具書《利用python進行資料分析》。
—————————————————————————————————————————————————————
清理無效資料
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()] 結果一樣
填充無效值
df.fillna(0)
df.fillna({1:0, 2:0.5}) #對第一列nan值賦0,第二列賦值0.5
df.fillna(method='ffill') #在列方向上以前一個值作為值賦給NaN
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的資料型別。