Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

판다스(Pandas) 데이터프레임 열에 대문자 적용하기

개요

데이터 분석을 하다 보면 데이터프레임의 문자열 값을 모두 대문자로 변환해야 하는 경우가 자주 발생합니다. 판다스(Pandas)에서는 str.upper() 메서드나 apply() 함수를 활용해 이 작업을 손쉽게 처리할 수 있습니다. 이 글에서는 두 가지 방법을 예제 코드와 함께 살펴보겠습니다.

방법 1: str.upper() 사용

.str.upper()는 시리즈(Series)의 모든 문자열 요소를 대문자로 변환하는 벡터화된 메서드입니다. 문법이 간결하고 가독성이 뛰어나 단순 대소문자 변환에 가장 널리 쓰이는 방식입니다. 아래 예제에서 '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.upper()
print(df)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

     Day    Subject
0    MON       Math
1    TUE    english
2    WED    science
3    THU      music
4    FRI      games

'mon', 'tue' 등 소문자였던 요일 값이 MON, TUE처럼 모두 대문자로 바뀐 것을 확인할 수 있습니다.

방법 2: apply()와 람다(lambda) 함수 사용

apply() 함수에 람다 식을 전달하여 각 요소에 개별적으로 upper()를 적용할 수도 있습니다. 이 방식은 단순 변환을 넘어 조건 분기나 복잡한 문자열 처리 로직이 필요할 때 특히 유용합니다.

# 데이터프레임 생성
df = pd.DataFrame({'Day': ['mon', 'tue', 'wed', 'thu', 'fri'],
                   'Subject': ['Math', 'english', 'science', 'music', 'games']})

# 'Subject' 열의 각 값에 upper() 적용
df1 = df['Subject'].apply(lambda x: x.upper())
print(df1)

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

0        MATH
1    ENGLISH
2    SCIENCE
3      MUSIC
4      GAMES
Name: Subject, dtype: object

두 방법의 차이점과 선택 기준

두 방법 모두 동일한 결과를 얻을 수 있지만, 상황에 따라 적합한 도구가 다릅니다.

  • str.upper(): 단순 대소문자 변환에 최적화되어 있으며, 내부적으로 벡터화 연산을 수행하므로 대용량 데이터에서도 성능이 우수합니다.
  • apply() + lambda: 각 요소에 임의의 함수를 적용할 수 있어, 여러 조건을 결합하거나 복잡한 전처리 로직이 필요한 경우에 적합합니다.

따라서 단순히 대문자로 변환하는 작업이라면 str.upper()를, 그 이상의 커스텀 로직이 필요하다면 apply()를 사용하는 것이 좋습니다.