본문 바로가기
ChatGPT 아카이브/Pandas

메서드 체이닝(Method Chaining) 파헤치기

by Nanki 2025. 3. 5.

메서드 체이닝(Method Chaining) 정리

구분설명

개념 여러 개의 메서드(함수)를 연속적으로 연결하여 호출하는 방식
필요한 이유 코드를 간결하게 유지하고, 중간 변수 없이 연속적인 데이터 처리를 하기 위해 사용
어떻게 동작? 하나의 메서드가 실행된 후, 그 결과를 반환하여 다음 메서드에서 바로 처리할 수 있도록 연결됨
기본 원리 대부분의 Pandas 메서드는 DataFrame 또는 Series를 반환하므로, 연속적으로 호출 가능
주의할 점 각 메서드가 반환하는 객체 타입을 확인해야 하며, 코드 가독성이 떨어질 수 있음

 

📌 메서드 체이닝 동작 절차

단계동작 내용예제 코드

1단계 원본 데이터프레임 생성 df = pd.DataFrame({...})
2단계 필요한 열 선택 (filtering) df[['column1', 'column2']]
3단계 필터 적용 (조건 설정) .query("column1 > 10")
4단계 새로운 열 추가 (변환 또는 계산) .assign(new_col=df['column2'] * 2)
5단계 정렬 (정렬 또는 그룹화) .sort_values(by='new_col', ascending=False)
6단계 최종 결과 반환 (head() 또는 tail()) .head(5)

 

🚀 결론

메서드 체이닝은 코드의 가독성을 높이고, 한 줄로 여러 작업을 수행 가능
중간 변수 없이 데이터 처리를 한 번에 실행 → 코드가 간결해짐
체이닝을 사용할 때, 각 메서드가 반환하는 객체 타입을 고려해야 함
괄호 ()를 사용하여 여러 줄로 나누면 가독성을 유지하면서 체이닝 활용 가능 🚀

 

📌 예제 코드 (일반 방식 vs 메서드 체이닝 방식 비교)

❌ 중간 변수를 사용한 일반 방식 (가독성이 떨어짐)

import pandas as pd

df = pd.DataFrame({'A': [5, 15, 25], 'B': [10, 20, 30]})

df_filtered = df[df['A'] > 10]  # 조건 필터링
df_sorted = df_filtered.sort_values(by='B', ascending=False)  # 정렬
df_final = df_sorted.assign(C=df_sorted['B'] * 2)  # 새로운 열 추가

print(df_final)

 

 


✅ 메서드 체이닝 방식 (더 간결하고 직관적)

df_final = (
    df[df['A'] > 10]
    .sort_values(by='B', ascending=False)
    .assign(C=lambda x: x['B'] * 2)
)

print(df_final)

 

 

📌 순서가 중요한 이유 (속도 최적화가 필요한 경우)

메서드 체이닝에서 연산 순서를 잘못 지정하면 불필요한 연산이 많아져 속도가 느려질 수 있음

 

❌ 비효율적인 순서 ✅ 최적화된 순서
먼저 정렬 → 나중에 필터링 먼저 필터링 → 나중에 정렬
큰 데이터에서 불필요한 열 추가 후 필터링 필터링 후 필요한 열만 남기고 연산

🚀 결론

메서드 체이닝의 순서는 바꿀 수 있지만, 성능 최적화를 고려해야 함
큰 데이터에서 먼저 필터링(query) 후 정렬(sort_values)하는 것이 효율적
불필요한 연산을 줄이면 속도와 메모리 사용량이 줄어듦
항상 작은 데이터로 줄인 후 연산하는 것이 빠름 🚀

반응형