데알못정을

Pivot table 형식 해제하여 데이터프레임으로 만들기 본문

Coding

Pivot table 형식 해제하여 데이터프레임으로 만들기

쩡을이 2023. 8. 23. 10:46
728x90

데이터 전처리를 수행하던 중에 피봇 테이블을 이용하여 label을 열 정보로 두고 그에 따른 값을 매핑할 필요가 있었다.

 

내가 하고 싶었던 것은 위 사진에서 보이는 데이터프레임의 label이라는 값을 column으로 변환하고, 그에 대응되는 값을 각각 매칭시키고 싶었고, subject_id, stay_id, charttime은 보존되어야 하기 때문에 multi index로 설정했다.

일단 관측치가 너무 많기 때문에 위 코드 처럼 chunk 단위로 데이터를 불러왔고

chunk 단위로 pivot 변환을 수행하였다. 그 결과는 아래와 같다.

Nan 값이 많은 이유는 데이터 특성이다.

참 난해했다. column을 보면 amount와 각 label 들이 multi index로 들어가있었고, index 자체도 multi index이기 때문에 이를 그대로 전처리 프로세스를 진행하기엔 무리가 있었다. 따라서 이를 우리가 아는 데이터프레임의 형태(column과 index가 single로 존재하는)로 바꾸어줘야 했다.

처음에 시도했던 방법은 얘를 csv로 저장한 다음에 엑셀 상에서 조작하는 방식이었다. 하지만 데이터셋 크기가 너무 크기 때문에 엑셀로 작업하고 저장하는 과정에서 일부 데이터가 소실되었다. ㅠ

여러 방법을 찾아보다가 이 방법이 가장 간편했다.

 이 코드를 그대로 실행하면 되는데

1번째 줄은 인덱스를 다시 설정하는 것이다. 이렇게 하면 multi index가 해제되고 원래 있던 각 인덱스는 column으로 들어간다.  

2번째 줄은 multi index로 되어 있는 column을 single index로 바꿔준다.

원래 pivot 형태의 column은 다음과 같이 multi index로 되어 있다.

2번째 줄 코드를 실행하면 amount와 column 명 사이의 공백이 없어진다.

3번째 줄 코드는 2번째 줄 코드의 결과로 파생된 amount+column명의 형식에서 amount라는 단어를 제거하는 코드다.   

이를 모두 실행하면 결론적으로 pivot 형태를 내가 원하는 데이터프레임 형태로 바꿀 수 있다.

 

 

728x90
Comments