Python Apply와 Lambda를 활용한 데이터 처리 비교
데이터 처리에 있어서 Python의 apply()
함수와 lambda
표현식을 활용한 방법과 전통적인 for
문을 사용한 방법의 차이점과 효율성을 비교해보겠습니다.
Summary: Python의 apply()
함수와 lambda
표현식, 그리고 for
문을 이용한 데이터 처리 방법을 예시를 통해 비교해 봅니다. 각 방법의 장단점을 알아보고, 상황에 맞는 최적의 방법을 선택하는 데 도움을 드립니다.
1. Apply와 Lambda 표현식 사용 예시
apply()
함수와 lambda
표현식을 사용하면 간결하고 빠른 코드 작성이 가능합니다. 아래의 예시들을 통해 사용 방법을 살펴보겠습니다.
예제 1: 각 행에 함수 적용
먼저 사용할 데이터 프레임을 생성합니다.
import pandas as pd
data = {
'A': [10, 20, 30, 40, 50],
'B': [5, 10, 15, 20, 25]
}
df = pd.DataFrame(data)
df['A_squared'] = df['A'].apply(lambda x: x ** 2)
print(df)
출력 결과
A B A_squared
0 10 5 100
1 20 10 400
2 30 15 900
3 40 20 1600
4 50 25 2500
예제 2: 조건에 따른 값 할당
df['A_even'] = df['A'].apply(lambda x: 'Even' if x % 2 == 0 else 'Odd')
print(df)
출력 결과
A B A_squared A_even
0 10 5 100 Even
1 20 10 400 Even
2 30 15 900 Odd
3 40 20 1600 Even
4 50 25 2500 Even
예제 3: 여러 열을 사용한 계산
df['A+B'] = df.apply(lambda row: row['A'] + row['B'], axis=1)
print(df)
출력 결과
A B A_squared A_even A+B
0 10 5 100 Even 15
1 20 10 400 Even 30
2 30 15 900 Odd 45
3 40 20 1600 Even 60
4 50 25 2500 Even 75
2. For문 사용 예시
for
문은 명시적이고 이해하기 쉬운 코드를 작성할 수 있지만, 데이터가 클 경우 처리 속도가 느려질 수 있습니다. 다음은 몇 가지 예시입니다.
예제 4: 각 행에 함수 적용
for index, row in df.iterrows():
df.at[index, 'A_squared'] = row['A'] ** 2
print(df)
출력 결과
A B A_squared
0 10 5 100
1 20 10 400
2 30 15 900
3 40 20 1600
4 50 25 2500
예제 5: 조건에 따른 값 할당
for index, row in df.iterrows():
df.at[index, 'A_even'] = 'Even' if row['A'] % 2 == 0 else 'Odd'
print(df)
출력 결과
A B A_squared A_even
0 10 5 100 Even
1 20 10 400 Even
2 30 15 900 Odd
3 40 20 1600 Even
4 50 25 2500 Even
예제 6: 여러 열을 사용한 계산
for index, row in df.iterrows():
df.at[index, 'A+B'] = row['A'] + row['B']
print(df)
출력 결과
A B A_squared A_even A+B
0 10 5 100 Even 15
1 20 10 400 Even 30
2 30 15 900 Odd 45
3 40 20 1600 Even 60
4 50 25 2500 Even 75
3. 성능 비교
방법 | 장점 | 단점 |
apply, lambda | 간결한 코드, 빠른 처리 속도 | 복잡한 로직 표현이 어려움 |
for문 | 직관적이고 이해하기 쉬움, 복잡한 로직 표현 가능 | 처리 속도가 느림 |
결론
데이터 처리 방식을 선택할 때는 데이터셋의 크기, 코드의 가독성, 그리고 처리 속도를 고려해야 합니다.
대체로 apply()
와 lambda
를 사용하는 것이 더 빠르고 간결하지만, 복잡한 로직에서는 for
문이 더 명확하게 로직을 표현할 수 있습니다. 상황에 맞는 최적의 방법을 선택하여 효율적으로 데이터를 처리하시기 바랍니다.
자세한 내용은 판다스 공식 문서에서 확인하실 수 있습니다.