[Python] 30. Pandas 데이터프레임 lambda 함수 사용하기

pandas 데이터프레임에서 lambda 함수를 사용하는 것은 데이터 처리와 변환에 유용한 방법 중 하나입니다. 람다 함수는 한 줄로 간단한 함수를 정의할 때 유용합니다. 아래에서 pandas 데이터프레임에서 람다 함수를 사용하는 예제와 설명을 제공하겠습니다.

lambda 함수로 열 변환

다음은 pandas 데이터프레임의 열을 변환하는 예제입니다. 주어진 데이터프레임에서 ‘점수’ 열의 값에 10을 더한 새로운 열 ‘조정된 점수’를 만들어보겠습니다.

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie', 'David'],
        '점수': [85, 90, 75, 95]}
df = pd.DataFrame(data)

# 람다 함수를 사용하여 '점수' 열을 변환
df['조정된 점수'] = df['점수'].apply(lambda x: x + 10)

print(df)

출력 결과

       이름  점수 조정된 점수
0    Alice  85      95
1      Bob  90     100
2  Charlie  75      85
3    David  95     105

위 코드에서 lambda x: x + 10은 ‘점수’ 열의 각 요소에 10을 더하는 람다 함수를 정의합니다. 그런 다음 apply() 함수를 사용하여 이 람다 함수를 ‘점수’ 열의 각 요소에 적용하고, 그 결과를 ‘조정된 점수’ 열에 할당합니다.

조건부 lambda 함수

조건에 따라 다른 연산을 수행하려면 조건부 람다 함수를 사용할 수 있습니다. 예를 들어, ‘점수’가 80 이상인 경우 ‘합격’, 그렇지 않은 경우 ‘불합격’을 나타내는 새로운 열 ‘결과’를 만들어보겠습니다.

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie', 'David'],
        '점수': [85, 90, 75, 95]}
df = pd.DataFrame(data)

# 조건부 람다 함수를 사용하여 '결과' 열 생성
df['결과'] = df['점수'].apply(lambda x: '합격' if x >= 80 else '불합격')

print(df)

출력 결과

       이름  점수  결과
0    Alice  85   합격
1      Bob  90   합격
2  Charlie  75  불합격
3    David  95   합격

위 코드에서 lambda x: '합격' if x >= 80 else '불합격'는 ‘점수’ 열의 값에 따라 ‘합격’ 또는 ‘불합격’을 반환하는 조건부 람다 함수를 정의합니다.

문자열 조작

데이터프레임의 문자열 열을 조작할 때 람다 함수를 사용할 수 있습니다. 아래 예제는 ‘이름’ 열의 문자열을 모두 대문자로 변환합니다.

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie', 'David']}
df = pd.DataFrame(data)

# '이름' 열의 문자열을 대문자로 변환
df['이름'] = df['이름'].apply(lambda x: x.upper())

print(df)

출력 결과

      이름
0    ALICE
1      BOB
2  CHARLIE
3    DAVID

여러 열 조합

여러 열의 값을 조합하여 새로운 열을 생성할 때 람다 함수를 사용할 수 있습니다. 다음은 ‘이름’과 ‘성’ 열을 결합하여 ‘전체 이름’ 열을 만드는 예제입니다.

import pandas as pd

data = {'이름': ['Alice', 'Bob', 'Charlie'],
        '성': ['Smith', 'Johnson', 'Brown']}
df = pd.DataFrame(data)

# '이름'과 '성' 열을 결합하여 '전체 이름' 열 생성
df['전체 이름'] = df.apply(lambda row: row['이름'] + ' ' + row['성'], axis=1)

print(df)

출력 결과

       이름      성        전체 이름
0    Alice    Smith    Alice Smith
1      Bob  Johnson    Bob Johnson
2  Charlie    Brown  Charlie Brown

통계적 연산

람다 함수를 사용하여 특정 열에 대한 통계적 연산을 수행할 수 있습니다. 다음은 ‘점수’ 열의 평균과 표준 편차를 계산하는 예제입니다.

import pandas as pd

# 데이터프레임 생성
data = {'A': [85, 90, 75, 95, 80],
        'B': [70, 88, 92, 78, 89]}
df = pd.DataFrame(data)

# 람다 함수를 사용하여 각 열의 평균 계산
mean_func = lambda col: col.mean()
mean_result = df.apply(mean_func)
print('각 열의 평균:')
print(mean_result)

# 람다 함수를 사용하여 각 열의 표준 편차 계산
std_dev_func = lambda col: col.std()
std_dev_result = df.apply(std_dev_func)
print('\n각 열의 표준 편차:')
print(std_dev_result)

출력 결과

각 열의 평균:
A    85.0
B    83.4
dtype: float64

각 열의 표준 편차:
A    7.905694
B    9.154234
dtype: float64

조건부 열 생성

조건에 따라 새로운 열을 생성할 때 람다 함수를 사용할 수 있습니다. 다음 예제는 ‘나이’ 열을 기반으로 ‘성인’ 또는 ‘미성년자’를 나타내는 새로운 열을 만듭니다.

import pandas as pd

data = {'나이': [25, 17, 30, 12, 22]}
df = pd.DataFrame(data)

# 조건부 람다 함수를 사용하여 '성인' 또는 '미성년자' 열 생성
df['성인 여부'] = df['나이'].apply(lambda x: '성인' if x >= 18 else '미성년자')

print(df)

출력 결과

   나이 성인 여부
0  25    성인
1  17  미성년자
2  30    성인
3  12  미성년자
4  22    성인

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤