넘파이와 데이터프레임의 평균 구하기

30 P
QUESTION 06 #322
2차원 리스트를 대상으로 넘파이 함수와 데이터프레임을 사용하여 전체, 열별, 행별 평균을 구하는 문제입니다. 빈칸을 채워보세요.
main.py
import numpy as np
import pandas as pd

data = [[10, 20], [30, 40], [50, 60]]

# --- 넘파이(NumPy) 방식 ---
nm_total = np.mean()
nm_col   = np.mean(, axis=0)
nm_row   = np.mean(, axis=1)

# --- 데이터프레임(DataFrame) 방식 ---
df = pd.DataFrame(data, columns=["A", "B"])
df_col   = df.mean(axis=)  # 열별 평균
df_row   = df.mean(axis=)  # 행별 평균

print("--- 넘파이 결과 ---")
print(f"전체 평균: {nm_total}")
print(f"열별 평균: {nm_col}")
print(f"행별 평균: {nm_row}")

print("\n--- 데이터프레임 결과 ---")
print(f"열별 평균:\n{df_col}")
print(f"\n행별 평균:\n{df_row}")


실행 결과 예시
--- 넘파이 결과 ---
전체 평균: 35.0
열별 평균: [30. 40.]
행별 평균: [15. 35. 55.]

--- 데이터프레임 결과 ---
열별 평균:
A    30.0
B    40.0
dtype: float64

행별 평균:
0    15.0
1    35.0
2    55.0
dtype: float64
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

넘파이 vs 판다스 평균 비교

같은 데이터에 대해 넘파이와 판다스 두 가지 방법으로 평균을 구할 수 있습니다.

데이터 구조

data = [[10, 20], [30, 40], [50, 60]]
      A열   B열
행0:  10    20
행1:  30    40
행2:  50    60

넘파이 방식

np.mean(data)           # 전체 평균: 35.0
np.mean(data, axis=0)   # 열별 평균: [30.0, 40.0]
np.mean(data, axis=1)   # 행별 평균: [15.0, 35.0, 55.0]
  • 전체 평균: (10+20+30+40+50+60) / 6 = 35.0
  • 열별(axis=0): A열 = (10+30+50)/3 = 30, B열 = (20+40+60)/3 = 40
  • 행별(axis=1): 행0 = (10+20)/2 = 15, 행1 = (30+40)/2 = 35, 행2 = (50+60)/2 = 55

판다스 방식

df = pd.DataFrame(data, columns=["A", "B"])
df.mean(axis=0)   # 열별 평균
df.mean(axis=1)   # 행별 평균

넘파이 vs 판다스 비교

비교 넘파이 판다스
함수 형태 np.mean(data) df.mean()
전체 평균 np.mean(data) df.values.mean()
열별 평균 np.mean(data, axis=0) df.mean(axis=0)
행별 평균 np.mean(data, axis=1) df.mean(axis=1)
결과 형태 ndarray Series (인덱스 포함)
axis 규칙 동일 동일

결과 출력 형태 차이

# 넘파이: 단순 배열
np.mean(data, axis=0)  →  [30. 40.]

# 판다스: 라벨(열 이름) 포함
df.mean(axis=0)
→  A    30.0
   B    40.0
   dtype: float64

💡 핵심: 넘파이와 판다스의 axis 규칙은 동일합니다. axis=0은 열별, axis=1은 행별입니다.