🔎 DataFrame 정렬·탐색 심화형 5지선다 평가

각각의 코드와 출력결과를 모두 보여주고, 코드 관련 심화형 5지선다 25문항과 상세 풀이 포함

평가 안내
각 문항은 실생활 DataFrame 코드와 출력결과를 보고 푸는 심화형 5지선다입니다. 채점 후 학번_이름_시각화_점수_응시시각.txt 파일이 자동 다운로드됩니다.
데이터 정렬 코드해석형

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
상세 설명
국어, 수학, 영어 점수를 합산해 총점 열을 만들고 총점이 높은 학생부터 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

이 코드의 실행 결과와 정렬 원리를 가장 정확하게 설명한 것은?

정답: 1번
상세 풀이: 국어, 수학, 영어 점수를 합산해 총점 열을 만들고 총점이 높은 학생부터 정렬합니다.
데이터 정렬 개념판단형

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
상세 설명
가격이 낮은 상품부터 오름차순으로 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

result = df.sort_values('가격')의 의미로 옳은 것은?

정답: 1번
상세 풀이: 가격이 낮은 상품부터 오름차순으로 정렬합니다.
데이터 정렬 원리이해형

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 형식은 문자열이어도 시간 순서대로 정렬될 수 있습니다.
🎯 코드 관련 심화형 5지선다형 문제

예약시간을 문자열로 정렬했는데도 순서가 맞는 이유로 가장 적절한 것은?

정답: 1번
상세 풀이: 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지선다형 문제

출력 결과의 첫 행에 대한 설명으로 옳은 것은?

정답: 1번
상세 풀이: 대출횟수가 많은 책부터 정렬하여 인기 도서를 확인합니다.
데이터 정렬 활용판단형

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
상세 설명
칼로리가 낮은 음식부터 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

이 코드가 식단 관리에 유용한 이유로 가장 적절한 것은?

정답: 1번
상세 풀이: 칼로리가 낮은 음식부터 정렬합니다.
데이터 정렬 실생활연계형

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
상세 설명
가장 빨리 도착하는 버스부터 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

실시간 버스 앱에서 이 코드와 가장 관련 깊은 기능은?

정답: 1번
상세 풀이: 가장 빨리 도착하는 버스부터 정렬합니다.
데이터 정렬 목적추론형

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
상세 설명
미세먼지 농도가 높은 지역부터 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

주의가 필요한 지역을 빠르게 찾기 위해 ascending=False를 사용한 이유는?

정답: 1번
상세 풀이: 미세먼지 농도가 높은 지역부터 정렬합니다.
데이터 정렬 다중조건형

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
상세 설명
먼저 학급 오름차순, 같은 학급 안에서는 점수 내림차순으로 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

ascending=[True, False]의 의미로 옳은 것은?

정답: 1번
상세 풀이: 먼저 학급 오름차순, 같은 학급 안에서는 점수 내림차순으로 정렬합니다.
데이터 정렬 자료형이해형

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으로 변환한 뒤 날짜 순서대로 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

pd.to_datetime(df['날짜'])를 사용하는 가장 중요한 이유는?

정답: 1번
상세 풀이: 날짜 문자열을 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을 마지막에 배치합니다.
🎯 코드 관련 심화형 5지선다형 문제

na_position='last'가 필요한 상황으로 가장 적절한 것은?

정답: 1번
상세 풀이: 결측치가 있는 과제점수를 정렬하면서 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점 이상 학생만 탐색하고, 그 결과를 점수 높은 순으로 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

이 코드의 처리 순서로 옳은 것은?

정답: 1번
상세 풀이: 먼저 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
상세 설명
가격 범위 조건으로 상품을 찾은 뒤 가격 오름차순으로 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

이 코드 결과에서 노트북가방이 제외되는 이유는?

정답: 1번
상세 풀이: 가격 범위 조건으로 상품을 찾은 뒤 가격 오름차순으로 정렬합니다.
정렬과 탐색 조합 환경데이터형

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
상세 설명
주의가 필요한 지역만 먼저 찾고, 그중 미세먼지가 높은 지역부터 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

출력 결과에서 부산이 제외되는 이유는?

정답: 1번
상세 풀이: 주의가 필요한 지역만 먼저 찾고, 그중 미세먼지가 높은 지역부터 정렬합니다.
정렬과 탐색 조합 다중정렬조합형

24. 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({
    "학생": ["민준", "서연", "지후", "하은", "도윤", "유나"],
    "동아리": ["코딩", "과학", "코딩", "코딩", "밴드", "코딩"],
    "학년": [2, 1, 1, 3, 2, 1]
})

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

print(result)
🖥️ 코드 실행 결과
학생 동아리  학년
5  유나   코딩     1
2  지후   코딩     1
0  민준   코딩     2
3  하은   코딩     3
상세 설명
코딩 동아리 학생만 찾은 뒤 학년, 학생 이름 순으로 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

sort_values(['학년','학생'])의 정렬 기준으로 옳은 것은?

정답: 1번
상세 풀이: 코딩 동아리 학생만 찾은 뒤 학년, 학생 이름 순으로 정렬합니다.
정렬과 탐색 조합 종합판단형

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
상세 설명
이메일이 있는 정상 회원만 탐색하고, 가입일이 최근인 순으로 정렬합니다.
🎯 코드 관련 심화형 5지선다형 문제

이 코드에 대한 설명으로 가장 적절한 것은?

정답: 1번
상세 풀이: 이메일이 있는 정상 회원만 탐색하고, 가입일이 최근인 순으로 정렬합니다.