인프런 커뮤니티 질문&답변
[작업형1] 연습문제 섹션21 ~ 30중 no.27
해결된 질문
작성
·
24
0
[문제]
Section 27. 시간 범위, 속도(km/h)
점심시간(10시부터 13시 전까지)에 주문된 배달 데이터를 찾으시오.
점심시간 주문 건 중 과속(평균 속도가 50km/h 이상)하는 주문 수를 정수로 구하시오.
배달시간 = 실제도착시간 - 주문시간
속도(km/h) = 거리(km) / 시간(h)
[질문] 정답이 '1'이 아닌 21이 계속 출력되는데, 문제점을 못찾겠어요.
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p1/delivery_time.csv")
df['주문시간']= pd.to_datetime(df['예상도착시간'])
df['실제도착시간']= pd.to_datetime(df['실제도착시간'])
df['예상도착시간'] = pd.to_datetime(df['예상도착시간'])
# 점심시간(10시부터 13시 전까지)에 주문된 배달 데이터를 찾으시오.
df['시간']=df['주문시간'].dt.hour
con1= df['시간'] >= 10
con2= df['시간'] < 13
df= df[con1&con2]
# 점심시간 주문 건 중 과속(평균 속도가 50km/h 이상)하는 주문 수를 정수로 구하시오.
df['배달시간'] = df['실제도착시간']- df['주문시간']
# 배달시간 = 실제도착시간 - 주문시간
# 속도(km/h) = 거리(km) / 시간(h)
## dt.total_seconds()/60 :분단위
## dt.total_seconds()/60/60 : 시간단위
df['배달시간']= df['배달시간'].dt.total_seconds()/60/60
df['속도'] = df['거리']/ df['배달시간']
sum(df['속도']>= 50)답변 3
1
안녕하세요, 인프런 AI 인턴입니다. lovesy116님.
귀하의 코드를 보면, 점심시간에 주문된 배달 데이터 중 과속 운전(평균 속도 50km/h 이상)을 확인하려고 하시는 것 같습니다. 몇 가지 확인하고 수정할 수 있는 부분을 안내 드리겠습니다.
코드 분석 및 문제 확인
시간과 관련된 부분:
- ‘예상도착시간’이 아닌 ‘주문시간’을 제대로 설정하셨는지 확인하세요. 예시 데이터에서는 ‘주문시간’을 기반으로 배달 시간을 계산하는 것이 맞습니다.
- ‘예상도착시간’이 아닌 ‘주문시간’을 제대로 설정하셨는지 확인하세요. 예시 데이터에서는 ‘주문시간’을 기반으로 배달 시간을 계산하는 것이 맞습니다.
속도 계산:
- ‘배달시간’에서 총 걸린 시간을 시간 단위로 변환할 때
df['배달시간'].dt.total_seconds()/60/60로 올바르게 변환한 것으로 보입니다.
- ‘배달시간’에서 총 걸린 시간을 시간 단위로 변환할 때
과속 조건 설정:
sum(df['속도'] >= 50)를 통해 평균 속도가 50km/h 이상인 주문 건수를 정수로 반환합니다. 계산 과정 자체는 올바르지만, 조건에 맞는 주문 건이 맞는지 데이터 특성을 다시 한번 검토하시는 것이 좋습니다.
점검할 사항
- 주어진 데이터가 제대로 로드되어 있는지 확인하세요. 간혹 데이터가 업데이트되지 않거나 로드가 잘못되었을 수 있습니다. 혹시 데이터의 구조나 이름이 바뀌지는 않았는지 확인하세요.
- 계산에서의 센티미터 등의 데이터 단위가 잘못 설정된 것은 아닌지 확인해보세요.
- 데이터 값 자체에 오류가 있는지, 그리고 예상과 다른 경우 다른 필드(예:
실제도착시간)에서 불량 또는 이상치를 확인해야 할 수 있습니다.
아래와 같은 유사한 질문 링크에서 데이터와 관련된 문제를 특정하여 해결한 사례를 확인해보실 수 있습니다. 데이터가 맞지 않거나 다른 경우도 있기 때문에 점검이 필요합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
0






오!!! 답변 감사합니다 🙂