#데이터 재구조화------ melt(), pivot_table(), stack(), unstack()


import seaborn as sns

df = sns.load_dataset('penguins')
print(df.head())
 
 
 
 

#melt():

id변수를 기준으로 원본 데이터프레임의 열 이름들을 variable 열에 넣고, 각 열에 있던 데이터는 value 열에 넣음.

 
print(df.melt(id_vars=['species', 'island', 'bill_length_mm']).head(10))
 
#id_vars에 입력한 열은 식별자 변수가 되고 나머지는 variable열에 하나씩 들어감.
 
 
 
 
 


#pivot_table():

인덱스, 칼럼, 밸류, aggfunc(데이터 집계 함수)를 입력해야 한다.

 
import seaborn as sns
df = sns.load_dataset('penguins')

df_pivot_1 = df.pivot_table(index='species',
                            columns='island',
                            values='bill_length_mm',
                            aggfunc=['mean', 'count']) #복수 조건은 리스트로 입력.
 

print(df_pivot_1) #펭귄 데이터의 species와 island별 bill_length의 평균값, 개체 수를 나타낸 표, 그 지역에 해당 종이 1마리도 안 살면 NaN으로 표시.

#인덱스, 칼럼, 밸류, aggfunc(데이터 집계 함수)는 각각 하나가 아닌 여러개를 입력할 수 있다.
 
 





#stack(): 열 인덱스를 행 인덱스로 바꿈.

#unstack(): 행 인덱스를 열 인덱스로 바꿈.


import seaborn as sns
df = sns.load_dataset('penguins')

df_pivot_4 = df.pivot_table(index=['species', 'sex'],
                            columns= 'island',
                            values='bill_length_mm',
                            aggfunc='mean')

print(df_pivot_4)
print(df_pivot_4.stack().to_frame()) #투프레임은 시리즈를 데이터프레임 형태로 변경하고 싶을 때 쓴다. 생략가능
print(df_pivot_4.unstack())  #행 인덱스인 female, male이 열 인덱스로 변경됨. species는 현재 기본인덱스라서 변경되지 않음.


+ Recent posts