pandas 100제: 판다스 연습문제와 풀이 · 3장

021–030 열과 행 선택하기

열 선택, loc, iloc, at, drop, 새 열 추가, 열 순서 바꾸기 연습문제

3분 읽기

원하는 열과 행만 꺼내는 연습입니다. 28번부터는 df에 열을 추가하고, 그 뒤 문제가 이어서 씁니다.

준비 코드

이 장의 문제는 아래 코드를 먼저 실행한 상태에서 풉니다.

Pythonimport pandas as pd
import numpy as np

df = pd.DataFrame({
    'name': ['김민준', '이서연', '박지호', '최수아', '정민서', '강도윤', '윤하은', '임시우'],
    'class': ['A', 'B', 'A', 'C', 'B', 'C', 'A', 'B'],
    'kor': [85, 92, 58, 77, 66, 90, 73, 81],
    'eng': [78, 88, 64, 95, 59, 70, 82, 91],
    'math': [92, 75, 49, 88, 71, 66, 95, 60],
})

021. 열 하나 꺼내기

name 열을 Series로 꺼내세요.

정답 보기
Pythondf['name']
결과0    김민준
1    이서연
2    박지호
3    최수아
4    정민서
5    강도윤
6    윤하은
7    임시우
Name: name, dtype: object

022. 여러 열 꺼내기

name과 math 두 열을 DataFrame으로 꺼내세요.

정답 보기
Pythondf[['name', 'math']]
결과     name  math
0  김민준    92
1  이서연    75
2  박지호    49
3  최수아    88
4  정민서    71
5  강도윤    66
6  윤하은    95
7  임시우    60

대괄호를 두 번 쓰면 DataFrame입니다.

023. loc로 한 행

인덱스가 2인 학생의 정보를 보이세요.

정답 보기
Pythondf.loc[2]
결과name     박지호
class         A
kor          58
eng          64
math         49
Name: 2, dtype: object

024. iloc로 범위

처음 3행의 두 번째·세 번째 열을 위치로 꺼내세요.

정답 보기
Pythondf.iloc[:3, 1:3]
결과  class  kor
0     A   85
1     B   92
2     A   58

iloc의 끝 번호는 포함되지 않습니다.

025. loc로 행과 열

인덱스 0~2 학생의 name, kor를 꺼내세요.

정답 보기
Pythondf.loc[0:2, ['name', 'kor']]
결과     name  kor
0  김민준   85
1  이서연   92
2  박지호   58

loc에 이름으로 범위를 주면 끝(2)까지 포함합니다.

026. 값 하나 꺼내기

인덱스 3 학생의 영어 점수 하나만 꺼내세요.

정답 보기
Pythondf.at[3, 'eng']
결과95

값 하나는 at이 가장 빠릅니다.

027. 열 지우기

class 열을 뺀 표의 앞 3행을 보이세요.

정답 보기
Pythondf.drop(columns='class').head(3)
결과     name  kor  eng  math
0  김민준   85   78    92
1  이서연   92   88    75
2  박지호   58   64    49

028. 새 열 만들기

세 과목 합계 열 total을 추가하고 앞 3행을 보이세요.

정답 보기
Pythondf['total'] = df['kor'] + df['eng'] + df['math']
df.head(3)
결과     name class  kor  eng  math  total
0  김민준     A   85   78    92    255
1  이서연     B   92   88    75    255
2  박지호     A   58   64    49    171

029. 계산 열 추가

평균 열 avg(소수 첫째 자리 반올림)를 추가하고 name, total, avg를 보이세요.

정답 보기
Pythondf['avg'] = (df['total'] / 3).round(1)
df[['name', 'total', 'avg']]
결과     name  total   avg
0  김민준    255  85.0
1  이서연    255  85.0
2  박지호    171  57.0
3  최수아    260  86.7
4  정민서    196  65.3
5  강도윤    226  75.3
6  윤하은    250  83.3
7  임시우    232  77.3

030. 열 순서 바꾸기

class, name, avg 순서로 열을 골라 앞 3행을 보이세요.

정답 보기
Pythondf[['class', 'name', 'avg']].head(3)
결과  class    name   avg
0     A  김민준  85.0
1     B  이서연  85.0
2     A  박지호  57.0

전체 메뉴