Python

Pandas 실습

learning-log22 2025. 5. 1. 14:20
문제 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