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
'BackEnd > 파이썬' 카테고리의 다른 글
| 👉 Pandas에서 결측값 채우기 완전 정복: fillna, ffill, bfill 사용법 정리 (0) | 2025.06.12 |
|---|---|
| 🐼 Pandas에서 열 추가 및 삭제하기: 실전 예제로 마스터하기 (1) | 2025.06.10 |
| 🐼 Pandas에서 데이터프레임 열 타입 확인하기: df.info()와 df.dtypes 활용법 (0) | 2025.06.09 |
| 🐼 Pandas에서 조건에 맞는 행 추출하기: 실무 예제로 마스터하기 (0) | 2025.06.08 |
| 🐼 Pandas의 iloc vs loc 완벽 정리: 실무 예제로 이해하기 (0) | 2025.06.07 |