실기
연습 화면을 불러오는 중…
연습 화면을 불러오는 중…
Python으로 준비하는 실기
코딩이 처음이라면 한 줄 실행부터.
설명 옆에서 직접 써 보고, 결과를 확인하며 배웁니다.
설치·가입 없이 이 화면에서 실행
코드를 실행해 안녕하세요를 출력해요.
처음 보는 코드를 읽고, 오류 메시지를 읽고, 짧은 코드를 스스로 고칠 수 있다.
표에서 원하는 숫자 하나를 뽑아내는 길을 스스로 찾을 수 있다.
전처리 조건을 그대로 코드로 옮겨, 문제가 요구한 자리수로 값을 낼 수 있다.
학습 데이터로 모델을 만들고 평가 데이터의 예측을 규격에 맞는 CSV 로 낼 수 있다.
검정통계량과 p-value 를 구하고 그 결과를 과장 없이 문장으로 옮길 수 있다.
도움말과 파일을 확인하며 혼자 문제를 풀고 제출할 수 있다.
배운 내용을 실전으로
bike-daily.csv 는 2011-01-01 부터 2012-12-31 까지 하루 한 줄인 자전거 대여 기록 731행이다. total 이 그날의 총 대여량이다.
date 열은 문자열로 읽힌다. 날짜형으로 바꾼 뒤 2012년 자료만 남긴다.
2012년의 월별 total 합계를 구하고, 합계가 가장 큰 달과 가장 작은 달의 차이를 구해 버림하여 정수로 답안에 적는다.
df.dtypes 를 찍으면 date 가 object(문자열)임이 보인다. 이 확인이 이 문항의 출발점이다.pd.to_datetime(df['date']). 바꾸고 나서야 .dt 접근자가 열린다.df['date'].dt.year == 2012. 문항이 2012년만 물었으므로 여기서 걸러야 뒤의 집계가 맞는다.groupby(날짜.dt.month)['total'].sum(). 평균이 아니라 합계 다.round 가 아니라 math.floor 다. 공식 예시문제도 같은 표현을 쓴다.import pandas as pd
import math
df = pd.read_csv('bike-daily.csv')
df['date'] = pd.to_datetime(df['date'])
y2012 = df[df['date'].dt.year == 2012]
monthly = y2012.groupby(y2012['date'].dt.month)['total'].sum()
print(math.floor(monthly.max() - monthly.min()))read_csv 는 날짜를 문자열로 읽는다. pd.to_datetime 을 거쳐야 .dt.year·.dt.month 를 쓸 수 있다. 2012년 월별 합계는 9월이 가장 크고 1월이 가장 작으며 차이는 121,829 다. 연도를 거르지 않고 두 해를 함께 더하면 전혀 다른 값이 된다.
.dt.month 로만 묶으면 2011년 1월과 2012년 1월이 한 칸에 더해진다. 시계열 자료에서 가장 흔한 사고이고, 결과가 그럴듯한 숫자라서 눈으로는 잡히지 않는다.