explode 함수
explode 함수는 리스트 형식의 데이터가 포함된 컬럼을 "폭발"시켜(long format으로 변환) 각 요소를 별도의 행으로 분리합니다.
시그니처
DataFrame.explode(column: str) -> DataFrame
column: 폭발시킬 컬럼의 이름을 지정합니다.
예제
import pandas as pd
data = {'id': [1, 2, 3],
'items': [['item1', 'item2'], ['item3', 'item4'], ['item5', 'item6', 'item7']]}
df = pd.DataFrame(data)
df_long = df.explode('items')
melt 함수
melt 함수는 여러 컬럼을 long format으로 변환하여 열(column)을 행(row)으로 변환합니다.
시그니처
DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value') -> DataFrame
id_vars: 고정할 컬럼(들)의 이름 또는 인덱스를 지정합니다.
value_vars: long format으로 변환할 컬럼(들)의 이름 또는 인덱스를 지정합니다.
var_name: 변환된 변수 열의 이름을 지정합니다. 기본값은 'variable'입니다.
value_name: 변환된 값 열의 이름을 지정합니다. 기본값은 'value'입니다.
예제
import pandas as pd
data = {'id': [1, 2, 3],
'value1': [10, 20, 30],
'value2': [100, 200, 300]}
df = pd.DataFrame(data)
df_long = df.melt(id_vars='id', value_vars=['value1', 'value2'], var_name='variable', value_name='value')
explode와 melt 함수는 각각 리스트 형식의 데이터와 여러 컬럼을 long format으로 변환하는데 사용되며, 데이터의 구조에 따라 적절한 함수를 선택하여 사용하시면 됩니다.
wide format 형식 -> long format으로 변환
Pandas에서 wide format 형식의 데이터를 long format으로 변환하는 데에는 explode 함수와 melt 함수를 사용할 수 있습니다. 각각의 경우에 대해 설명해보겠습니다.
하나의 컬럼에 스트링 리스트 형식의 데이터
이 경우, 데이터가 하나의 컬럼에 스트링 리스트 형식으로 저장되어 있습니다. explode 함수를 사용하여 이를 long format으로 변환할 수 있습니다.
예를 들어, 아래와 같은 wide format의 데이터프레임이 있다고 가정해보겠습니다
import pandas as pd
data = {'id': [1, 2, 3],
'items': [['item1', 'item2'], ['item3', 'item4'], ['item5', 'item6', 'item7']]}
df = pd.DataFrame(data)
print(df)
위 데이터프레임을 long format으로 변환하려면 다음과 같이 explode 함수를 사용합니다
df_long = df.explode('items')
print(df_long)
결과는 다음과 같이 각 아이템이 별도의 행으로 분리된 long format의 데이터프레임이 됩니다
id items
0 1 item1
0 1 item2
1 2 item3
1 2 item4
2 3 item5
2 3 item6
2 3 item7
여러 컬럼에 각각의 데이터
이 경우, 여러 컬럼에 각각의 데이터가 저장되어 있습니다. melt 함수를 사용하여 이를 long format으로 변환할 수 있습니다.
예를 들어, 아래와 같은 wide format의 데이터프레임이 있다고 가정해보겠습니다
data = {'id': [1, 2, 3],
'value1': [10, 20, 30],
'value2': [100, 200, 300]}
df = pd.DataFrame(data)
print(df)
위 데이터프레임을 long format으로 변환하려면 다음과 같이 melt 함수를 사용합니다
df_long = df.melt(id_vars='id', value_vars=['value1', 'value2'], var_name='variable', value_name='value')
print(df_long)
결과는 다음과 같이 각 변수와 값을 나타내는 long format의 데이터프레임이 됩니다
id variable value
0 1 value1 10
1 2 value1 20
2 3 value1 30
3 1 value2 100
4 2 value2 200
5 3 value2 300
위 예시들을 참고하여, 각각의 경우에 explode 함수와 melt 함수를 사용하여 wide format 데이터를 long format으로 변환할 수 있습니다.
해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.
'Big Data > DataAnalysis & Manipulate' 카테고리의 다른 글
Pandas에서 결측값을 다루기 위한 여러 함수 (0) | 2023.08.11 |
---|---|
DataFrame 열 위치 변경 (0) | 2023.08.11 |
pandas series.str (0) | 2023.08.11 |
pandas 선택함수 (0) | 2023.08.11 |
DataFrame groupby() (0) | 2023.08.11 |