[Pandas] filter()

2025. 4. 24. 11:16·python/Pandas | Numpy
728x90

데이터 전처리나 EDA(탐색적 데이터 분석)를 하다 보면 다음과 같은 일이 자주 있다:

  • 컬럼이 너무 많은데, 이름에 'score'가 들어간 것만 추출하고 싶다
  • '2023'으로 시작하는 행(index)만 뽑고 싶다
  • 복잡한 조건이 아니라 이름 기반으로만 간단히 필터링하고 싶다

이럴 때 Pandas의 filter() 함수는 가볍고 직관적인 선택 도구가 되어준다.


예제 데이터

import pandas as pd

df = pd.DataFrame({
    'user_id': [1, 2, 3],
    'score_math': [90, 80, 70],
    'score_eng': [85, 75, 65],
    'score_sci': [88, 78, 68],
    'age': [25, 30, 35]
}, index=['2022_A', '2023_B', '2023_C'])


1. 예제: 특정 문자열이 들어간 열만 선택 (like)

df.filter(like='score', axis=1)

→ 'score'가 들어간 모든 열을 선택

 

2. 예제 정규표현식으로 열 선택 (regex)

df.filter(regex='.*_eng$', axis=1)

→ 'eng'으로 끝나는 컬럼만 선택 (영어 점수)

 

3. 예제 정확한 열 이름만 선택 (items)

df.filter(items=['user_id', 'age'], axis=1)

→ 특정 컬럼들만 추출하고 싶을 때 가장 명확한 방식

 

4. 예제 행 이름(index) 필터링

df.filter(like='2023', axis=0)

→ 인덱스에 '2023'이 포함된 행만 선택

 

5. 예제 정규표현식으로 행 필터링

df.filter(regex='.*_C$', axis=0)

→ 인덱스가 _C로 끝나는 행만 선택


주의사항

실수 유형 설명
axis 지정 실수 axis=0은 행, axis=1은 열. 잘못 지정하면 엉뚱한 결과
like는 부분 포함 "score"가 'score_math' 포함되는지 보는 것. 전체 일치 아님
regex는 정규표현식 문법 숙지 필요 .* , ^ ,  $ 등의 의미 정확히 알아야 함

팁

 

  • filter(like='2023', axis=0) → 특정 연도 데이터만 추출
  • filter(regex='^score_', axis=1) → 'score_'로 시작하는 모든 컬럼 선택
  • filter(items=list(df.columns[:3]), axis=1) → 앞 3개 열만 선택

 

Pandas의 filter()는 조건 없이 이름 기반만으로 데이터 선택을 간단하게 처리할 수 있는 함수다.
정규표현식, 부분일치, 이름 리스트 등을 활용해 효율적인 전처리를 만들 수 있다.

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'python > Pandas | Numpy' 카테고리의 다른 글

[Pandas] eval() (열 간 수식을 짧고 빠르게 처리)  (0) 2025.04.24
[Pandas] query() (loc보다 더 깔끔하게 조건 필터링)  (0) 2025.04.24
[Pandas] 조건 조합 필터링 및 추출  (0) 2025.04.24
[Pandas] 데이터 타입 확인 및 변환 – dtypes, astype()  (0) 2025.04.24
[Pandas] 결측치(NaN) 처리  (0) 2025.04.24
'python/Pandas | Numpy' 카테고리의 다른 글
  • [Pandas] eval() (열 간 수식을 짧고 빠르게 처리)
  • [Pandas] query() (loc보다 더 깔끔하게 조건 필터링)
  • [Pandas] 조건 조합 필터링 및 추출
  • [Pandas] 데이터 타입 확인 및 변환 – dtypes, astype()
Balang
Balang
음악 전공생의 개발일지
  • Balang
    Balang
    Balang
  • 전체
    오늘
    어제
  • 반응형
    • All Post (146)
      • python (45)
        • selenium (4)
        • algorithm (9)
        • Django (6)
        • Pandas | Numpy (22)
      • SQL (9)
      • Data Engineer (29)
      • Data Scientist (3)
      • Data Analysis (9)
      • Computer Science (35)
      • Why? (15)
      • 마음가짐 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Balang
[Pandas] filter()
상단으로

티스토리툴바