파이썬으로 데이터를 반올림, 올림, 내림 처리하고 싶다.
안녕하세요? 데이터위자드입니다. 즐거운 데이터 생활 되고 있으신지요?
오늘은 데이터 수치를 정리하다 보면 흔하게 작업하게 되는,
반올림, 올림, 내림
기능에 대해서 알아보겠습니다.
파이썬이 아니더라도, 엑셀로 사무작업을 해보신 분들이라면 익숙한 Fucntion 인,
- Round - 반올림
- Roundup - 올림
- Rounddown - 내림
반올림, 올림, 내림 기능을 사용해 보신 경험이 있으실 것입니다. 오늘은 이 기능을 파이썬 로직으로 구현하는 방법에 대해서 알아보겠습니다.
round - 반올림 기능
먼저 반올림 기능입니다. 엑셀의 그것과 동일한 매써드인 round()입니다.
해당 매써드는 파이썬 내장함수이므로 별도의 추가 라이브러리 없이 구현이 가능합니다.
Round() method는 엑셀의 그것과 유사하게 다음과 같은 매개변수로 간단하게 구현 가능합니다.
round(Number, digit) # round(숫자, 자릿수)
예제는 다음과 같습니다.
임의의 숫자에 대해서 뒤에 매개변수를 증가시킴에 따라 소수점 자릿수가 증가함을 볼 수 있습니다.
반면, 두 번째 매개변수를 음수(-)로 하게 되면 엑셀에서 기능과 동일하게 정수부(일의 자리, 십의 자리 등)에서 반올림이 이루어지는 것을 보실 수 있습니다.
엑셀에서 보던 기능과 그 기전이 동일하므로, 쉽게 이해되실 것이라 생각됩니다.
다만, 결괏값에서 보듯이 해당 변수는 실수형(Float 혹은 Real) 값으로 반환되기 때문에 정수형 값이 필요한 경우라면,
int(round(Number, digit)) # Integer 형(정수형)으로 변환
int() 함수를 이용해 Integer Type으로 형 변환시켜 줄 필요가 있습니다.
다만, round에서 계산식을 괄호로 묶는 과정, int형으로 괄호로 묶는 과정에서 괄호를 실수하는 경우가 간혹 있습니다. (저만 그런 건지도...)
에러 메시지
TypeError: type tuple doesn't define __round__ method
round(Number) # round(숫자)
ceil - 올림 기능
다음으로 올림 기능입니다.
엑셀에서는 'RoundUp' 함수로 구현 가능하지만, 파이썬에서는 ceil() 매써드를 이용해서 숫자의 올림기능을 구현할 수 있습니다.
다만, 파이썬에서 제공하는 기본함수에는 없고 math 라이브러리를 설치 및 Import 해줘야 합니다.
pip install math #math 라이브러리 설치
import math #math 라이브러리 가져오기
python 라이브러리 설치는 이전 포스팅에서 자세히 다루었습니다. 참조해 주세요.
다음은, 코딩입니다.
math.ceil(Number) # ceil 함수 예제
round함수에 비해, 숫자만 입력하게 됩니다. 그리고 결괏값 또한 정수형(Integer type)으로 반환됩니다.
사용법 또한 굉장히 간단합니다.
floor, trunc - 내림 기능
다음으로 내림 기능입니다.
엑셀에서는 'RoundDown' 함수로 구현하는 기능을 파이썬에서는,
- math.floor()
- math.trunc()
- int()
의 3가지 방법으로 구현 가능합니다.
(여기서 floor()와 trunc() 함수는 앞서 소개한 ceil()과 마찬가지로 math 라이브러리가 필요합니다.)
각각의 방법으로 양수의 실수형 데이터를 처리하면 동일한 결과를 얻을 수 있습니다.
하지만, 음의 실수형 데이터를 처리하면, 조금 다른 결괏값을 볼 수 있는데요.
같은 음수의 데이터를 내림하더라도,
- floor() 함수는 더 (-)가 되는 정수로
- trunc() 함수와 Int() 함수는 0에 가까운 정수로
변환되는데요.
Floor라는 뜻이 바닥인 만큼, 더 바닥인 쪽으로 간다.
라고 이해하시고 활용하시면 되겠습니다.
반면, trunc() 함수의 경우는 int() 함수와 동일한 기능을 수행하기 때문에 보통 int()를 더 자주 활용하는 편입니다. (함수명도 3글자라 math.trunc() 보다 더 짧습니다.)
정리하며,
오늘은, 데이터 처리를 하면서 자주 사용하게 되는 반올림, 올림, 내림 기능에 대해서 알아보았습니다. 엑셀의 그것에 익숙하신 분들이라면 생소한 함수 때문에 약간은 혼동스러울 수 있을 것이라 생각됩니다.
정리해 보자면 다음과 같겠네요.
기능 | method | 비고 |
반올림 | round(숫자, 자릿수) | 자릿수 지정시 실수형 반환, 자릿수 미지정시 정수형 반환 |
올림 | math.ceil(숫자) | 무전기 |
내림 | math.floor(숫자) math.trunc(숫자) int(숫자) |
음의 실수형 데이터 처리시, floor는 더 (-)의 방향의 정수로 trunc와 int는 0에 가까운 정수로 반환 |
자주 사용되는 기능인만큼 한 번쯤 정리하고 숙지할 필요가 있으실 것이라 생각됩니다.
참고하시어, 즐거운 데이터 생활 되시길 바랍니다.
* 본 포스팅에서 언급된 라이브러리, 단체는 필자와 무관함을 알립니다.
도움이 되셨다면, 왼쪽 아래 '💗' 클릭 부탁드립니다. 감사합니다.
'맨땅에 프로그래밍 > Python 복기장' 카테고리의 다른 글
Python으로 PDF 파일 암호 설정하기(feat. PyPDF) (0) | 2024.06.04 |
---|---|
Python으로 미국 현지 Summer time 확인 자동화 하기 (feat. pytz) (2) | 2024.04.15 |
List 자료형으로 Dataframe 만들기, 열(Columns) 복사하기, 열에 반복데이터 넣기 (0) | 2024.04.13 |
Dataframe에서 특정 조건을 만족하는 행만 추출하기(Feat. Pandas) (0) | 2024.04.04 |
Python으로 적정 원달러 환율 구하기(feat. 달러 투자 무작정 따라하기) (0) | 2024.03.27 |