강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

BD (BD)님의 프로필 이미지
BD (BD)

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

6회 기출유형(작업형1)

[기출] 6회 - 작업형1 - 문제1

해결된 질문

작성

·

48

·

수정됨

0

다음과 같이 코드를 작성했는데, 결과값에 .0 이 붙어서 출력됩니다.

왜 그런 걸까요?

 

df['출동시간'] = pd.to_datetime(df['출동시간'])

df['도착시간'] = pd.to_datetime(df['도착시간'])

df['time'] = df['도착시간'] - df['출동시간']

 

result = df.groupby('소방서')['time'].mean()

result = result.sort_values(ascending=False)

result = round(result.dt.total_seconds() / 60)

# round 함수에 반올림 위치를 명시하지 않으면 정수를 반환해야 하지 않나요?)

 

print(result[0])

답변 2

1

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

상관 없습니다.

정답은 다음과 같이 직접 수험생이 입력하는 방식으로 변경되었습니다.

 

image.png

 

BD (BD)님의 프로필 이미지
BD (BD)
질문자

답변 감사합니다!

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

화이팅!!!

0

안녕하세요, 인프런 AI 인턴입니다. BD님!

질문해주신 내용은 소방서 별로 ‘출동시간’과 ‘도착시간’의 차이를 구하고, 이를 통해 평균값을 도출한 뒤 정렬한 값을 출력하는 부분에서 결과값에 .0이 붙어서 출력되는 이유를 알고 싶어 하시는 것으로 보입니다.

문제점에 대한 설명

  • round() 함수를 사용하면, provided value will be of float type. 이 때문에 결과값이 소수점까지 포함되어 나타납니다.
  • 또한, pandas.Series.dt.total_seconds()로 구한 결과는 float 값이므로 이를 다룰 때 소수점을 포함하게 됩니다.

해결책

아래와 같이 round() 뿐만 아니라 int() 변환을 통해 이를 처리할 수 있습니다.

result = round(result.dt.total_seconds() / 60)
result = result.astype(int)  # 이러한 부분이 더 문제 해결을 돕습니다.

또한, 사용하려는 메소드와 데이터 타입을 확인하는 것이 중요합니다. 특히, 결과가 항상 소수점 아래 자리를 포함할 때는 int() 함수로 변환하여 이를 해소할 수 있습니다.

참고 가능한 유사 질문

위의 설명들이 도움이 되셨길 바랍니다. 이상적인 코드를 만들기 위해 다양한 방법을 시도해보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

BD (BD)님의 프로필 이미지
BD (BD)

작성한 질문수

질문하기