📌 필터링과 정렬
- 조건에 맞는 데이터만 보고 싶을 때
- 특정 기준으로 정렬해서 순위나 최댓값/최솟값을 찾고 싶을 때
- 데이터를 미리 정렬해서 시각화나 분석하기 편하게 만들 때
👉 필터링 (Filtering)
기본 조건 필터링
df[df['score'] >= 90]
df[df['gender'] == 'female']
여러 조건 필터링 (주의: & / | 사용, 괄호 꼭!)
df[(df['score'] >= 90) & (df['gender'] == 'female')]
df[(df['age'] < 30) | (df['city'] == '서울')]
- and, or 대신 꼭 &, | 사용 그리고 각 조건은 괄호로 감싸기
문자열 조건
df[df['name'].str.contains('김')]
df[df['job'].str.startswith('교')]
df[df['email'].str.endswith('@naver.com')]
결측치 기반 필터링
df[df['address'].isnull()]
df[df['email'].notnull()]
👉 정렬 (Sorting)
오름차순 정렬
df.sort_values(by='score')
내림차순 정렬
df.sort_values(by='score', ascending=False)
여러 기준으로 정렬
df.sort_values(by=['gender', 'score'], ascending=[True, False])
👉 정렬된 결과 저장 vs 유지
| 목적 | 코드 |
|---|
| 원본 유지 + 결과 확인 | df.sort_values(..., inplace=False) (기본값) |
| 원본에 반영 | inplace=True 또는 df = df.sort_values(...) |
👉 NaN 위치 조절 정렬
df.sort_values(by='score', na_position='first')
👉 자주 하는 실수
| 실수 | 설명 | 해결 방법 |
|---|
| 조건식에 괄호 안 씀 | 오류 발생 | (조건1) & (조건2) 형태로 쓰기 |
| and / or 사용 | Pandas에서는 오류 | 반드시 &, 파이프기호 |
| 정렬했는데 적용 안 됨 | inplace=True 안 썼거나 재할당 안 함 | 재할당하거나 inplace=True 사용 |
| 결측치 포함된 열 정렬 시 오류 | NaN은 기본적으로 아래로 감 | na_position='first'로 조절 가능 |
👉 체크리스트
- 조건문에 괄호를 정확히 썼는가?
- &, |와 and, or을 헷갈리지 않았는가?
- 문자열 조건은 .str. 메서드를 사용했는가?
- 정렬 결과를 원본에 반영할지 결정했는가?