5 파이썬 데이터 분석 입문 2탄 ✨ 합계·평균·그래프까지 한 번에!

PYTHON BASIC 05-2

파이썬 데이터 분석 입문 2탄 ✨ 합계·평균·그래프까지 한 번에!
1탄에서 CSV 파일 불러오기까지 해봤다면, 이번에는 그 데이터를 가지고 합계·평균을 계산하고, 한글이 잘 보이는 그래프까지 완성해 볼게요.

윈도우 + 엑셀 + 파이썬(IDLE) 기준으로, 왕초보도 따라 할 수 있도록 단계별로 정리했습니다.

1. 1탄 복습: CSV 불러오기 한 번만 다시 확인하기

먼저, 1탄에서 만든 scores.csv 파일을 다시 떠올려 볼게요. 폴더 구조는 다음과 같습니다.



C:\python_practice
 ├─ scores.csv
 └─ read_csv_test.py (또는 이번 2탄용 파일)

scores.csv 안에는 이런 데이터가 들어 있어요.

이름,국어,영어,수학
철수,90,85,80
영희,100,95,90
민수,70,88,92

파이썬에서 이 파일을 불러오는 코드는 아래와 같았습니다.


import pandas as pd

df = pd.read_csv("C:/python_practice/scores.csv", encoding="cp949")
print(df)

실행 결과:


   이름   국어   영어   수학
0  철수   90   85   80
1  영희  100   95   90
2  민수   70   88   92
요약: 2탄에서는 이 df를 기반으로 총점·평균 계산을 하고, 학생별 총점 그래프 + 과목별 평균 그래프를 그려볼 거예요.

2. 합계·평균·len()으로 데이터 가공하기




2-1. 학생별 총점 구하기

엑셀에서는 =B2+C2+D2처럼 쓰던 총점을, 파이썬에서는 이렇게 구할 수 있어요.

# 학생별 총점 구하기
df["총점"] = df["국어"] + df["영어"] + df["수학"]

print(df)

실행 결과:

   이름   국어   영어   수학   총점
0  철수   90   85   80  255
1  영희  100   95   90  285
2  민수   70   88   92  250

2-2. 평균 점수 구하기

총점을 3으로 나누면 평균이 됩니다.

# 평균 점수 구하기
df["평균"] = df["총점"] / 3

print(df)

실행 결과:

   이름   국어   영어   수학   총점     평균
0  철수   90   85   80  255  85.0
1  영희  100   95   90  285  95.0
2  민수   70   88   92  250  83.3

2-3. len()으로 학생 수 세기

len() 함수는 데이터 개수를 세는 함수입니다.

count = len(df)
print("학생 수:", count)

결과:

학생 수: 3
요약: 여기까지가 “계산” 단계입니다. 이제 이 계산된 데이터를 가지고 그래프를 그려볼 거예요.


3. Matplotlib 설치 + 한글 폰트 설정

그래프를 그리기 위해서는 matplotlib라는 라이브러리가 필요합니다.

3-1. cmd에서 설치하기

  1. 윈도우 검색창에 cmd 입력 → 명령 프롬프트 실행
  2. 아래 명령 입력 후 엔터
pip install matplotlib



3-2. 한글 깨짐 방지 설정

그래프 안에 한글(이름, 과목, 제목)이 □ 로 깨져 보이지 않도록, 맨 위에 폰트 설정 코드를 넣어 줍니다.

import matplotlib.pyplot as plt
from matplotlib import font_manager, rc

# ✅ 한글 폰트 설정 (윈도우 기본: 맑은 고딕)
font_path = "C:/Windows/Fonts/malgun.ttf"
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)

# ✅ 마이너스 기호 깨짐 방지
plt.rcParams['axes.unicode_minus'] = False
Tip: 위 코드는 한 번만 잘 넣어두면, 같은 파일 안에서 그리는 모든 그래프에 한글이 정상 표시됩니다.

4. 학생별 총점 막대그래프 (한글 폰트 반영)

이제 학생별 총점 비교 그래프를 만들어 볼게요. 아래 코드는 “불러오기 + 계산 + 그래프”를 한 번에 실행하는 예시입니다.

파이썬에서 아래 새파일을 열기한후 아래 코드를 붙여넣고 저장해줍니다. 

(파일명 예시 : graph_test.py) 아래 참고



import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc

# ✅ 한글 폰트 설정
font_path = "C:/Windows/Fonts/malgun.ttf"
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
plt.rcParams['axes.unicode_minus'] = False

# 1) CSV 불러오기
df = pd.read_csv("C:/python_practice/scores.csv", encoding="cp949")

# 2) 총점·평균 계산
df["총점"] = df["국어"] + df["영어"] + df["수학"]
df["평균"] = df["총점"] / 3

# 3) 학생별 총점 막대그래프
plt.figure(figsize=(6,4))
bars = plt.bar(df["이름"], df["총점"], color="#38bdf8")

plt.title("학생별 총점 비교", fontsize=14, pad=10)
plt.xlabel("이름", fontsize=12)
plt.ylabel("총점", fontsize=12)
plt.ylim(0, 110)
plt.grid(axis="y", linestyle="--", alpha=0.3)

# 막대 위에 점수 표시
for bar in bars:
    yval = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2, yval + 1,
             f"{yval:.0f}", ha="center", va="bottom", fontsize=10)

plt.show()

F5 (또는 RUN)실행하면 “철수·영희·민수” 이름이 한글로 잘 나오고, 각 막대 위에 총점 숫자도 표시된 막대그래프가 나타납니다 📊


5. 과목별 평균 그래프 (국어·영어·수학 비교)

이번에는 과목별 평균을 구해서, 어떤 과목이 상대적으로 높은지/낮은지 한눈에 볼 수 있도록 그래프를 그려볼게요.

5-1. 과목별 평균 계산

kor_avg = df["국어"].mean()
eng_avg = df["영어"].mean()
math_avg = df["수학"].mean()

print("국어 평균:", kor_avg)
print("영어 평균:", eng_avg)
print("수학 평균:", math_avg)

5-2. 과목별 평균 막대그래프

subjects = ["국어", "영어", "수학"]
averages = [kor_avg, eng_avg, math_avg]

plt.figure(figsize=(6,4))
bars2 = plt.bar(subjects, averages,
                color=["#4f46e5", "#22c55e", "#f97316"],
                width=0.6)

plt.title("과목별 평균 점수", fontsize=14, pad=10)
plt.xlabel("과목", fontsize=12)
plt.ylabel("평균 점수", fontsize=12)
plt.ylim(0, 110)
plt.grid(axis="y", linestyle="--", alpha=0.3)

# 막대 위에 평균 점수 표시
for bar in bars2:
    yval = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2, yval + 1,
             f"{yval:.1f}", ha="center", va="bottom", fontsize=10)

plt.show()

이렇게 하면 “국어 / 영어 / 수학” 각각의 평균 점수가 막대로 표시되고, 위에 숫자까지 떠서 어떤 과목의 평균이 높은지 직관적으로 보이게 됩니다.

6. 한 번에 실행 가능한 전체 코드 모음

위에서 나눠서 보던 코드를 하나로 정리하면 아래처럼 사용할 수 있어요.

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc

# ✅ 한글 폰트 설정
font_path = "C:/Windows/Fonts/malgun.ttf"
font_name = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font_name)
plt.rcParams['axes.unicode_minus'] = False

# 1) CSV 불러오기
df = pd.read_csv("C:/python_practice/scores.csv", encoding="cp949")

# 2) 총점·평균·학생 수 계산
df["총점"] = df["국어"] + df["영어"] + df["수학"]
df["평균"] = df["총점"] / 3
count = len(df)
print("학생 수:", count)
print(df)

# 3) 학생별 총점 그래프
plt.figure(figsize=(6,4))
bars = plt.bar(df["이름"], df["총점"], color="#38bdf8")
plt.title("학생별 총점 비교", fontsize=14, pad=10)
plt.xlabel("이름", fontsize=12)
plt.ylabel("총점", fontsize=12)
plt.ylim(0, 110)
plt.grid(axis="y", linestyle="--", alpha=0.3)
for bar in bars:
    yval = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2, yval + 1,
             f"{yval:.0f}", ha="center", va="bottom", fontsize=10)
plt.show()

# 4) 과목별 평균 그래프
kor_avg = df["국어"].mean()
eng_avg = df["영어"].mean()
math_avg = df["수학"].mean()

subjects = ["국어", "영어", "수학"]
averages = [kor_avg, eng_avg, math_avg]

plt.figure(figsize=(6,4))
bars2 = plt.bar(subjects, averages,
                color=["#4f46e5", "#22c55e", "#f97316"],
                width=0.6)
plt.title("과목별 평균 점수", fontsize=14, pad=10)
plt.xlabel("과목", fontsize=12)
plt.ylabel("평균 점수", fontsize=12)
plt.ylim(0, 110)
plt.grid(axis="y", linestyle="--", alpha=0.3)
for bar in bars2:
    yval = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2, yval + 1,
             f"{yval:.1f}", ha="center", va="bottom", fontsize=10)
plt.show()
요약: 이 한 파일만 저장해 두면, ▶ CSV 불러오기 → ▶ 합계·평균 계산 → ▶ 학생 수 확인 → ▶ 학생별 총점 그래프 → ▶ 과목별 평균 그래프 를 F5 한 번으로 모두 실행할 수 있습니다.

7. 다음 단계로 확장해 보면 좋은 아이디어들

  • 90점 이상인 학생만 따로 뽑아서 그래프 그리기
  • 월별 매출, 요일별 방문자 수 등 실제 가계부·블로그·쇼핑몰 데이터를 CSV로 만들어 분석해 보기
  • 날짜별 데이터를 사용해서 선 그래프(plt.plot()) 연습해 보기

“엑셀로 하던 반복 작업을, 파이썬 그래프까지 포함해서 자동화한다”는 느낌으로 하나씩 경험해 보시면, 파이썬이 훨씬 더 친근하게 느껴질 거예요 😊

※ 글을 따라 하다가 막히는 부분이 있다면, “어느 단계에서 어떤 에러가 나왔는지”를 댓글로 남겨 주세요. 같은 부분에서 어려워하는 분들이 많기 때문에, 그 부분을 중심으로 글을 계속 보완해 나가겠습니다 💬

이 블로그의 인기 게시물

SRT 노선도·시간표·요금 한눈에 보기 | 수서발 고속열차 이용가이드

연말정산 미리보기 서비스

티머니 교통카드 잔액 조회 방법 : 모바일 조회 🚍💳