파이썬 판다스 melt() 사용법, pd.melt()
사전 정의에 따르면 녹다, 누그러뜨리다 라는 의미를 갖는 이 메소드
과연 무엇인지 살펴봅시다.
그림으로 봐서는 대충 무슨 의미인지 알겠습니다. 그러나 헷갈린건 안비밀
사실 처음봤을때는 녹는다기보다 오히려 굳은 느낌인데? 라는 생각이 들었지만,
컬럼을 녹여서 행으로 보낸다 라는 뉘앙스로 이해하면 될 것 같습니다.
코드로 바로 가봅시다
판다스 라이브러리를 호출하고 데이터 프레임을 만듭니다.
import pandas as pd
df = pd.DataFrame({'A' : ['a1', 'a2', 'a3', 'a4'],
'B' : ['b1', 'b2', 'b3', 'b4'],
'C' : [1, 2, 3, 4],
'D' : [100, 200, 300, 400]})
위의 그림에서와 같이 A를 기준으로 B를 행으로 녹여보려 합니다. (가장 단순한 melt)
df.melt(id_vars='A', value_vars='B')
왜 메소드가 melt인지 이제야 알 것 같습니다.
컬럼에 있던 B가 행으로 주루루루룩 녹아서 해당 값이 인덱스별로 추출하기에 뭔가 용이하도록 전처리가 가능해졌습니다.
여기서 결국 중요한 메소드는 id_vars, value_vars 입니다.
id_vars는 기준이 되는 컬럼을 지정하는 것이고,
value_vars는 녹여서 값과 같이 행으로 들어갈 컬럼을 의미합니다.
그러면 melt한 상태의 컬럼명을 바꾸고자 한다면 컬럼인덱스를 다시 설정해줘야 하는 것일까요?
melt() 파라미터에 컬럼명을 바꾸는 기능이 있습니다.
위에서 df.melt()의 결과 프레임을 보시면 컬럼에 variable과 value가 생긴 것을 보실 수 있을겁니다.
해당 컬럼명은 var_name, value_name 인자를 반환하여 바꿀 수 있습니다.
df.melt(id_vars='A', value_vars='B',
var_name='이곳', value_name='저곳')
감이 오시나요?
추가적으로 파라미터를 리스트 형태로 반환할 수 있다는 점!
id_vars, value_vars의 경우 리스트로 반환할 수 있습니다.
계속 보다보니 id_vars가 반복되는 경우가 생기는군요.
id_vars, value_vars가 2개씩이라면 어떻게 반복될까요?
생각해보세요!!
요약하자면
id_vars는 변하지 않는 컬럼이다. (기준 컬럼)
다만, value_vars가 리스트 형태처럼 2개 이상으로 필요로 할때는
id_vars는 반복될 수 있다. (melt되는 컬럼들 숫자가 늘어날수록 기준점은 그만큼 반복을 할당해줘야 되는 것)
value_vars의 리스트 인자만큼 id_vars들이 반복된다.
value_vars는 결국 녹여지는 주인공 컬럼이다.
이 컬럼은 행으로 녹아져 내려오고 그 옆에 해당 컬럼에 있던 값들이 매칭되서 적혀진다.
녹여진 컬럼과 그 컬럼의 값들은 variable, value로 새롭게 나타난다.
또한 이 새로운 컬럼들의 이름도 melt()자체에서 바꿀 수 있다.