Pandas에서는 특정 열을 범주화하는 방식으로 데이터를 손쉽게 재구성(reshape)할 수 있습니다. 이번 글에서는 "Result" 열에 있는 Pass(합격)와 Fail(불합격) 값을 숫자 형태로 변환하는 방법을 단계별로 살펴보겠습니다.
1. 필요한 라이브러리 가져오기
먼저 pandas 라이브러리를 임포트합니다.
import pandas as pd
2. DataFrame 생성하기
학생 이름과 시험 결과를 담은 두 개의 열(Student, Result)로 구성된 DataFrame을 생성합니다.
dataFrame = pd.DataFrame(
{
"Student": ['Jack', 'Robin', 'Ted', 'Scarlett', 'Kat'],
"Result": ['Pass', 'Fail', 'Fail', 'Pass', 'Pass']
}
)
3. map() 함수로 데이터 재구성하기
map() 함수를 사용하면 문자열 값을 간단하게 숫자로 변환할 수 있습니다. 여기서는 'Pass'를 1로, 'Fail'을 0으로 매핑합니다.
dataFrame['Result'] = dataFrame['Result'].map({'Pass': 1, 'Fail': 0})
전체 예제 코드
지금까지의 내용을 하나로 합친 전체 코드는 다음과 같습니다.
import pandas as pd
# DataFrame 생성
dataFrame = pd.DataFrame(
{
"Student": ['Jack', 'Robin', 'Ted', 'Scarlett', 'Kat'],
"Result": ['Pass', 'Fail', 'Fail', 'Pass', 'Pass']
}
)
print("DataFrame ...\n", dataFrame)
# 숫자 형태로 재구성
dataFrame['Result'] = dataFrame['Result'].map({'Pass': 1, 'Fail': 0})
print("\nReshaped DataFrame ...\n", dataFrame)
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
DataFrame ...
Result Student
0 Pass Jack
1 Fail Robin
2 Fail Ted
3 Pass Scarlett
4 Pass Kat
Reshaped DataFrame ...
Result Student
0 1 Jack
1 0 Robin
2 0 Ted
3 1 Scarlett
4 1 Kat
map() 함수 활용 시 참고 사항
pandas의 map() 함수는 Series의 각 요소에 딕셔너리 또는 함수를 적용해 새로운 값으로 변환해 줍니다. 딕셔너리를 전달하면 해당 키와 일치하는 값이 지정한 값으로 치환되며, 딕셔너리에 없는 값은 NaN으로 처리됩니다. 따라서 변환 전에 열에 어떤 고유값들이 존재하는지 unique() 메서드 등으로 미리 확인해 두는 것이 안전합니다.