반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 배열
- 자바문법
- junit
- junit5
- Eclipse
- java테스트
- CSS
- Array
- input
- 인텔리제이
- Visual Studio Code
- HashMap
- string
- IntelliJ
- 자바
- list
- 테스트자동화
- javascript
- SpringBoot
- 단위테스트
- js
- 정규식
- Java
- ArrayList
- 자바스크립트
- 스프링부트
- html
- 문자열
- math
- vscode
Archives
- Today
- Total
어제 오늘 내일
[Python 실전] "가로 세로 싹 다 더해라!" 2차원 리스트 합계와 평균 구하기 본문
엑셀에서 행 전체를 드래그해서 합계를 구하거나, 열 하단에 평균을 내는 작업을 파이썬 코드로 구현해 보겠습니다.
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())
📝 핵심 요약
- 행(가로) 계산:
[sum(row) for row in matrix]처럼 리스트에서 한 줄씩 꺼내서 바로 계산한다. - 열(세로) 계산:
zip(*matrix)를 사용해 세로 줄을 가로 줄로 변신시킨 뒤 계산한다. - 데이터가 크다면: 무조건 Pandas나 NumPy를 사용하는 것이 정신 건강과 성능 면에서 이롭다.
이제 2차원 데이터를 합치고, 뒤집고, 계산하는 모든 핵심 기술을 섭렵하셨습니다!
반응형
'IT > Python' 카테고리의 다른 글
| [Python 기초] 딕셔너리(Dictionary) 완벽 가이드 (0) | 2026.05.26 |
|---|---|
| [Python 기초] "리스트를 하나의 글로!" 파이썬 리스트 문자열 변환 (0) | 2026.05.25 |
| [Python 실전] "좌표를 찍어라!" 2차원 리스트 데이터 위치 찾기 (0) | 2026.05.25 |
| [Python 기초] "가로를 세로로!" 2차원 리스트 전치(Transpose) 완벽 가이드 (0) | 2026.05.24 |
| [Python 기초] "표 형태의 데이터도 한 줄로!" 2차원 리스트 컴프리헨션 (0) | 2026.05.24 |
Comments
