data.frame melt 시키기

테이블의 컬럼들을 한 컬럼으로 내리고 값을 따로 빼는 것을 melt(melting)라고 합니다.그 반대로 값을 컬럼으로 올리는  작업을 cast (casting)라고 합니다.
이런 것을 엑셀이나 DB에서는 pivot(pivoting 추축) 이라고도 하고 또 transform이라고도 말합니다.

R과 python에서 melt하는 간단한 코드 스니펫을 올립니다.  Google에 검색을 하면 다 나오는 것이지만 순전히 제 편의를 위해서 올려둡니다.

R은 특히 ggplot2를 사용할 때 facet을 쓰려면 melt된 상태여야 하는 것이 있어서 연습이 필요합니다만 늘 까먹습니다. (전 바보인가봐요)

R코드입니다.
다른 방법도 많지만 R은 reshape2 패키지를 쓰는 것이 편합니다.

# install.packages("reshape2")
library(reshape2)  # 해들리 만세
iris  # 이렇게 생겼어요
iris.molten <- melt(iris, id.vars=c("Species"))  # Species 는 놔두고 모두 멜트
iris.molten  # melt한 data.frame

python코드입니다.
python은 당연히 Pandas에 melt 함수가 있습니다.

from sklearn import datasets  # iris data 때문에 로딩했어요
import pandas as pd  # 팬더스
import numpy as np  # 데이터 변환을 하는데 numpy가 필요할 뿐이었어요
iris = datasets.load_iris()  # 예제를 위해서 iris가 필요할 뿐
print(iris) # 이렇게 생겼는데
iris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names) # 일단 iris가 dataframe이 아니어서 바꿈
print(pd.melt(iris_df))  # 이렇게 바뀝니다

 

Author: 떰학

답글 남기기