#Pivot #Melt #Polars
Pivot <> Melt.
pivot 을 데이터 프레임의 한 열의 값을 새로운 열로 만드는 함수.
예를 들어,
import polars as pl
import numpy as np
data = {
"name": ["Alice", "Bob", "David", "Alice", "Bob", "Alice", "Bob", "David"],
"year": [2020, 2020, 2023, 2021,2022, 2021, 2022, 2022],
"value": [10, 20, 15, 25, 30, 35, 20, 35]
}
df = pl.DataFrame(data)
이런 데이터가 만들어 졌을 때,
year 컬럼의 값들을 새로운 컬럼으로 만들 수 있는다.
pivot_df = df.pivot(
values="value",
index="name",
columns="year",
aggregate_function="max",
maintain_order=True,
sort_columns=True,
)
위와 같은 결과로 만든 다음에 간단하게 null 처리를 해주면 pivot 은 끝이다.
pivot_df = pivot_df.fill_null(np.NaN)
이제 melt 를 이용해서 undo 시켜보면,
value_vars = [i for i in pivot_df.columns if i != 'name']
melted_df = pivot_df.melt(
id_vars="name",
value_vars=value_vars,
variable_name="year",
value_name="value"
)
year, value 컬럼 타입만 간단하게 변경해주면 끝이다.
melted_df = melted_df.with_columns([
pl.col("year").cast(pl.Int64),
pl.col("value").cast(pl.Int64),
])
pivot(), melt() 를 사용해야할 시나리오 몇가지만 기억해두면 될 것 같다.