본문 바로가기
Python/Pandas

거의 모든 데이터 분석 작업을 해결하는 Pandas 필터링 방법

by 찐남 2022. 7. 2.

필터링은 데이터 분석가를 위해 

raw data를 필터링하는

핵심 키 작업 중 하나입니다.

 

이번 포스팅에서는 pandas에서

사용할 수 있는 다양한

필터링 방법을 설명 하도로 하겠습니다.

 

코드를 쉽게 재현할 수 있도록

필터링 작업에

가장 유명한 Titanic 데이터 세트를

사용했습니다.

 

 

titanic.csv
0.06MB

 

import pandas as pd

titanic = pd.read_csv("D:/titanic.csv")
titanic.head()

 

조건을 사용한 행 필터링

1) Location (loc) function

여기에서는 3등석 승객만 

필터링하기 위해 pandas location functiond을

사용하겠습니다. 

titanicPclass3 = titanic.loc[titanic["Pclass"] == 3]
titanicPclass3.head()

 

2) Query Function

query() 함수는 부울 표현식으로 D

ataFrame의 열을 필터링하는 데 사용됩니다.

 

쿼리 기능을 사용하여 남성 승객만

나열해 보겠습니다.

titanicMan = titanic.query("Sex == 'male'")
titanicMan.head()

 

3) DataFrame에서 직접 필터링

loc 메서드 대신 

데이터 프레임 방식을 사용하여 

살아 있는 여성 승객을 필터링합니다.

titanicAliveWoman = titanic[(titanic.Survived == 1) & (titanic.Sex == "female")]
titanicAliveWoman.head()

 

4) 행 위치 및 열 이름으로 DataFrame 필터

처음 10개 행과 Pclass 및 Name 열만

필터링하겠습니다.

titanic.loc[titanic.index[0:10] , ["Pclass","Name"]]

 

5) Lambda 함수를 사용하여 조건에 따라 행 필터링

Fare가 7.0000보다 큰 행을

필터링하겠습니다. 

titanic.loc[lambda titanic: titanic["Fare"] > 7.0000]

 

 

6) 다른 열의 조건을 기반으로 한 열 값 필터링

도시가 "Southampton" 이고(Embarked == "S"),

생존한 'Survived' 값이 1과 같지 않은 열 필터링

titanic.loc[(titanic.Survived != 1) & (titanic.Embarked == "S")]

 

7) "~" 연산자 활용

"~" 연산자를 사용하여

"Name"에 'Mr' 호칭이 없는 열 필터링

temp = titanic[~titanic["Name"].str.contains("Mr")]
temp

 

8) Pandas 데이터 프레임에서 누락되지 않은 데이터 필터링

Age에 결측치가 없는 행 필터링

nonMissingDataAge = titanic[titanic.Age.notnull()]
nonMissingDataAge

 

9) 필터링을 위한 List Comprehension Method

생존하지 못한 남성의 행 필터링

titanic.iloc[[idx for idx, row in titanic.iterrows() if row["Sex"] == "male" and row["Survived"] == 0]]

 

이번 포스팅에서는 필터링에 대한 

매우 기본적인 인사이트를 주었다고 생각하지만,

여전히 날짜와 시간을 필터링하는 내용은

놓친 부분이 많습니다.

 

다음번 포스팅에서는

이와 관련된 내용을 추가할게요.

 

 

 

반응형

댓글