[python] Stack/Unstack, Pivot, Melt

인덱스·2023년 4월 9일
0

[금융 데이터 분석을 위한 파이썬 판다스]의 내용을 참고합니다.

Stack/Unstack

  • stack : 컬럼 → 인덱스
  • unstack : 인덱스 → 컬럼
data = [
	[1000, 900, 800, 700],
    [1200, 1400, 900, 800],
    ]
    
level_0 = ['영업이익', '당기순이익']
level_1 = ['컨센서스', '잠정치']
columns = pd.MultiIndex.form_d=product([level_0, level_1])

df = DataFrame(data=data, index=["2020/06", "2020/09"], columns=columns)
print(df.stack())
  • 기본적으로 높은 레벨(level)의 컬럼이 인덱스로 변경되지만 다음과 같이 옵션을 사용해서 특정 컬럼을 인덱스로 변경 가능
print(df.stack(level=0))
  • 컬럼이 존재한다면 반복해서 stack 메서드 호출 가능
    ex. 2차원 컬럼을 가진 원본 데이터프레임에 stack 메서드를 두 번 사용하면 모든 컬럼이 인덱스로 이동
print(df.stack().stack())

Pivot

  • 인덱스와 컬럼 및 데이터를 지정해서 새로운 데이터프레임 생성
  • 데이터를 재구조화함으로써 다양한 측면에서 분석 가능
from pandas import DataFrame
import pandas as pd

data = [
	["2020-08-12", "삼성전자", 77000],
    ["2021-08-13", "삼성전자", 74400],
    ["2021-08-12", "LG전자", 153000],
    ["2021-08-13", "LG전자", 150500],
    ["2021-08-12", "SK하이닉스", 100500],
    ["2021-08-13", "SK하이닉스", 101500]
    ]
 
 columns = ["날짜", "종목명", "종가"]
 df=DataFrame(data=data, columns=columns)
 print(df)
  • pandas의 pivot 함수는 data, index, columns, values 파라미터를 입력
pd.pivot(data=df, index="날짜", columns="종목명", values="종가")

Melt

  • 컬럼의 수가 많아서 넓은 와이드 포맷의 데이터프레임을 세로로 긴 롱 포맷의 데이터프레임으로 재구조화
from pandas import DataFrame

data = [
	["005930", "삼성전자", 75800, 7600, 74100, 74400],
	["035720", "카카오", 147500, 147500, 144500, 14600],
    ["00660", "SK하이닉스", 99600, 101500, 98900, 101500]
   ]
   
columns = ["종목코드", "종목명", "시가", "고가", "저가", "종가"]
df = DataFrame(data=data, columns=columns)
  • 데이터프레임의 melt 메서드를 호출하면 모든 컬럼과 연관된 값이 variable과 value 컬럼으로 재구성
  • stack 메서드를 호출하고 인덱스를 rest한 것과 비슷한 결과
  • id_vars 파라미터를 사용해서 melt하지 않을 컬럼의 이름을 리스트로 지정 가능
  • 다음은 종목명과 종목코드를 제외하고 나머지 데이터를 melt
dt.melt(id_vars=['종목코드', '종목명'])
  • 특정 컬럼을 슬라이싱한 뒤 melt 메서드 적용 가능
  • id_vars와 유사하게 리스트로 컬럼의 이름을 전달하는 value_vars 사용
df.melt(value_vars='시가', '종가'])

회사에서 파이썬을 사용하지 않고 원시적인 방법으로 데이터를 모으고 있다 보니
계속 공부해야 한다는 생각을 가지고는 있었는데 이런저런 핑계로 못하고 있었다.
이렇게라도 안 하면 다시 시작도 안할 것 같아서 이전에 공부하던 책으로 다시 시작했는데
이해하는 속도가 너무 느리고 답답해서 충격적이다.
파이썬은 조금씩이라도 계속 혼자 공부해왔어서 이번에도 다시 시작하면 금방 따라가겠거니 했는데
헤매고 있는 나..
회사 적응은 이제 핑계가 될 수 없고 파이썬 공부를 미룰 수도 없다.
목표는 어떻게든 매일매일 파이썬 공부하기!
올해 안에 자유자재로 파이썬을 활용하는 것이 목표다.

profile
헤맨 만큼 내 땅이 된다

0개의 댓글