2015년 11월 28일 토요일

판다스 새로운 기능, 스타일(Style), 리뷰하기

2015년 11월 21일 배포된 0.17.1 버전의 새롭게 추가된 기능인 스타일(Style)의 기능을 알아본다.
스타일은 테이블과 플롯의 장점을 잘 버무려 준다.

본문은 스타일에 대한 직관적인 사용 예제를 다룬다.

먼저 샘플 데이터 셋을 만들었다.

from sklearn import datasets
import pandas as pd
iris = datasets.load_iris()
df = pd.DataFrame(iris.data,columns=iris.feature_names).head(6)
df.columns = ['SepalL','SepalW','PetalL','PetalW']
* 단순히 기능 테스트를 위한 데이터를 추렸다.
SepalLSepalWPetalLPetalW
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
55.43.91.70.4


다양한 스타일을 적용하는 예제이다.

수치의 크기를 색상 온도로 보는 것

df.style.background_gradient(cmap='magma', low=1)
* cmap은 colormap의 약자이고, 색상을 정의한다.
SepalLSepalWPetalLPetalW
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
55.43.91.70.4

수치를 막대기둥 형태로 보는 것

df.style.bar(subset=['SepalL','PetalL'], color='#d65f5f')
* subset을 통해서 대상 속성들을 선택한다.
SepalLSepalWPetalLPetalW
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
55.43.91.70.4

요소(elements) 단위로 분류하는 것

df.style.applymap(lambda i: 'background-color: red' if i > 3 else '')
* 테이블의 전체 요소마다 함수가 적용된다.
SepalLSepalWPetalLPetalW
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
55.43.91.70.4

컬럼(columns)이나 로우(row) 단위로 분류하는 것

yes = 'background-color: green'
no = 'background-color: orange'
df.style.apply(lambda L: [ yes if i*10 % 2 == 0 else no for i in L ], axis=0)
* 축(axis)에 따라 List 단위로 입력되는 것에 유의하자.
SepalLSepalWPetalLPetalW
05.13.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2
55.43.91.70.4



상세한 내용은 원문을 참고하자.
http://pandas.pydata.org/pandas-docs/version/0.17.1/whatsnew.html

0 개의 댓글:

댓글 쓰기