어제 오늘 내일

[Python 실전] "가로 세로 싹 다 더해라!" 2차원 리스트 합계와 평균 구하기 본문

IT/Python

[Python 실전] "가로 세로 싹 다 더해라!" 2차원 리스트 합계와 평균 구하기

hi.anna 2026. 5. 25. 15:59

엑셀에서 행 전체를 드래그해서 합계를 구하거나, 열 하단에 평균을 내는 작업을 파이썬 코드로 구현해 보겠습니다.


1. 각 행(Row)의 합계와 평균 구하기

행의 합계는 매우 쉽습니다. 2차원 리스트에서 한 줄씩 꺼내면 그 자체가 1차원 리스트이므로, 파이썬 내장 함수인 sum()을 바로 적용하면 됩니다.

📌 예제 코드: 리스트 컴프리헨션 활용

scores = [
    [80, 90, 100], # 1행
    [70, 60, 50],  # 2행
    [100, 100, 90] # 3행
]

# 각 행의 합계 구하기
row_sums = [sum(row) for row in scores]

# 각 행의 평균 구하기 (합계 / 개수)
row_averages = [sum(row) / len(row) for row in scores]

print("각 행의 합계:", row_sums)      # [270, 180, 290]
print("각 행의 평균:", row_averages)  # [90.0, 60.0, 96.66...]

2. 각 열(Column)의 합계와 평균 구하기

열의 합계는 행보다 조금 까다롭습니다. 같은 인덱스에 있는 세로 데이터들을 모아야 하기 때문이죠. 이때 우리가 이전에 배웠던 전치(Transpose) 기술인 zip(*matrix)를 쓰면 아주 우아하게 해결됩니다.

📌 예제 코드: zip()을 활용한 열 합산

scores = [
    [80, 90, 100],
    [70, 60, 50],
    [100, 100, 90]
]

# 1. zip(*scores)로 행과 열을 뒤바꿉니다. 
# (80, 70, 100), (90, 60, 100)... 이런 식으로 묶입니다.

# 2. 묶인 데이터들의 합계를 구합니다.
col_sums = [sum(col) for col in zip(*scores)]

# 3. 열의 평균 구하기
col_averages = [sum(col) / len(col) for col in zip(*scores)]

print("각 열의 합계:", col_sums)      # [250, 250, 240]
print("각 열의 평균:", col_averages)  # [83.33, 83.33, 80.0]

3. 실무형 끝판왕: Pandas 사용하기

데이터의 양이 많아지면 위와 같은 리스트 방식은 코드가 복잡해집니다. Pandas를 쓰면 axis라는 옵션 하나로 가로/세로 계산을 끝낼 수 있습니다.

  • axis=1: 행(가로) 방향으로 계산
  • axis=0: 열(세로) 방향으로 계산

📌 예제 코드: Pandas의 강력한 한 줄

import pandas as pd

df = pd.DataFrame([
    [80, 90, 100],
    [70, 60, 50],
    [100, 100, 90]
])

# 열(세로) 합계
col_sum = df.sum(axis=0)

# 행(가로) 평균
row_avg = df.mean(axis=1)

print("열 합계:\n", col_sum.tolist())
print("행 평균:\n", row_avg.tolist())

📝 핵심 요약

  1. 행(가로) 계산: [sum(row) for row in matrix] 처럼 리스트에서 한 줄씩 꺼내서 바로 계산한다.
  2. 열(세로) 계산: zip(*matrix)를 사용해 세로 줄을 가로 줄로 변신시킨 뒤 계산한다.
  3. 데이터가 크다면: 무조건 PandasNumPy를 사용하는 것이 정신 건강과 성능 면에서 이롭다.

이제 2차원 데이터를 합치고, 뒤집고, 계산하는 모든 핵심 기술을 섭렵하셨습니다!
 

반응형
Comments