Python의 Pandas는 Jupyter Notebook에서 출력되는 DataFrame을 꾸밀 수 있도록 styling 이라는 기능을 제공하고 있다. 엑셀의 셀 서식과 같이 값 표기를 조정하는 방법을 알아보자.
이번에는 엑셀의 셀 서식 설정처럼 값 표기를 수정해보도록 한다.
데이터 준비
먼저 다음과 같이 데이터를 준비한다.
1 2 3 4 5 6 7 8 9 10
| import pandas as pd import numpy as np
np.random.seed(123) df1 = pd.DataFrame(np.random.uniform(size = (3, 2)).round(4), columns = ["A", "B"]) df2 = pd.DataFrame(np.random.uniform(low = 2000, high = 20000, size = (3, 2)).astype("int"), columns = ["C", "D"]) df = pd.concat([df1, df2], axis = 1) df
|
|
A |
B |
C |
D |
0 |
0.6965 |
0.2861 |
19653 |
14326 |
1 |
0.2269 |
0.5513 |
10656 |
9058 |
2 |
0.7195 |
0.4231 |
8177 |
15122 |
다음과 같이 style accessor의 .format()
메서드를 사용하여 각 값의 앞뒤로 글자를 추가해보자.
1
| df.style.format("ㅎㅎㅎ{:}ㅋㅋㅋ")
|
|
A |
B |
C |
D |
0 |
ㅎㅎㅎ0.6965ㅋㅋㅋ |
ㅎㅎㅎ0.2861ㅋㅋㅋ |
ㅎㅎㅎ19653ㅋㅋㅋ |
ㅎㅎㅎ14326ㅋㅋㅋ |
1 |
ㅎㅎㅎ0.2269ㅋㅋㅋ |
ㅎㅎㅎ0.5513ㅋㅋㅋ |
ㅎㅎㅎ10656ㅋㅋㅋ |
ㅎㅎㅎ9058ㅋㅋㅋ |
2 |
ㅎㅎㅎ0.7195ㅋㅋㅋ |
ㅎㅎㅎ0.4231ㅋㅋㅋ |
ㅎㅎㅎ8177ㅋㅋㅋ |
ㅎㅎㅎ15122ㅋㅋㅋ |
이번엔 좀 더 멀쩡한 형식으로 바꿔보자. 딕셔너리를 활용하여 A와 C변수에만 양식을 지정한 결과는 다음과 같다.
1
| df.style.format(dict(A = "정확도: {:.3%}", C = "{:}점"))
|
|
A |
B |
C |
D |
0 |
정확도: 69.650% |
0.286100 |
19653점 |
14326 |
1 |
정확도: 22.690% |
0.551300 |
10656점 |
9058 |
2 |
정확도: 71.950% |
0.423100 |
8177점 |
15122 |
백분율 표기와 더불어 화폐 표기법을 적용한 결과는 다음과 같다.
1 2
| style_dict = dict(A = "{:.2}%", B = "{:.2}%", C = "{:,}원", D = "{:,}$") df.style.format(style_dict)
|
|
A |
B |
C |
D |
0 |
0.7% |
0.29% |
19,653원 |
14,326$ |
1 |
0.23% |
0.55% |
10,656원 |
9,058$ |
2 |
0.72% |
0.42% |
8,177원 |
15,122$ |
<Python Pandas Styling 시리즈>
Python Pandas Styling - 01
Python Pandas Styling - 02
Python Pandas Styling - 03
Python Pandas Styling - 04