02단계 · 표 다루기 (pandas)
날짜 다루기
`to_datetime` 으로 날짜형으로 바꾸고 `.dt` 로 연·월을 꺼내며 기간으로 거른다.
먼저 알아볼게요
코드로 이동 ↓CSV 의 2024-08-28 은 읽으면 글자다. 날짜로 쓰려면 pd.to_datetime(열) 로 바꿔야 한다. 바꾼 결과를 다시 담아야 표가 바뀐다.
날짜형이 되면 .dt 를 거쳐 조각을 꺼낼 수 있다: .dt.year(연), .dt.month(월), .dt.day(일), .dt.dayofweek(요일 번호, 월요일이 0).
.dt.year 로 만든 열은 숫자라서 >= 2020 같은 조건을 그대로 걸 수 있다. "81년도에 입사한 사원" 같은 발문이 이 모양이다.
기간으로 거를 때는 날짜형끼리 비교한다: (s["주문일"] >= "2026-02-01") & (s["주문일"] <= "2026-02-28"). 글자 상태로 비교하면 사전순 비교가 되어 조용히 틀린다.
.min()·.max() 로 가장 이른·늦은 날짜를 볼 수 있다. .date() 를 붙이면 시각 부분(00:00:00)을 떼고 날짜만 나온다.
이렇게 써요
import pandas as pd
df = pd.read_csv("emp.csv")
df["입사일"] = pd.to_datetime(df["입사일"])
print(df["입사일"].dt.year.head(3).tolist())
print(df["입사일"].dt.dayofweek.head(3).tolist())기억할 한 가지
날짜는 먼저 to_datetime 으로 바꾼다. 글자 상태의 날짜 비교는 조용히 틀린다.
직접 해보기
emp.csv 의 입사일 을 날짜형으로 바꿔 ① 자료형 ② 2020년 이후 입사자 수 ③ 가장 이른 날짜와 가장 늦은 날짜를 한 줄에 출력하고, sales.csv 의 주문일 로 ④ 2026-02-01 ~ 2026-02-28 주문 수 ⑤ 월별 주문 수를 월 순서대로 출력하세요.
제공 파일 2개 · 내용 보기
파일은 준비되어 있어요. 코드에서 이름으로 불러오세요.
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
sales.csv
주문일,지점,상품,수량,단가,회원등급 2026-01-24,홍대점,키보드,2,89000,Silver 2026-02-19,강남점,마우스,1,32000,Gold 2026-01-02,판교점,모니터,4,245000,Silver 2026-01-23,강남점,마우스,5,32000,Gold 2026-03-19,판교점,노트북,1,1290000,VIP 2026-01-03,판교점,노트북,5,1290000,Gold 2026-01-01,홍대점,키보드,3,89000,VIP 2026-01-25,홍대점,키보드,2,89000,Silver 2026-03-05,판교점,모니터,3,245000,Gold 2026-01-12,강남점,마우스,1,32000,VIP 2026-02-26,판교점,마우스,4,32000,Silver 2026-03-16,홍대점,마우스,5,32000,VIP 2026-02-03,판교점,마우스,2,32000,VIP 2026-03-25,판교점,모니터,2,245000,Gold 2026-02-14,홍대점,마우스,1,32000,Silver 2026-02-05,강남점,모니터,4,245000,Gold 2026-02-13,판교점,노트북,1,1290000,Gold 2026-01-12,홍대점,키보드,3,89000,Gold 2026-02-11,홍대점,모니터,1,245000,Gold 2026-03-16,판교점,키보드,4,89000,Silver 2026-03-07,홍대점,마우스,5,32000,Gold 2026-03-05,홍대점,마우스,5,32000,Gold 2026-03-16,홍대점,모니터,4,245000,Gold 2026-01-02,강남점,마우스,3,32000,VIP 2026-02-21,판교점,노트북,1,1290000,Gold 2026-03-28,강남점,키보드,2,89000,Silver 2026-01-24,홍대점,키보드,3,89000,VIP 2026-02-26,판교점,모니터,4,245000,Gold 2026-03-28,강남점,모니터,4,245000,VIP 2026-03-19,판교점,노트북,1,1290000,VIP 2026-01-19,판교점,모니터,4,245000,Gold 2026-01-22,강남점,모니터,4,245000,VIP 2026-01-14,강남점,키보드,4,89000,Silver 2026-01-28,강남점,키보드,1,89000,Gold 2026-01-11,강남점,모니터,3,245000,Gold 2026-01-22,강남점,키보드,1,89000,VIP 2026-03-10,판교점,마우스,5,32000,Silver 2026-01-17,강남점,키보드,5,89000,VIP 2026-02-23,판교점,노트북,5,1290000,VIP 2026-01-22,강남점,노트북,1,1290000,Silver 2026-02-23,판교점,마우스,5,32000,Gold 2026-03-20,강남점,노트북,5,1290000,VIP 2026-02-01,홍대점,모니터,3,245000,Silver 2026-01-01,홍대점,마우스,5,32000,Gold 2026-03-23,홍대점,마우스,3,32000,Gold 2026-02-16,홍대점,노트북,2,1290000,Silver 2026-03-12,강남점,모니터,1,245000,VIP 2026-03-26,강남점,마우스,3,32000,Silver 2026-02-04,판교점,모니터,5,245000,Silver 2026-01-24,홍대점,마우스,3,32000,VIP 2026-03-08,홍대점,모니터,4,245000,Gold 2026-02-11,홍대점,마우스,5,32000,VIP 2026-03-22,강남점,마우스,5,32000,VIP 2026-01-19,강남점,노트북,2,1290000,VIP 2026-01-12,판교점,마우스,1,32000,Gold 2026-02-08,강남점,마우스,2,32000,VIP 2026-02-15,홍대점,모니터,4,245000,VIP 2026-03-16,홍대점,노트북,1,1290000,Silver 2026-01-13,판교점,모니터,4,245000,VIP 2026-02-09,판교점,키보드,3,89000,Silver
내 코드 Python
Python 준비 중… 처음 한 번만 내려받아요
들여쓰기: Tab · 편집기에서 나가기: Esc 다음 Tab
실행 결과
실행하면 코드가 출력한 내용이 여기에 나타나요.
막혔을 때
풀이와 비교하기
내 코드와 한 줄씩 비교해 보세요. 풀이를 보는 것만으로 완료되지는 않아요.
import pandas as pd
df = pd.read_csv("emp.csv")
df["입사일"] = pd.to_datetime(df["입사일"])
print(df["입사일"].dtype)
print((df["입사일"].dt.year >= 2020).sum())
print(df["입사일"].min().date(), df["입사일"].max().date())
s = pd.read_csv("sales.csv")
s["주문일"] = pd.to_datetime(s["주문일"])
print(s[(s["주문일"] >= "2026-02-01") & (s["주문일"] <= "2026-02-28")].shape[0])
print(s["주문일"].dt.month.value_counts().sort_index())