運用邏輯判斷進行資料篩選,這也是資料處理中重要的環節。
資料清理時經常會需要篩選或是排除某些條件下的資料,最簡單的例子就是當原始資料的年齡為0-99歲時,但所需要用於後續分析的資料只需留下20-30歲的數據時,就需要用到邏輯判斷進行資料篩選。
一般在SAS上會使用IF+邏輯條件來進行判斷,python則較為不同,以下分別做示範。
以SAS進行邏輯判斷
單一條件,篩選出性別為男性的資料
data id_m;set
id;if gender="M";run; /*用保留的邏輯判斷留下性別為男性的資料*/
(1) 大小寫:這邊要注意欄位裡面的coding方式,大小寫有差別,如果寫成if gender="m",那這樣不會留下我們想要的資料了。
(2) 文字欄位條件,需要加上雙引號。
也可以用排除的方式留下資料:
data id_m;set
id;if gender="F" then delete;run; /*用排除的方式保留資料*/
這兩種寫法都可以,但是在某些情況下結果會有差異,當我們很確認欄位的coding只有F跟M時,這兩個寫法得到的結果會相同,但如果欄位中有其他coding或是missing value時,後面的寫法只會將性別coding為F的資料排除,所以如果裡面包含missing value則會一同被留下,所以使用上大家依據需求採用最恰當的寫法。
多重條件,篩選出性別為男性且年齡<50的資料
data id_m;set
id;if gender="M" and age<50;run;
利用and或 or連接多個條件,進行邏輯判斷。
以Python進行邏輯判斷
單一條件,篩選出性別為男性的資料
id_m=id_list[id_list["Gender"].isin(["M"])]
不過pandas中只有isin指令,所以如果是要用排除的方式就必須要繞路執行,先把要做判斷的欄位存成list,再用remove指令移除不要的值,最後將完成處理的list帶入isin指令中。
多重條件,篩選出性別為男性且年齡<50的資料
id_list=id_list[id_list["Gender"].isin(["M"])&(id_list.Age<50)]
邏輯判斷在資料處理的階段很常運用到,熟悉基礎語法後靈活運用在資料處理的過程中。
留言
張貼留言