Example Code
import pandas as pd
data = {'종가': {0: 1000, 1: 1200, 2: 1300, 3: 1100},
'등락률': {0: 0.1, 1: 0.2, 2: 0.0833, 3: -0.1538}}
df = pd.DataFrame(data)
df
df :
Problem
아래 그림처럼 위 데이터 프레임에서 등락률을 소수점 아래 두자리만 표기하는 %로 나타내고자 한다 어떻게 해야 할까?
해결방법1
등락률의 데이터를 100을 곱한 뒤 : mul(100)
소수점 셋째 자리에서 반올림을 하고 : round(2)
문자열로 바꾸고 : astype('str')
%를 붙여주면 된다.
df['등락률'].mul(100).round(2).astype('str') + '%'
0 10.0%
1 20.0%
2 8.33%
3 -15.38%
Name: 등락률, dtype: object
해결방법2
연속적인 함수 사용이 싫다면 apply나 map을 이용해 lambda 함수를 적용해도 된다.
df['등락률'].map('{:.2%}'.format)
결과는 위와 같다. 소수점 세번째까지 표현하고 싶다면 .2%부분을 .3%로 수정하면 된다
어느 방법이든 위 결과인 시리즈로 등락률 열을 수정해주면 된다.
다만 이렇게 데이터를 바꿔도 되겠지만 가능하지만, 원본 데이터를 바꾼다는 것이 탐탁치 않다
해결방법3
display style을 바꾸어 데이터는 그대로 두면서, 출력만 %로 표기되는 것으로 바꿀 수도 있다
df.style.format({'등락률':'{:.2%}'.format})
수정하고 싶은 열의 이름과 소수점표현 format을 딕셔너리로 넣으면 된다
마찬가지로 소수점 세번째까지 표현하고 싶다면 .2%부분을 .3%로 수정하면 된다
교보문고 구매 페이지, 알라딘 구매 페이지, yes24 구매 페이지
'판다스 > 판다스 팁' 카테고리의 다른 글
[pandas] 그룹별로 가장 가까운 값을 기준으로 NaN을 채우기 (0) | 2023.05.27 |
---|---|
[pandas] 데이터 프레임에서 큰 숫자를 가독성 좋게 표기하기 (0) | 2023.05.26 |
[pandas] 주피터 노트북에서 여러개의 데이터 프레임을 가로로 출력하기 (0) | 2023.05.26 |
[pandas] 구글 코랩과 주피터 노트북 비교 : 파일에서 데이터 프레임을 불러오는 방식의 차이 (0) | 2023.05.25 |
[pandas] 데이터 프레임 2개를 concat할 때 열을 교대로 concat하는 방법 (0) | 2023.05.04 |