1. 程式人生 > >pandas如何去掉、過濾資料集中的某些值或者某些行?

pandas如何去掉、過濾資料集中的某些值或者某些行?

摘要

在進行資料分析與清理中,我們可能常常需要在資料集中去掉某些異常值。具體來說,看看下面的例子。


0.匯入我們需要使用的包

import pandas as pd
pandas是很常用的資料分析,資料處理的包。anaconda已經有這個包了,純淨版python的可以自行pip安裝。

1.去掉某些具體值

資料集df中,對於屬性appPlatform(最後一列),我們想刪除掉取值為2的那些樣本。如何做?非常簡單。
import pandas as pd
df[(True-df['appPlatform'].isin([2]))]

當然,有時候我們需要去掉不止一個值,這個時候只需要在isin([])的列表中新增。更具體來說,例如,對於appID這個屬性,我們想去掉appID=278和appID=382的樣本。
df[(True-df['appID'].isin([278,382]))]


另外,我們有時候並不只是考慮某一列,還需要考慮另外若干列的情況。例如,我們需要過濾掉appPlatform=2而且appID=278和appID=382的樣本呢?非常簡單。
df[(True-df['appID'].isin([278,382]))&(True-df['appPlatform'].isin([2]))]
.其實,在這裡我們看到,就是由兩部分組成的,第一部分就是appID中等於278和382的,另外一部分就是appPlatform中等於2的。兩者取邏輯關係 與(&)

2.過濾掉某個範圍的值

上面我們是瞭解瞭如何取掉某個具體值,下面,我們要看看如何過濾掉某個範圍的值。對於資料集df,我們想過濾掉creativeID(第一列)中ID值大於10000的樣本。
df[df['creativeID']<=10000]


另外,如果要考慮多列的話,其實和上面一樣,將兩種情況做邏輯與(&)就可以,不過值得注意的是,每個條件要用括號()括起來。