python pandas round 함수 사용 시 주의

python pandas round 함수를 사용시 주의할 점

pandas round 함수는 뱅커 반올림(bankers rounding) 연산을 한다. 숫자가 양쪽의 한 가운데 있을 경우에 가까운 짝수 쪽으로 만드는 것이다.

즉 0.5를 반올림 하면 0이 되고, 1.5를 반올림 하면 2가 된다.

이런 공식이 나온 일화는…

 

“미국 국세청에서 국민들에게 소송을 당해서 패한 사건이 있었습니다.

년도는 잘 모르겠지만 규약 제정일이 1985년이니까 대충 그 근처리라 생각됩니다.

국민들은, 국세청에서 반올림을 적용해 세금을 거두었기 때문에 한가운데인 0.5 경계에 걸친 사람들은 무조건 올림한 세금을 내게 되어 부당 이득을 취했다고 주장하였습니다.

이에 반해 국세청은 반올림에 의하여 절반은 올리고 절반은 내렸기 때문에 부당 이득을 취하지 않았다고 주장했지만, 결국은 패소하게 됩니다.

그 이후 국세청에서는 새로운 반올림 규칙에 대하여 고민하게 됩니다.

그 결과 첫번째 0.5 경계의 숫자는 내리고 그 다음 숫자는 올리는 것을 반복하는 규칙을 만들어 냈습니다.

이것을 규칙화 시킨 것이 ‘가장 가까운 짝수로 반올림한다’는 내용인 것입니다.

5.5 경계에 걸린 사람은 6.0의 세금을 내야하기 때문에 손해이지만,

4.5 경계에 걸린 사람은 4.0의 세금을 내기 때문에 둘이 서로 상쇄되어 국세청의 부당 이득이 사라지게 됩니다.”

 

이러한 이유로 뱅커 반올림이 생겼고, pandas round 함수에도 똑같이 적용이 되었다.

아래의 예를 보면

round 함수 예시

1.15, 1.25, 1.35, 1.45, 1.55, 1.65 의 데이터를 round(1) 했을 때

1.15 -> 1.2

1.25 -> 1.2

1.35 -> 1.4

1.45 -> 1.4

1.55 -> 1.6

1.65 -> 1.6

로 반올림 되어 주의 해야 한다.

1.25 같은 경우 반올림 했을 때 1.3으로 표현하기 위해서는 아주 작은 소수점을(0.0000001) 더한 후 반올림을 하면 된다.

답글 남기기