[Pandas 기초] 행과 열 변환하기 | 재구조화 melt(), pivot()

soyyeong·2023년 2월 21일
0
post-thumbnail

1. 데이터 재구조화 melt()

열을 행으로 이동시키고 싶을 때 melt()를 사용한다.

기본구조
pd.melt(df, id_var=['A'], value_vars=['B'])

이렇게 생긴 데이터 프레임이 있을 때, 아래 그림처럼 열을 녹여서 행을 보내는 것을 의미한다.


1-1) 모든 열을 행으로 이동시키기

pd.melt(df)

다음과 같이 열 이름인 A, B, C가 variable이라는 열의 데이터로 들어가고, 원래 행들은 value라는 열 데이터로 들어간다.


1-2) 원하는 열을 행으로 이동시키기

이번에는 이 데이터프레임의 A열은 그대로 두고, B열만 행으로 이동시켜보자.
pd.melt(df, id_vars=['A'], value_vars=['B']) # A열만 그대로, B열은 행으로 이동

또, A열만 그대로, B열과 C열은 행으로 이동시켜보자.

pd.melt(df, id_vars=['A'], value_vars=['B','C'])

2. 데이터 재구조화 pivot()

여러 분류로 섞인 행 데이터를 열 데이터로 회전시키는 것을 Pivot(피봇)이라고 한다.

기본구조
df.pivot(index='', columns='', values='')

'date'열을 새로운 인덱스로 만들고, 'typecode'열 데이터는 새로운 열로 만들며, 'volume'열이 그 안의 데이터가 되도록 설정한다.

df.pivot(index='date', columns='typecode', values='volume')

3. 원래 데이터 형태로 되돌리기

인덱스 리셋 reset_index()

인덱스가 date로 설정되어 있는데, 이것을 삭제해보자.

df_origin = df_pivot.reset_index() # 인덱스를 리셋한다.

인덱스 열 이름 초기화 df.columns.name = None

열 이름이 typecode로 되어 있는 것을 삭제해보자.

df_origin.columns.name = None

Reference

profile
블로그 이전 중입니다 : https://soyeong-blog.netlify.app/

0개의 댓글