엑셀 | R | python | 숫자를 회계에서 표현하는 형태로 바꾸기
Jan 17, 2022
회계에서는 숫자를 다음과 같이 독특하게 표현한다.1
-
모든 수에는 세 자리마다 , (Comma)를 찍어서 가독성을 높인다.
-
양수(+)는 그대로 쓰지만 음수는 마이너스(-) 부호를 숫자 앞에 쓰지 않고 숫자 앞과 뒤를 () 괄호로 묶어서 표현한다.
-
0은 0이라고 쓰지 않고 - 로 표시한다.
주석을 예로 들어보면 이렇게 표 안에 숫자를 쓴다.
과목 | 기초 | 취득 | 처분 | 상각 | 기말 |
---|---|---|---|---|---|
건물 | 100,000 | 30,000 | - | (20,000) | 110,000 |
이 숫자 표현을 엑셀에서는 쉽게 표현할 수 있는 방법이 있다. 셀서식(Ctrl + 1)의 사용자 지정으로 서식 지정을 하면 된다.
-
Ctrl + 1 단축키를 눌러 셀 서식 창을 연다.
-
표시형식 범주의 가장 하단의 “사용자 지정"을 선택한다.
-
다음 셀 서식을 입력하여 0이 아닌 경우 , (Comma)가 찍히고 음수는 숫자 앞에 - 표시가 나타나는 대신 () 괄호로 묶이고 0의 경우에는 - 로 표시되도록 설정한다.
#,##0;(#,##0);-
구글시트에서는 메뉴바에서 [서식 - 숫자 - 맞춤 숫자 형식] 을 선택하여 같은 서식을 입력하면 동일하게 작동한다.
그렇다면 R 에서는 어떻게 표현하면 좋을까?
숫자로 읽어들인 데이터를 코드를 사용하여 형태를 수정하여 구현하는 것은 어려울 수 있으므로 R에서 이렇게 숫자를 표현하고자 한다면 구글시트의 숫자를 읽어 오는 것으로 쉽게 구현할 수 있다.
구글시트에서 맞춤 숫자 형식으로 숫자 표현이 나타나게 하고 문자형으로 읽어들이면 똑같은 모양으로 읽어와서 숫자가 아닌 문자로 인식하게 된다. 구글시트를 R로 읽어 오기 위하여는 googlesheets4 패키지를 설치하면 read_sheet() 함수를 사용할 수 있다. 이 함수에 구글시트 공유 url과 시트이름 또는 시트 번호 등을 입력하여 구글시트의 데이터를 R로 읽어 올 수 있는데 이 때 col_types = ‘c’ 인수를 넣어 주면 구글시트에 보이는대로 문자형으로 읽어 올 수 있다.
read_sheet(
url(구글시트 url),
sheet = "시트이름",
col_types = 'c',
)
그렇다면 python(파이썬)에서는 어떻게 하면 좋을까? Pandas 모듈로 엑셀에서 숫자로 읽어 온 파이썬의 숫자형 데이터를 회계에서 사용하는 형태로 바꾸는 코드에 대하여 고민해 보았다.
context라는 이름의 value 값이 숫자로 이루어진 딕셔너리 객체가 있을 때 0보다 작은 경우 3자리마다 , (Comma)를 찍어 괄호로 묶고 0보다 큰 경우는 3자리마다 , (Comma)를 찍고 0 일 때는 - 로 변경하는 python code를 다음과 같이 쓸 수 있다.
for key in context:
if context[key] < 0:
context[key] = format(int(context[key]), ',d').replace('-','(') + ")"
elif context[key] > 0:
context[key] = format(int(context[key]), ',d')
else:
context[key] = '-'
-
궁금하지만 왜 그렇게 하는지 이유를 모르겠다. 아마도 예전부터 대세로 굳어져 내려오다가 한 가지 모습으로 점차 통일되어진 관행 같은 것이 아닐까 추측한다. ↩︎