Pandas 데이터 필터링 : 원하는 데이터만 골라내기

2024. 1. 19. 10:50·파이썬/Pandas
반응형

데이터 분석의 대부분은 쓸모 없는 정보를 걸러내고 관심 있는 부분만 추출하는 과정으로 구성됩니다. Pandas는 이러한 필터링 작업을 쉽게 해주는 다양한 기능을 제공하며, 이번 글에서는 그 중 핵심적인 방법들을 살펴보겠습니다.

 

1. 불린 인덱싱: 조건식으로 데이터 선택

판다스의 필터링 기본기를 다루는 것은 불린 인덱싱입니다. 이는 조건식을 활용하여 True/False 값을 반환하고, 이를 인덱스로 사용하여 원하는 데이터만 선택하는 방식입니다.

import pandas as pd

data = {'age': [25, 32, 40, 28, 18], 'city': ['서울', '대전', '인천', '대구', '부산']}
df = pd.DataFrame(data)

# 25세 이상 데이터만 필터링
df_filtered = df[df['age'] >= 25]

# 서울에 거주하는 30대 데이터만 필터링
df_filtered = df[(df['city'] == '서울') & (df['age'] >= 30)]

이처럼 조건식을 조합하여 다양한 필터링을 구현할 수 있습니다.

 

2. query(): 문자열 표현식으로 간편하게 필터링

query 메서드는 문자열 표현식을 활용하여 간편하게 필터링할 수 있습니다. 조건식을 직접 입력하여 코드를 줄이고 가독성을 높일 수 있습니다.

df_filtered = df.query("age >= 25 & city == '서울'")

이와 같이 익숙한 구문으로 필터링할 수 있습니다.

 

3. loc and iloc: 레이블과 위치 기반 선택

데이터프레임의 인덱스나 열 이름을 활용하여 특정 행이나 열을 선택할 수 있습니다.

  • loc: 레이블 기반 선택 (인덱스 이름/열 이름으로 지정)
  • iloc: 위치 기반 선택 (인덱스/열 위치로 지정)
# 0번째 행과 'age' 열만 선택
df_filtered = df.loc[0, 'age']

# 2번째 행부터 4번째 행까지, 'city' 열만 선택
df_filtered = df.iloc[1:4, df.columns.get_loc('city')]

loc과 iloc은 다양한 조건과 함께 유연하게 활용할 수 있습니다.

 

4. .isin(): 특정 값 포함 여부 필터링

특정 값을 포함하는 행이나 열을 선택할 수 있습니다.

# '대전' 또는 '부산'에 거주하는 사람만 선택
df_filtered = df[df['city'].isin(['대전', '부산'])]

# 25, 30, 35 값 중 하나를 포함하는 'age' 열만 선택
df_filtered = df['age'][df['age'].isin([25, 30, 35])]

isin 메서드는 여러 값을 한 번에 검사할 수 있어 편리합니다.

 

5. 그룹화와 필터링 조합: 복잡한 분석 지원

데이터를 그룹화한 후 조건에 따라 필터링하는 경우 그룹 객체의 메서드를 활용할 수 있습니다.

# 각 도시별 25세 이상 데이터 그룹화 후 필터링
for city, city_data in df.groupby('city'):
    city_filtered = city_data[city_data['age'] >= 25]
    # city_filtered에 각 도시별 25세 이상 데이터가 담김

그룹화를 통해 복잡한 조건 분석을 효과적으로 수행할 수 있습니다.

 

6. str.contains(): 문자열 패턴 기반 필터링

문자열이 포함된 텍스트 데이터를 다룰 때, str.contains() 메서드는 특정 문자열 패턴을 포함하는 데이터를 필터링하는 데 효과적입니다.

예시:

# 'age' 열에서 '40'이 포함된 열만 필터링
df_filtered = df[df['age'].str.contains('40')]

# 'city' 열에서 '서울'이 포함된 열만 필터링
df_filtered = df[df['city'].str.contains('서울')]

 

정규 표현식 활용: str.contains()는 정규 표현식과 함께 사용하여 더욱 세밀한 패턴 기반 필터링이 가능합니다.

예시:

# 'city' 열에서 '서'으로 시작하는 열만 필터링

df_filtered = df[df['city'].str.contains('^서')]

 

대소문자 구분: 기본적으로 대소문자를 구분하며, case=False 인수를 사용하여 대소문자 구분 없이 필터링할 수도 있습니다.

# 대소문자 구분 없이 '서울'이 포함된 주소만 필터링

df_filtered = df[df['city'].str.contains('서울', case=False)]

 

결론

Pandas는 다양한 필터링 기능을 제공하여 원하는 데이터만 쉽게 추출할 수 있습니다. 이번 글에서 소개한 방법들을 익혀 꼼꼼하고 정확한 데이터 분석을 실현하세요!

저작자표시 비영리 변경금지 (새창열림)

'파이썬 > Pandas' 카테고리의 다른 글

저장된 파일을 데이터프레임으로 읽어올 때 na_values, na_filter 매개변수 활용하기  (0) 2024.01.21
ValueError: Cannot mask with non-boolean array containing NA / NaN values  (0) 2024.01.20
Pandas DataFrame의 행을 순회하는 방법  (1) 2024.01.18
read_csv로 csv파일을 읽을 때 Unnamed : 0 열이 생기지 않도록 파일을 여는 방법  (0) 2024.01.17
Pandas DataFrame의 열 추가하기  (0) 2024.01.16
'파이썬/Pandas' 카테고리의 다른 글
  • 저장된 파일을 데이터프레임으로 읽어올 때 na_values, na_filter 매개변수 활용하기
  • ValueError: Cannot mask with non-boolean array containing NA / NaN values
  • Pandas DataFrame의 행을 순회하는 방법
  • read_csv로 csv파일을 읽을 때 Unnamed : 0 열이 생기지 않도록 파일을 여는 방법
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (730)
      • 스마트팜 (1)
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (19)
      • 일기장 (4)
      • 파이썬 (131)
        • Basic (42)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (5)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    rtsp
    리뷰관리
    programmerlife
    긴유통기한우유
    상품 리뷰 크롤링
    unity
    카페24리뷰
    codingtips
    codingcommunity
    스크립트 실행 순서
    appdevelopment
    programming101
    cv2
    카페24리뷰이관
    ipcamera
    리스트
    유니티
    list
    Python
    셀레니움
    스마트스토어리뷰
    스크립트 실행
    믈레코비타멸균우유
    쇼핑몰리뷰
    파이썬
    learntocode
    devlife
    라떼우유
    리뷰이관
    C#
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Pandas 데이터 필터링 : 원하는 데이터만 골라내기
상단으로

티스토리툴바