跳到主要內容

python與SAS資料處理入門--條件限制(邏輯判斷)

 運用邏輯判斷進行資料篩選,這也是資料處理中重要的環節。

 

資料清理時經常會需要篩選或是排除某些條件下的資料,最簡單的例子就是當原始資料的年齡為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只有FM時,這兩個寫法得到的結果會相同,但如果欄位中有其他coding或是missing value時,後面的寫法只會將性別codingF的資料排除,所以如果裡面包含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)] 



邏輯判斷在資料處理的階段很常運用到,熟悉基礎語法後靈活運用在資料處理的過程中。


留言