02단계 · 표 다루기 (pandas)

열 고르기 — Series 와 DataFrame

대괄호 한 겹과 두 겹의 차이를 구분하고, 각각 언제 쓰는지 안다.

먼저 알아볼게요

코드로 이동 ↓

df["연봉"] 은 열 하나를 꺼내며 결과는 Series(1차원)다. 통계값을 구할 때 이 모양을 쓴다.

df[["연봉"]] 은 대괄호가 두 겹이고, 결과는 열이 하나뿐인 DataFrame(2차원)이다. 표 모양을 그대로 유지한다.

왜 구분하나 — scikit-learn 의 스케일러·모델은 2차원을 요구한다. 그래서 mm.fit_transform(df[["연봉"]]) 처럼 대괄호를 두 겹 쓴다. 한 겹으로 주면 차원 오류가 난다.

여러 열을 고를 때도 두 겹이다: df[["이름", "연봉"]]. 안쪽 대괄호는 "열 이름 리스트" 다.

type(값).__name__ 으로 지금 손에 든 것이 Series 인지 DataFrame 인지 확인할 수 있다. 막혔을 때 가장 빨리 원인을 찾는 방법이다.

이렇게 써요
import pandas as pd

df = pd.read_csv("emp.csv")
print(type(df["연봉"]).__name__)
print(type(df[["연봉"]]).__name__)
print(df[["부서", "직급"]].head(2))
기억할 한 가지

대괄호 한 겹은 Series, 두 겹은 DataFrame. 스케일러·모델에 넣을 때는 두 겹이다.

이 단계의 수업
  1. 1CSV 읽어 오기
  2. 2표의 모양 살펴보기
  3. 3자료형 확인하기 — 왜 정수가 실수가 되었나
  4. 4열 고르기 — Series 와 DataFrame
  5. 5loc 와 iloc — 이름으로 vs 번호로
  6. 6조건으로 행 거르기
  7. 7결측치 세고 채우고 버리기
  8. 8기초 통계 — 그리고 표준편차의 함정
  9. 9범주 세기 — unique 와 value_counts
  10. 10그룹으로 묶어 계산하기
  11. 11정렬하고 n번째 뽑기
  12. 12문자열 열 다루기 — 대소문자 함정
  13. 13날짜 다루기
  14. 14표 두 개 합치기
  15. 15피벗 — 표를 가로로 돌리기
  16. 16새 열 만들기 — 파생변수
직접 해보기

emp.csv 에서 s = df["연봉"], d = df[["연봉"]] 을 만들고 ① 각각의 종류 이름 ② 각각의 shape ③ s 의 평균(소수 둘째 자리) ④ 이름·연봉 두 열의 위 3행을 출력하세요.

제공 파일 1개 · 내용 보기

파일은 준비되어 있어요. 코드에서 이름으로 불러오세요.

emp.csv
사번,이름,부서,직급,연봉,근속연수,고객만족도,입사일
1001,김서준,인사,사원,3230,2,3.8,2024-08-28
1002,이지우,인사,사원,4083,3,4.2,2023-07-26
1003,박도윤,인사,사원,3222,1,3.4,2025-09-24
1004,최하은,지원,부장,7395,18,4.6,2008-06-09
1005,정예준,영업,부장,8075,17,,2009-05-20
1006,강수아,인사,부장,7466,18,4.7,2008-06-01
1007,조민준,지원,대리,4558,5,4.7,2021-01-28
1008,윤지아,영업,과장,5796,,4.6,2015-04-13
1009,장시우,지원,과장,5878,13,4.6,2013-12-15
1010,임하윤,지원,대리,4686,9,3.3,2017-05-19
1011,한도현,지원,부장,7426,20,4.3,2006-07-27
1012,오채원,영업,사원,3545,4,,2022-06-25
1013,신건우,영업,사원,3724,1,3.8,2025-02-19
1014,권서연,영업,대리,4327,7,3.2,2019-05-06
1015,황준서,개발,부장,7732,21,4.7,2005-05-13
1016,안다은,영업,사원,3823,4,4.2,2022-01-13
1017,송지호,개발,부장,7262,19,4.4,2007-07-27
1018,전유진,지원,과장,6006,15,3.6,2011-03-16
1019,홍현우,개발,과장,5806,14,4.7,2012-10-17
1020,문소율,지원,사원,4008,,3.2,2023-01-06
1021,양지훈,개발,부장,7754,13,3.4,2013-07-10
1022,배가은,개발,과장,5483,13,3.4,2013-03-21
1023,백태윤,지원,사원,3510,4,4.1,2022-10-07
1024,유서윤,인사,사원,3477,2,,2024-06-22
1025,남주원,지원,사원,3581,1,3.3,2025-06-12
1026,노예린,영업,대리,4410,4,4.9,2022-06-04
1027,하시윤,지원,부장,7820,21,3.6,2005-04-15
1028,구다인,인사,사원,3846,1,3.2,2025-11-08
1029,서준혁,인사,대리,4549,4,3.2,2022-06-24
1030,민하율,개발,부장,7903,15,3.2,2011-12-03
내 코드 Python
Python 준비 중… 처음 한 번만 내려받아요

들여쓰기: Tab · 편집기에서 나가기: Esc 다음 Tab

실행 결과

실행하면 코드가 출력한 내용이 여기에 나타나요.

막혔을 때

풀이와 비교하기

내 코드와 한 줄씩 비교해 보세요. 풀이를 보는 것만으로 완료되지는 않아요.

import pandas as pd

df = pd.read_csv("emp.csv")
s = df["연봉"]
d = df[["연봉"]]
print(type(s).__name__)
print(type(d).__name__)
print(s.shape, d.shape)
print(round(s.mean(), 2))
print(df[["이름", "연봉"]].head(3))