[Python] 파이썬 Apply Lambda와 For문의 효율성 비교

2023. 10. 27. 08:42·Python/pandas

블로그 로고
블로그 로고

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 문이 더 명확하게 로직을 표현할 수 있습니다. 상황에 맞는 최적의 방법을 선택하여 효율적으로 데이터를 처리하시기 바랍니다.

자세한 내용은 판다스 공식 문서에서 확인하실 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)
'Python/pandas' 카테고리의 다른 글
  • [Pandas] 판다스 Cut 함수로 데이터 구간 나누기(설명 및 예시)
  • 판다스 Stack 함수로 데이터 만들기
  • 판다스(Pandas)로 데이터 다루기
  • 판다스(pandas) 데이터 분석 라이브러리
hyunicecream
hyunicecream
안녕하세요. 여러가지 정보를 통해 조금이나마 도움이 되고자 시작하게 되었습니다.
  • hyunicecream
    Café
    hyunicecream
  • 홈
  • 포스팅 카테고리

    • 분류 전체보기 N
      • 생성형 AI N
        • ChatGPT
        • Claude AI
        • MS Copilot
        • Perplexity N
        • 생성형 AI 정보
        • 프롬프트 작성 가이드
        • AI 활용기
      • Notion
      • 업무 생산성
      • Python
        • pandas
      • 머신러닝
      • 딥러닝
      • Terminal
      • SQL
        • Postgre SQL
      • 여행정보
        • 국내여행
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hyunicecream
[Python] 파이썬 Apply Lambda와 For문의 효율성 비교
상단으로

티스토리툴바