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 성인