과목별 평균으로 행 추가하기 : loc

30 P
QUESTION 03 #317
데이터프레임에서 열 평균을 구한 다음 새로운 행으로 추가하는 프로그램입니다. 빈칸을 채워보세요.
main.py
import pandas as pd

data = {
    "수학": [90, 80, 70, 85, 90],
    "영어": [85, 95, 75, 77, 98],
    "과학": [100, 90, 80, 65, 85]
}
df = pd.DataFrame(data, index=["민수", "영희", "지우", "채린", "예림"])

# 열(세로) 방향 평균을 계산하여 "과목 평균"이라는 이름의 새로운 "행"으로 추가
df.["과목 평균"] = df.mean()

print(df)
실행 결과 예시
          수학    영어     과학
민수      90.0  85.0  100.0
영희      80.0  95.0   90.0
지우      70.0  75.0   80.0
채린      85.0  77.0   65.0
예림      90.0  98.0   85.0
과목 평균   83.0  86.0   84.0
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

loc으로 새로운 행 추가하기

loc이름(라벨)으로 데이터프레임의 행이나 열에 접근하는 속성입니다. 새로운 인덱스를 지정하면 행을 추가할 수 있습니다.

기본 문법

df.loc["새인덱스"] = 값

코드 분석

df = pd.DataFrame(data, index=["민수", "서희", "지연", "채린", "서림"])
df.loc["과목 평균"] = df.mean()

동작 과정

원본:                         행 추가 후:
        수학  영어  과학              수학    영어    과학
민수      90   85  100       민수    90.0  85.0  100.0
서희      80   95   90       서희    80.0  95.0   90.0
지연      70   75   80       지연    70.0  75.0   80.0
채린      85   77   65       채린    85.0  77.0   65.0
서림      90   98   85       서림    90.0  98.0   85.0
                            과목 평균  83.0  86.0   84.0
                                        ↑ 새 행 추가!

df.mean()의 기본 동작 (axis=0)

axis를 지정하지 않으면 열(세로) 방향 평균을 계산합니다.

수학: (90+80+70+85+90) / 5 = 83.0
영어: (85+95+75+77+98) / 5 = 86.0
과학: (100+90+80+65+85) / 5 = 84.0

데이터 타입 자동 변환

평균값은 실수(float)이므로, 행이 추가되면 기존 정수 데이터도 float로 자동 변환됩니다.

  • 변환 전: 90 (int)
  • 변환 후: 90.0 (float)

loc vs iloc 비교

속성 접근 방식 예시
loc 이름(라벨)으로 접근 df.loc["민수"]
iloc 번호(인덱스)로 접근 df.iloc[0]
df.loc["민수"]   # "민수" 행의 데이터
df.iloc[0]       # 0번째 행의 데이터 (같은 결과)

💡 핵심: df.loc["새이름"] = 값으로 새 행을 간단히 추가할 수 있습니다.