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의 행을 순회하는 방법  (0) 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 열이 생기지 않도록 파일을 여는 방법
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (720) N
      • 상품 추천 (220) N
      • MongoDB (4)
      • 하드웨어 (15) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (13)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (41)
        • 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)
  • 인기 글

  • 태그

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

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

티스토리툴바