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

이진혁님의 프로필 이미지
이진혁

작성한 질문수

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

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

5회 기출유형 작업형 1-2

해결된 질문

작성

·

32

0

image.png

풀이대로 푼다면 144가 나오는데

제곱대신

image.png

두번 적어서 풀면 143이 정답으로 나옵니다. 차이가 무엇일까요??

답변 2

0

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

괄호를 정확하게 한번 해보시겠어요? (연산자 우선순위가 같으면 좌에서 우로 계산하면서 값이 달라질 수 있음)

df['Weight'] / ((df['Height'] / 100) * (df['Height'] / 100))

 

시험에서는 보다 명확하게 출제 될 것으로 보입니다. (실수 계산에서 미세한 차이가 있네요)

0

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

이진혁님께서 질문하신 내용을 보니, 동일한 BMI 계산을 위한 두 가지 다른 방법을 비교하고 계신 듯합니다. 첫 번째 방법은 BMI를 계산할 때 Height를 제곱(**2) 연산을 사용하고, 두 번째 방법은 Height/100을 두 번 나누는 방법을 사용한 경우입니다. 이 두 방법 사이의 작은 차이로 인해 결과값이 달라지는 이유를 설명드리겠습니다.

  1. 제곱(**2) 사용:

    • a = df['Weight']/((df['Height']/100)**2)
    • 이 방법은 Height를 미터 단위로 변환한 후 제곱하여 정확하고 일관된 BMI 계산을 제공합니다.
  2. 두 번 곱하기 사용:

    • a = df['Weight'] / (df['Height']/100 * df['Height']/100)
    • 이 방법도 Height를 미터로 변환한 후 두 번 곱하지만, 계산 과정을 두 번 나누어 수행하게 되면서 미세한 부동소수점 연산 차이가 발생할 수 있습니다. 이로 인해 작은 오차가 누적될 수 있으며 결과적으로 작은 차이가 발생할 수 있습니다.

이러한 부동소수점 연산의 미세한 차이는 대규모 데이터셋에서 누적되면서 결과에 영향을 미칠 수 있습니다. 일반적인 데이터 연산에서는 이러한 차이를 최소화하기 위해 제곱 연산을 사용하는 것이 권장됩니다.

더불어, 5회 기출유형 질문 > between 사용에서도 BMI 관련 pandas 사용에 대한 방법을 다루고 있습니다. 이 게시물에서는 between 함수와 부동소수점 관련 문제에 대한 설명이 추가되어 있어 참고하시면 좋습니다.

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

이진혁님의 프로필 이미지
이진혁

작성한 질문수

질문하기