문제 1 : 학생 성적 데이터를 보고 아래 물음에 답하시오.
import pandas as pd
df = pd.DataFrame({
"이름": ["철수", "영희", "민수", "지현", "수빈"],
"국어": [85, 90, 78, 92, 88],
"영어": [80, 95, 85, 89, 90],
"수학": [75, 88, 90, 70, 95]
})
1-1 수학 성적이 80점 이상인 학생의 이름을 모두 출력하시오.
print(df.loc[df['수학'] >= 80, '이름'])
1 영희
2 민수
4 수빈
Name: 이름, dtype: object
1-2 영어 성적이 국어 성적보다 높은 학생 수를 출력하시오.
print((df['영어'] > df['국어']).sum() )
3
1-3 모든 과목 평균이 85점 이상인 학생만 남긴 새로운 데이터프레임을 만들어 출력하시오.
df["평균"] = df[["국어", "영어", "수학"]].mean(axis=1)print(df.loc[df["평균"] >= 85])
이름 국어 영어 수학 평균
1 영희 90 95 88 91.0
4 수빈 88 90 95 91.0
문제 2 : 판매 데이터 집계 및 필터링
df = pd.DataFrame({ "상품": ["A", "B", "C", "D"], "1월": [120, 80, 75, 95], "2월": [100, 150, 90, 60], "3월": [130, 110, 85, 70]})
2-1 총 판매량이 가장 높은 상품의 이름은?
df["총합"] = df[['1월', '2월', '3월']].sum(axis=1)print( df.loc[df['총합'].idxmax(), '상품'] )
A
2-2 월별로 가장 많이 팔린 상품의 이름을 구하라.
print( { month: df.loc[df[month].idxmax(), '상품'] for month in ['1월', '2월', '3월']} )
{'1월': 'A', '2월': 'B', '3월': 'A'}
2-3 2월에 판매된 상품 중 판매량이 100개 이상인 항목만 추출하라.
print( df.loc[df['2월'] >= 100] )
상품 1월 2월 3월 총합
0 A 120 100 130 350
1 B 80 150 110 340
문제 3 : 영화 평점 필터링과 집계
df = pd.DataFrame({
"영화": ["영화A", "영화B", "영화C", "영화D", "영화E"],
"유저1": [5, 4, 3, None, 5],
"유저2": [4, 4, None, 2, 3],
"유저3": [5, 5, 4, 3, 4]
})
df
3-1 전체 평점 평균이 4.0 이상인 영화의 제목을 구하라.
df["평균"] = df[['유저1', '유저2', '유저3']].mean(axis=1)
print( df.loc[df['평균'] >= 4.0, '영화'] )
0 영화A
1 영화B
4 영화E
Name: 영화, dtype: object
3-2 유저1이 4점 이상 준 영화는 어떤 것인가?
print( df.loc[df['유저1'] >= 4, '영화'] )
0 영화A
1 영화B
4 영화E
Name: 영화, dtype: object
3-3 유저2가 평점을 주지 않은(결측값) 영화는 몇 개인가?
print( df['유저2'].isnull().sum() )
1
문제 4 : 시간대별 데이터 분석
df = pd.DataFrame({
"시간대": ["08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00"],
"방문자수": [5, 12, 20, 25, 30, 18, 8]
})
df
4-1. 방문자 수가 가장 많은 시간대는 언제인가?
print( df.loc[df['방문자수'].idxmax(), '시간대'] )
12:00
4-2. 방문자 수가 10명 미만인 시간대를 모두 출력하라.
print( df.loc[df['방문자수'] < 10, '시간대'] )
0 08:00
6 14:00
Name: 시간대, dtype: object
4-3. 전체 방문자 수 평균보다 많은 시간대의 방문자 수를 출력하라.
avg = df['방문자수'].mean()print(df.loc[df['방문자수'] > avg, ['시간대', '방문자수']])
시간대 방문자수
2 10:00 20
3 11:00 25
4 12:00 30
5 13:00 18
문제 5 : 문자열 데이터와 조건 필터링
df = pd.DataFrame({
"제목": ["파이썬 기초", "데이터 과학 입문", "파이썬데이터시각화", "파이썬머신러닝", "자율주행"],
"저자": ["이순헌", "김명신", "김진리", "최새힘", "박프라임"],
"출판년도": [2019, 2021, 2020, 2018, 2022]
})
df
5-1 저자가 '김'씨인 도서의 제목을 모두 출력하라.
print( df.loc[df['저자'].str.startswith('김'), '제목'] )
1 데이터 과학 입문
2 파이썬데이터시각화
Name: 제목, dtype: object
5-2 '파이썬'이라는 단어가 제목에 포함된 책만 추출하라.
print( df.loc[df['제목'].str.contains('파이썬')] )
제목 저자 출판년도
0 파이썬 기초 이순헌 2019
2 파이썬데이터시각화 김진리 2020
3 파이썬머신러닝 최새힘 2018
5-3 출판년도가 2020년 이후인 책의 수는 몇 개인가?
print( (df['출판년도'] >= 2020).sum() )
3
728x90
LIST
'Python' 카테고리의 다른 글
Seaborn 라이브러리 (0) | 2025.05.04 |
---|---|
Python 기초 개념 정리 (0) | 2025.05.01 |
numpy 실습 (1) | 2025.05.01 |
matplotlib 실습 (0) | 2025.05.01 |
감성분석 이론 (0) | 2025.05.01 |