Pandas(판다스) 데이터프레임은 행과 열로 이루어진 테이블 형태의 자료구조입니다. 데이터를 정리하다 보면 특정 열에 들어 있는 문자열 값들의 첫 글자를 대문자로 바꿔야 하는 경우가 종종 있습니다. 예를 들어 요일이나 이름처럼 고유명사 성격의 데이터는 첫 글자가 대문자여야 가독성이 좋아지죠. 이번 글에서는 str.capitalize() 함수를 활용해 이 작업을 손쉽게 처리하는 방법을 알아보겠습니다.
데이터프레임 생성하기
먼저 실습에 사용할 데이터프레임을 만들어 보겠습니다. 아래 예제에서는 'Day'와 'Subject'라는 두 개의 열을 가진 간단한 데이터프레임을 생성합니다.
예제 코드
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'Day': ['mon', 'tue', 'wed', 'thu', 'fri'], 'Subject': ['Math', 'english', 'science', 'music', 'games']})
print(df)실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Day Subject 0 mon Math 1 tue english 2 wed science 3 thu music 4 fri games
capitalize() 함수 적용하기
이제 str.capitalize() 함수를 'Day' 열에 적용해 보겠습니다. 이 함수는 각 문자열의 첫 글자만 대문자로 변환하고 나머지 글자는 소문자로 유지해 줍니다.
예제 코드
import pandas as pd
# 데이터프레임 생성
df = pd.DataFrame({'Day': ['mon', 'tue', 'wed', 'thu', 'fri'], 'Subject': ['Math', 'english', 'science', 'music', 'games']})
# Day 열의 첫 글자를 대문자로 변환
df['Day'] = df['Day'].str.capitalize()
print(df)실행 결과
위 코드를 실행하면 'Day' 열의 모든 요일 이름이 첫 글자만 대문자로 변경된 것을 확인할 수 있습니다.
Day Subject 0 Mon Math 1 Tue english 2 Wed science 3 Thu music 4 Fri games
참고: 다른 변환 방법들
상황에 따라 capitalize() 외에도 다양한 문자열 함수를 활용할 수 있습니다.
- str.title(): 각 단어의 첫 글자를 모두 대문자로 변환합니다. 예를 들어 'new york' → 'New York'처럼 여러 단어로 된 값에 유용합니다.
- str.upper() / str.lower(): 문자열 전체를 대문자 또는 소문자로 일괄 변환합니다.
- apply() 함수:
df['Day'].apply(lambda x: x.capitalize())처럼 람다 함수와 함께 사용하면 더 복잡한 사용자 지정 변환도 가능합니다.
이처럼 Pandas의 벡터화된 문자열 연산(.str 접근자)을 활용하면 반복문 없이도 데이터프레임 전체 열을 빠르고 효율적으로 처리할 수 있습니다.