본문 바로가기
Python

Pandas로 원하는 데이터만 쏙쏙 뽑기! - 데이터 선택 & 필터링 완전 정복

by ramzee 2025. 3. 24.

0. 이 글은 누구를 위한 글인가요?

  • “표에서 특정 열만 보고 싶어요.”
  • “나이가 30살 이상인 사람만 골라내고 싶어요!”
  • “열 이름으로, 번호로, 조건으로 어떻게 추출하죠?”

Pandas에서 원하는 데이터만 정확히 골라내는 방법, 아주 친절하게 알려드릴게요!


1. 예제 데이터 먼저 만들기

import pandas as pd

data = {
    '이름': ['Alice', 'Bob', 'Charlie', 'David', 'Ella'],
    '나이': [24, 30, 18, 45, 29],
    '도시': ['서울', '부산', '대구', '서울', '부산'],
    '점수': [85, 90, 75, 88, 95]
}

df = pd.DataFrame(data)
print(df)

출력 예시:


       이름  나이   도시  점수
0    Alice   24   서울   85
1      Bob   30   부산   90
2  Charlie   18   대구   75
3    David   45   서울   88
4     Ella   29   부산   95

2. 열(Column) 선택하기

2-1. 하나의 열 선택 (Series)
print(df['이름'])

0      Alice
1        Bob
2    Charlie
3      David
4       Ella
Name: 이름, dtype: object
2-2. 여러 열 선택 (DataFrame)
print(df[['이름', '점수']])

       이름  점수
0    Alice   85
1      Bob   90
2  Charlie   75
3    David   88
4     Ella   95

3. 행(Row) 선택하기

3-1. 숫자 기준 선택 (iloc)
print(df.iloc[1])

이름     Bob
나이      30
도시      부산
점수      90
Name: 1, dtype: object
print(df.iloc[1:4])

       이름  나이   도시  점수
1      Bob   30   부산   90
2  Charlie   18   대구   75
3    David   45   서울   88
3-2. 인덱스 기준 선택 (loc)
print(df.loc[2])

이름    Charlie
나이         18
도시        대구
점수         75
Name: 2, dtype: object

4. 조건으로 필터링하기

4-1. 나이가 30 이상
print(df[df['나이'] >= 30])

    이름  나이   도시  점수
1   Bob   30   부산   90
3 David   45   서울   88
4-2. 도시가 '부산'
print(df[df['도시'] == '부산'])

    이름  나이   도시  점수
1   Bob   30   부산   90
4  Ella   29   부산   95
4-3. 점수 >= 85 AND 나이 <= 30
print(df[(df['점수'] >= 85) & (df['나이'] <= 30)])

    이름  나이   도시  점수
1   Bob   30   부산   90
4  Ella   29   부산   95

5. 조건 + 열 추출

print(df[df['도시'] == '서울'][['이름', '점수']])

     이름  점수
0  Alice   85
3  David   88

6. 열 이름 조건 필터링 (열 이름 중 '점'이 포함된 것만)


filtered_cols = [col for col in df.columns if '점' in col]
print(df[filtered_cols])

   점수
0   85
1   90
2   75
3   88
4   95

7. 조건 필터링 + 정렬 예제


filtered = df[(df['점수'] >= 80) & (df['도시'] == '서울')]
sorted_df = filtered.sort_values(by='점수', ascending=False)
print(sorted_df)

     이름  나이   도시  점수
3  David   45   서울   88
0  Alice   24   서울   85

8. 요약 정리

작업 코드
특정 열 보기 df['열이름']
여러 열 보기 df[['열1', '열2']]
특정 행 보기 df.iloc[행번호] / df.loc[인덱스]
조건 필터링 df[df['열'] 조건]
다중 조건 &, | 연산자 사용
필터 후 열 추출 df[조건][['열1']]