본문 바로가기
카테고리 없음

Pandas 모듈 활용하기 - 데이터프레임에 함수 적용하는 5가지 방법

by excel-master 2025. 4. 4.
반응형
```html Pandas 모듈 활용하기 - 데이터프레임에 함수 적용하는 5가지 방법

Pandas는 데이터 분석을 위한 강력한 파이썬 라이브러리로, 데이터프레임에 다양한 함수를 적용할 수 있는 기능을 제공합니다. 데이터프레임은 행과 열로 구성된 2차원 데이터 구조로, applymap 메소드를 통해 데이터를 효율적으로 처리할 수 있습니다. 이 글에서는 데이터프레임에 함수를 적용하는 5가지 방법을 소개하고, 실용적인 팁과 사례를 통해 활용 방법을 알아보겠습니다.

1. apply 메소드

apply 메소드는 데이터프레임의 행 또는 열에 함수를 적용할 때 사용됩니다. 이 메소드는 함수를 각 행 또는 열에 적용하고, 결과를 반환하는데 유용합니다. 예를 들어, 특정 열의 값에 대해 계산을 수행할 수 있습니다.

예제: apply 메소드 사용하기

다음은 apply 메소드를 사용하여 데이터프레임의 특정 열에 함수를 적용하는 예제입니다.

이름 점수
홍길동 85
김철수 92
이영희 78

위의 데이터프레임에서 점수에 10%의 가산점을 추가하는 함수를 적용해 봅시다:


import pandas as pd

# 데이터프레임 생성
data = {'이름': ['홍길동', '김철수', '이영희'], '점수': [85, 92, 78]}
df = pd.DataFrame(data)

# 가산점 추가 함수 정의
def add_bonus(score):
    return score * 1.1

# apply 메소드 사용
df['점수_가산'] = df['점수'].apply(add_bonus)
print(df)
    

이 코드를 실행하면, 점수에 10%의 가산점이 추가된 새로운 열이 생성됩니다.

2. map 메소드

map 메소드는 시리즈에 함수를 적용할 때 사용됩니다. 주로 시리즈의 각 요소를 변환하는 데 유용합니다. apply와 비슷하지만, map은 더 간단한 변환에 적합합니다.

예제: map 메소드 사용하기

아래는 map 메소드를 사용하여 데이터프레임의 특정 열의 값을 변환하는 예제입니다.

이름 성별
홍길동
김철수
이영희

성별을 '남성', '여성'으로 변환하는 함수를 적용해 봅시다:


# 성별 변환 함수 정의
def convert_gender(gender):
    return '남성' if gender == '남' else '여성'

# map 메소드 사용
df['성별_변환'] = df['성별'].map(convert_gender)
print(df)
    

위 코드를 실행하면, 성별이 '남성'과 '여성'으로 변환된 새로운 열이 생성됩니다.

3. lambda 함수와 함께 사용하기

applymap 메소드는 lambda 함수와 함께 사용하여 더욱 간결한 코드를 작성할 수 있습니다. lambda 함수를 사용하면 한 줄로 간단한 함수를 정의할 수 있습니다.

예제: lambda 함수 사용하기

아래는 apply 메소드와 lambda 함수를 사용하여 점수에 대한 변환을 수행하는 예제입니다.

이름 원본 점수 변환 점수
홍길동 85
김철수 92
이영희 78

다음 코드를 실행하여 원본 점수에 5점을 추가해 보겠습니다:


# 원본 점수에 5점을 추가하는 lambda 함수 사용
df['변환_점수'] = df['점수'].apply(lambda x: x + 5)
print(df)
    

이 코드를 실행하면, 변환된 점수가 새로운 열로 추가됩니다.

4. 여러 개의 열에 적용하기

때때로 여러 개의 열에 동시에 함수를 적용해야 할 필요가 있습니다. 이 경우 apply 메소드의 axis 파라미터를 설정하여 행 또는 열 단위로 함수를 적용할 수 있습니다.

예제: 여러 개의 열에 apply 사용하기

아래는 두 개의 열의 점수를 합산하여 평균 점수를 계산하는 예제입니다.

이름 수학 점수 과학 점수 평균 점수
홍길동 85 78
김철수 92 88
이영희 78 82

다음 코드를 실행하여 평균 점수를 계산해 보겠습니다:


# 평균 점수를 계산하는 함수 정의
def calculate_average(row):
    return (row['수학 점수'] + row['과학 점수']) / 2

# apply 메소드 사용
df['평균 점수'] = df.apply(calculate_average, axis=1)
print(df)
    

위 코드를 실행하면, 각 학생의 평균 점수가 새로운 열로 추가됩니다.

5. 실용적인 팁

팁 1: 벡터화된 연산 사용하기

Pandas의 메소드는 벡터화된 연산을 지원하므로, 데이터프레임의 특정 열에 직접적으로 연산을 수행할 수 있습니다. 예를 들어, df['점수'] + 10와 같이 사용할 수 있습니다. 이는 applymap 메소드보다 훨씬 빠르고 효율적인 방법입니다.

팁 2: 여러 함수를 조합하여 사용하기

여러 개의 apply 또는 map 메소드를 조합하여 사용할 수 있습니다. 예를 들어, 먼저 map을 사용하여 데이터를 변환한 후, apply를 사용하여 특정 계산을 수행하는 방식입니다. 이 방법은 복잡한 데이터 처리에 유용합니다.

팁 3: 성능 최적화 고려하기

대량의 데이터를 처리할 때는 성능이 중요합니다. 가능한 경우, apply 대신 벡터화된 연산을 사용하고, numba 같은 라이브러리를 활용하여 성능을 최적화할 수 있습니다.

팁 4: 함수의 인라인 정의 사용하기

함수를 따로 정의하지 않고도 lambda 함수를 사용하여 간단한 처리를 수행할 수 있습니다. 이는 코드의 가독성을 높이고, 짧은 코드로도 충분히 표현할 수 있습니다.

팁 5: 예외 처리 추가하기

데이터를 처리할 때 발생할 수 있는 예외를 미리 처리하는 것이 좋습니다. try-except 구문을 사용하여 오류를 잡고, 데이터 손실을 방지할 수 있습니다. 이를 통해 더 안정적인 코드 작성을 할 수 있습니다.

요약 및 실천 팁


Pandas의 applymap 메소드는 데이터프레임의 행과 열에 함수를 적용하는 강력한 도구입니다. 이를 통해 데이터를 쉽게 변환하고, 필요한 계산을 수행할 수 있습니다. 위에서 소개한 사례와 팁들을 활용하여, 실제 데이터 분석 작업에 적용해 보세요. 데이터 처리의 효율성을 높이고, 더 나은 분석 결과를 얻을 수 있습니다.

시작하기 위해, 위의 예

반응형