📌 Pandas에서 특정 값 제외하는 필터링 방법 총정리
데이터 분석을 하다 보면 특정 조건을 만족하는 데이터만 남기거나, 특정 값이 포함된 행을 제외해야 할 때가 많습니다.
Python의 pandas 라이브러리를 사용하면 손쉽게 특정 값을 제외하는 필터링을 수행할 수 있습니다.
이번 글에서는 Pandas에서 특정 값을 기준으로 데이터를 필터링하는 다양한 방법을 알아보겠습니다.
🔹 특정 값이 포함된 행 제외하기 (isin() + ~ 연산자)
특정 컬럼에서 원하는 값이 포함된 행을 삭제하려면 isin()과 ~ 연산자를 사용하면 됩니다.
df = df[~df["relKeyword"].isin(["프로그래밍", "AI"])]
설명
- "프로그래밍" 또는 "AI" 키워드가 포함된 행을 찾아서 제외합니다.
- isin()은 특정 리스트에 포함된 값을 찾는 함수이며, ~(틸드 연산자)를 사용하면 해당 조건을 반전하여 해당 값들을 제외할 수 있습니다.
🔹 특정 값의 범위를 제외하는 방법 (between())
특정 숫자 범위에 속하는 값을 제외하려면 between() 함수를 활용할 수 있습니다.
df = df[~df["monthlyMobileQcCnt"].between(2000, 5000)]
설명
- between(2000, 5000)은 2000 이상 5000 이하 범위에 속하는 값을 찾습니다.
- ~ 연산자를 사용하여 해당 범위에 속하는 값을 제외합니다.
🔹 여러 조건을 조합해서 특정 행 제외하기
여러 컬럼을 기준으로 특정 값을 제외하고 싶다면 & (AND) 또는 | (OR) 연산자를 조합할 수 있습니다.
df = df[
~(df["relKeyword"].isin(["프로그래밍", "AI"])) & # 특정 키워드 제외
~(df["plAvgDepth"] >= 50) # 광고 노출 수가 50 이상인 경우 제외
]
설명
- "프로그래밍"과 "AI" 키워드가 포함된 행을 제외합니다.
- plAvgDepth >= 50인 경우도 제외합니다.
- & (AND 연산자)를 사용하여 두 개의 조건을 동시에 적용했습니다.
🔹 특정 문자열이 포함된 행 제외하기 (str.contains())
데이터에서 특정 문자열이 포함된 행을 삭제하고 싶다면 str.contains()를 활용하면 됩니다.
df = df[~df["relKeyword"].str.contains("개발", na=False)]
설명
- "개발"이라는 단어가 포함된 키워드를 가진 행을 삭제합니다.
- na=False를 추가하여 NaN 값이 있는 경우에도 오류 없이 필터링할 수 있도록 합니다.
🔹 특정 값이 NaN(결측치)인 행 제거하기 (dropna())
데이터에서 NaN 값이 포함된 행을 제거하고 싶다면 dropna()를 사용하면 됩니다.
df = df.dropna(subset=["plAvgDepth"])
설명
- plAvgDepth 값이 NaN인 행을 제거합니다.
- 여러 컬럼에서 결측치를 제거하고 싶다면 subset에 리스트로 컬럼을 전달할 수 있습니다.
🔹 모든 컬럼에서 특정 값이 포함된 행 제외하기 (applymap())
데이터셋 전체에서 특정 값이 포함된 행을 제외하고 싶다면 applymap()과 any()를 활용하면 됩니다.
df = df[~df.applymap(lambda x: x in ["프로그래밍", "AI"]).any(axis=1)]
설명
- 데이터프레임 전체에서 "프로그래밍" 또는 "AI" 값이 포함된 행을 삭제합니다.
- .any(axis=1)를 사용하여 어느 컬럼에든 해당 값이 포함되어 있다면 행을 제거합니다.
🔹 특정 값을 제외하는 여러 조건을 조합한 예제
import pandas as pd
data = {
"relKeyword": ["프로그래밍", "코딩", "개발", "AI", "머신러닝"],
"monthlyMobileQcCnt": [5000, 4000, 4500, 6000, 7000],
"plAvgDepth": [50, 30, 10, 5, 70]
}
df = pd.DataFrame(data)
# 특정 키워드 제외
df = df[~df["relKeyword"].isin(["프로그래밍", "AI"])]
# 검색량이 5000 이상인 행 제외
df = df[df["monthlyMobileQcCnt"] < 5000]
# 광고 노출 수가 50 이상인 행 제외
df = df[df["plAvgDepth"] < 50]
print(df)
🔹 실행 결과
relKeyword monthlyMobileQcCnt plAvgDepth
1 코딩 4000 30
2 개발 4500 10
설명
- "프로그래밍", "AI" 키워드가 포함된 행이 제외되었습니다.
- monthlyMobileQcCnt >= 5000인 행이 제외되었습니다.
- plAvgDepth >= 50인 행이 제외되었습니다.
📌 결론
Pandas를 활용하면 특정 값을 기준으로 데이터를 쉽게 필터링할 수 있습니다.
필요에 따라 isin(), between(), str.contains(), dropna() 등을 조합하면 더 정교한 필터링이 가능합니다.
데이터 분석 과정에서 불필요한 데이터를 제거하고, 원하는 정보만 추출하는 데 활용해 보세요!
'다양한 TIP' 카테고리의 다른 글
맥북프로 구매 전 필독! 가성비 최고 모델 추천 (3) | 2025.02.28 |
---|---|
🔌 포트 포워딩의 모든 것: 완벽 가이드 (0) | 2025.02.27 |
🎮 DP vs HDMI, 어떤 걸 선택해야 할까? (3) | 2025.02.27 |
댓글