🔎 실생활 DataFrame 데이터 정렬·탐색 25예제

한글 깨짐 방지 설정 포함 · 에러/경고 최소화 코드 구성
데이터 정렬 10개 + 데이터 탐색 10개 + 정렬과 탐색 조합 5개

공통 안전 설정
모든 예제에는 Pandas 출력에서 한글과 표 너비가 보기 좋도록 pd.set_option("display.unicode.east_asian_width", True)를 포함했습니다.
각 예제는 서로 다른 실생활 데이터를 DataFrame으로 만들고, 실행 결과와 상세 설명을 함께 제공합니다.
데이터 정렬

1. 1. 학생 성적 총점 기준 내림차순 정렬

핵심 개념: sort_values(), ascending=False, 여러 열 계산

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "이름": ["민준", "서연", "지후", "하은", "도윤"],
    "국어": [88, 92, 75, 95, 81],
    "수학": [91, 85, 80, 90, 88],
    "영어": [84, 96, 78, 93, 86]
})

df["총점"] = df["국어"] + df["수학"] + df["영어"]
result = df.sort_values("총점", ascending=False)

print(result)
🖥️ 코드 실행 결과
이름  국어  수학  영어  총점
3  하은    95    90    93   278
1  서연    92    85    96   273
0  민준    88    91    84   263
4  도윤    81    88    86   255
2  지후    75    80    78   233
상세 설명
국어, 수학, 영어 점수를 합산해 총점 열을 만들고, 총점이 높은 학생부터 내림차순으로 정렬합니다. 성적 우수자 순위를 만들 때 사용하는 기본 패턴입니다.
데이터 정렬

2. 2. 상품 가격 오름차순 정렬

핵심 개념: sort_values(), 가격 비교

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "상품": ["노트", "볼펜", "파일", "형광펜", "스티커"],
    "가격": [2500, 900, 1800, 1200, 3000],
    "재고": [30, 80, 45, 60, 20]
})

result = df.sort_values("가격")

print(result)
🖥️ 코드 실행 결과
상품  가격  재고
1    볼펜   900    80
3  형광펜  1200    60
2    파일  1800    45
0    노트  2500    30
4  스티커  3000    20
상세 설명
가격이 낮은 상품부터 오름차순으로 정렬합니다. 쇼핑몰에서 저가순 정렬을 구현할 때 같은 원리를 사용합니다.
데이터 정렬

3. 3. 병원 예약 시간 순서 정렬

핵심 개념: 문자열 시간 정렬, 예약표

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "환자": ["김철수", "이영희", "박민수", "최서아"],
    "진료과": ["내과", "치과", "안과", "피부과"],
    "예약시간": ["14:30", "09:20", "11:00", "10:10"]
})

result = df.sort_values("예약시간")

print(result)
🖥️ 코드 실행 결과
환자  진료과 예약시간
1  이영희    치과    09:20
3  최서아  피부과    10:10
2  박민수    안과    11:00
0  김철수    내과    14:30
상세 설명
HH:MM 형식의 시간 문자열은 앞자리부터 비교되므로 예약시간 순서대로 정렬할 수 있습니다. 실제 병원 예약표나 상담 예약표에 활용할 수 있습니다.
데이터 정렬

4. 4. 도서 대출 횟수 기준 인기 도서 정렬

핵심 개념: 내림차순 정렬, 상위 인기 항목

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "도서명": ["수학의 정석", "어린 왕자", "파이썬 입문", "과학 콘서트", "한국사 이야기"],
    "분야": ["수학", "문학", "코딩", "과학", "역사"],
    "대출횟수": [42, 85, 73, 55, 60]
})

result = df.sort_values("대출횟수", ascending=False)

print(result)
🖥️ 코드 실행 결과
도서명  분야  대출횟수
1      어린 왕자  문학        85
2    파이썬 입문  코딩        73
4  한국사 이야기  역사        60
3    과학 콘서트  과학        55
0    수학의 정석  수학        42
상세 설명
대출횟수가 많은 책부터 정렬하여 인기 도서를 확인합니다. 도서관 추천 목록이나 인기 자료 분석에 적합합니다.
데이터 정렬

5. 5. 음식 칼로리 낮은 순 정렬

핵심 개념: 건강 데이터, 오름차순 정렬

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "음식": ["김밥", "라면", "샐러드", "비빔밥", "떡볶이"],
    "칼로리": [420, 510, 180, 650, 480],
    "단백질": [12, 10, 8, 20, 9]
})

result = df.sort_values("칼로리", ascending=True)

print(result)
🖥️ 코드 실행 결과
음식  칼로리  단백질
2  샐러드     180       8
0    김밥     420      12
4  떡볶이     480       9
1    라면     510      10
3  비빔밥     650      20
상세 설명
칼로리가 낮은 음식부터 정렬합니다. 식단 관리 앱에서 저칼로리 음식 추천을 만들 때 사용할 수 있는 정렬 방식입니다.
데이터 정렬

6. 6. 버스 도착 예정 시간 정렬

핵심 개념: 교통 데이터, 분 단위 정렬

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "버스번호": ["101", "165", "72", "5001", "3-1"],
    "정류장": ["전북대", "전주역", "객사", "한옥마을", "시청"],
    "도착예정분": [12, 5, 18, 3, 9]
})

result = df.sort_values("도착예정분")

print(result)
🖥️ 코드 실행 결과
버스번호    정류장  도착예정분
3     5001  한옥마을           3
1      165    전주역           5
4      3-1      시청           9
0      101    전북대          12
2       72      객사          18
상세 설명
도착예정분이 작은 버스부터 정렬합니다. 실시간 버스 도착 알림에서 가장 빨리 오는 버스를 찾는 데 유용합니다.
데이터 정렬

7. 7. 미세먼지 농도 높은 순 정렬

핵심 개념: 환경 데이터, 위험도 정렬

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "지역": ["서울", "전주", "부산", "대구", "광주"],
    "미세먼지": [42, 35, 29, 50, 38],
    "초미세먼지": [21, 18, 15, 27, 20]
})

result = df.sort_values("미세먼지", ascending=False)

print(result)
🖥️ 코드 실행 결과
지역  미세먼지  초미세먼지
3  대구        50          27
0  서울        42          21
4  광주        38          20
1  전주        35          18
2  부산        29          15
상세 설명
미세먼지 농도가 높은 지역부터 정렬합니다. 환경 데이터에서 주의가 필요한 지역을 빠르게 찾는 데 사용합니다.
데이터 정렬

8. 8. 두 조건 정렬: 학급과 점수

핵심 개념: 여러 열 정렬, ascending 리스트

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "학급": ["1반", "2반", "1반", "2반", "1반", "2반"],
    "이름": ["민준", "서연", "지후", "하은", "도윤", "유나"],
    "점수": [88, 95, 92, 85, 92, 95]
})

result = df.sort_values(["학급", "점수"], ascending=[True, False])

print(result)
🖥️ 코드 실행 결과
학급  이름  점수
2  1반  지후    92
4  1반  도윤    92
0  1반  민준    88
1  2반  서연    95
5  2반  유나    95
3  2반  하은    85
상세 설명
먼저 학급을 오름차순으로 정렬하고, 같은 학급 안에서는 점수가 높은 순으로 정렬합니다. 여러 기준을 동시에 적용하는 고급 정렬입니다.
데이터 정렬

9. 9. 날짜 기준 지출 내역 정렬

핵심 개념: 날짜 변환, sort_values()

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "날짜": ["2026-05-03", "2026-05-01", "2026-05-04", "2026-05-02"],
    "항목": ["간식", "교통", "도서", "문구"],
    "금액": [8000, 3000, 15000, 5000]
})

df["날짜"] = pd.to_datetime(df["날짜"])
result = df.sort_values("날짜")

print(result)
🖥️ 코드 실행 결과
날짜  항목   금액
1 2026-05-01  교통   3000
3 2026-05-02  문구   5000
0 2026-05-03  간식   8000
2 2026-05-04  도서  15000
상세 설명
날짜 문자열을 datetime으로 변환한 뒤 날짜 순서대로 정렬합니다. 가계부, 지출 내역, 출석 기록 등에서 많이 사용합니다.
데이터 정렬

10. 10. 결측치가 있는 성적 정렬

핵심 개념: na_position, 결측치 정렬 위치

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "이름": ["민준", "서연", "지후", "하은", "도윤"],
    "과제점수": [90, None, 75, 88, None]
})

result = df.sort_values("과제점수", ascending=False, na_position="last")

print(result)
🖥️ 코드 실행 결과
이름  과제점수
0  민준      90.0
3  하은      88.0
2  지후      75.0
1  서연       NaN
4  도윤       NaN
상세 설명
결측치가 있는 과제점수를 정렬하면서 NaN은 마지막에 배치합니다. 미제출 학생을 아래쪽에 두고 제출자 점수 순위를 먼저 볼 수 있습니다.
정렬과 탐색 조합

21. 1. 90점 이상 학생을 점수 높은 순으로 정렬

핵심 개념: 필터링 후 정렬

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "이름": ["민준", "서연", "지후", "하은", "도윤", "유나"],
    "점수": [88, 95, 72, 91, 84, 98],
    "반": ["1반", "1반", "2반", "2반", "1반", "2반"]
})

filtered = df[df["점수"] >= 90]
result = filtered.sort_values("점수", ascending=False)

print(result)
🖥️ 코드 실행 결과
이름  점수   반
5  유나    98  2반
1  서연    95  1반
3  하은    91  2반
상세 설명
먼저 90점 이상 학생만 탐색하고, 그 결과를 점수 높은 순으로 정렬합니다. 조건 탐색과 순위 정렬이 결합된 대표 예제입니다.
정렬과 탐색 조합

22. 2. 3만원 이하 상품을 가격 낮은 순으로 정렬

핵심 개념: between() + sort_values()

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "상품": ["노트북가방", "필통", "이어폰", "USB", "마우스"],
    "가격": [42000, 8000, 29000, 15000, 26000],
    "재고": [10, 30, 15, 50, 20]
})

filtered = df[df["가격"].between(5000, 30000)]
result = filtered.sort_values("가격")

print(result)
🖥️ 코드 실행 결과
상품   가격  재고
1    필통   8000    30
3     USB  15000    50
4  마우스  26000    20
2  이어폰  29000    15
상세 설명
가격 범위 조건으로 상품을 찾은 뒤 가격 오름차순으로 정렬합니다. 쇼핑몰의 가격 필터와 저가순 정렬을 함께 구현한 예제입니다.
정렬과 탐색 조합

23. 3. 미세먼지 35 이상 지역을 높은 순으로 정렬

핵심 개념: 환경 데이터 탐색 + 위험도 정렬

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "지역": ["서울", "전주", "부산", "대구", "광주", "인천"],
    "미세먼지": [42, 35, 29, 50, 38, 45],
    "초미세먼지": [21, 18, 15, 27, 20, 25]
})

filtered = df[df["미세먼지"] >= 35]
result = filtered.sort_values("미세먼지", ascending=False)

print(result)
🖥️ 코드 실행 결과
지역  미세먼지  초미세먼지
3  대구        50          27
5  인천        45          25
0  서울        42          21
4  광주        38          20
1  전주        35          18
상세 설명
주의가 필요한 지역만 먼저 찾고, 그중에서도 미세먼지가 높은 지역부터 정렬합니다. 환경 경보 데이터 분석에 적합합니다.
정렬과 탐색 조합

24. 4. 코딩 동아리 학생을 학년순·이름순 정렬

핵심 개념: isin/조건 + 다중 열 정렬

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "학생": ["민준", "서연", "지후", "하은", "도윤", "유나"],
    "동아리": ["코딩", "과학", "코딩", "코딩", "밴드", "코딩"],
    "학년": [2, 1, 1, 3, 2, 1]
})

filtered = df[df["동아리"] == "코딩"]
result = filtered.sort_values(["학년", "학생"])

print(result)
🖥️ 코드 실행 결과
학생 동아리  학년
5  유나   코딩     1
2  지후   코딩     1
0  민준   코딩     2
3  하은   코딩     3
상세 설명
코딩 동아리 학생만 탐색한 뒤 학년, 학생 이름 순으로 정렬합니다. 명단 정리나 동아리 관리 자료에 적합합니다.
정렬과 탐색 조합

25. 5. 결측치 없는 회원만 최근 가입순 정렬

핵심 개념: notna(), 날짜 변환, 정렬

🐍 파이썬 코드
import pandas as pd

# Pandas 출력에서 한글/열 너비가 잘 보이도록 설정
pd.set_option("display.unicode.east_asian_width", True)
pd.set_option("display.width", 120)
pd.set_option("display.max_columns", 20)

df = pd.DataFrame({
    "이름": ["민준", "서연", "지후", "하은", "도윤"],
    "이메일": ["min@example.com", None, "ji@example.com", "ha@example.com", None],
    "가입일": ["2026-05-01", "2026-05-03", "2026-04-28", "2026-05-05", "2026-05-02"]
})

df["가입일"] = pd.to_datetime(df["가입일"])
filtered = df[df["이메일"].notna()]
result = filtered.sort_values("가입일", ascending=False)

print(result)
🖥️ 코드 실행 결과
이름           이메일     가입일
3  하은   ha@example.com 2026-05-05
0  민준  min@example.com 2026-05-01
2  지후   ji@example.com 2026-04-28
상세 설명
이메일이 있는 정상 회원만 탐색하고, 가입일이 최근인 순으로 정렬합니다. 실제 회원 데이터 관리에서 자주 쓰이는 조합입니다.