본문 바로가기

BackEnd/파이썬

🐼 Pandas에서 행 합계 계산하기: sum(axis=1) 완벽 가이드

728x90

데이터 분석을 하다 보면 각 행(row)의 값을 합산하여 새로운 정보를 도출해야 할 때가 많습니다.

예를 들어, 학생들의 과목별 점수를 합산하여 총점을 계산하거나, 제품별 월별 판매량을 합산하여 연간 판매량을 계산하는 경우가 이에 해당합니다.

 

Pandas에서는 sum() 메서드와 axis=1 파라미터를 사용하여 이러한 행 합계를 쉽게 계산할 수 있습니다.

 

📌 예제 데이터프레임 생성

import pandas as pd

df = pd.DataFrame({
    '이름': ['철수', '영희', '민수'],
    '국어': [90, 85, 80],
    '영어': [95, 90, 85],
    '수학': [85, 80, 90]
})

 

이름 국어 영어 수학
철수 90 95 85
영희 85 90 80
민수 80 85 90

 

 

 

✅ 전체 행 합계 계산하기

모든 숫자형 열을 합산하여 각 행의 합계를 계산하려면 sum() 메서드에 axis=1을 설정합니다.

df['총점'] = df.sum(axis=1, numeric_only=True)

 

numeric_only=True를 설정하면 숫자형 열만 합산하며, 문자열 등 다른 데이터 타입은 무시됩니다.


이름 국어 영어 수학 총점
철수 90 95 85 270
영희 85 90 80 255
민수 80 85 90 255

 

 

 

🔹 특정 열만 선택하여 합계 계산하기

특정 열만 선택하여 합계를 계산하려면 해당 열들만 선택하여 sum() 메서드를 적용합니다.

df['국영합'] = df[['국어', '영어']].sum(axis=1)
 

이름 국어 영어 수학 국영합
철수 90 95 85 185
영희 85 90 80 175
민수 80 85 90 165

 

 

 

❓ 결측치(NaN) 처리하기

결측치가 있는 경우, sum() 메서드는 기본적으로 결측치를 무시하고 합계를 계산합니다.

import numpy as np

df.loc[1, '수학'] = np.nan
df['총점'] = df[['국어', '영어', '수학']].sum(axis=1)

이름 국어 영어 수학 총점
철수 90 95 85 270
영희 85 90 NaN 175
민수 80 85 90 255

 

만약 결측치가 있는 경우 합계를 계산하지 않고 NaN으로 표시하려면 min_count 파라미터를 사용합니다.

df['총점'] = df[['국어', '영어', '수학']].sum(axis=1, min_count=3)

이름 국어 영어 수학 총점
철수 90 95 85 270
영희 85 90 NaN NaN
민수 80 85 90 255

 

 

 

🧠 eval() 메서드로 열 간 연산하기

eval() 메서드를 사용하면 열 간의 연산을 문자열로 표현하여 계산할 수 있습니다.

df = df.eval('총점 = 국어 + 영어 + 수학')

 

이 방법은 열 이름이 복잡하거나 동적으로 생성되는 경우 유용합니다.

728x90