1. 程式人生 > >python進行資料處理——pandas的drop函式

python進行資料處理——pandas的drop函式

刪除表中的某一行或者某一列更明智的方法是使用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的資料型別。