🐼📊 Pandas + Matplotlib OOP 예제 20개

초보자도 이해할 수 있도록 각 코드의 한 줄 한 줄을 꼼꼼하게 설명한 HTML 학습자료

🚀 학습 안내

이 자료는 업로드된 Pandas + Matplotlib 데이터 시각화 OOP 예제 20개를 바탕으로, 코드 한 줄마다 역할과 의미를 쉽게 설명합니다.

PandasMatplotlibDataFrameOOP시각화대시보드

주의: 코랩에서 한글 그래프가 깨질 때는 NanumGothic 폰트를 설치하고 런타임을 다시 시작해야 합니다.

🧭 코드 이해 흐름

1. 라이브러리 불러오기

Pandas와 Matplotlib을 준비합니다.

2. 클래스 만들기

데이터와 그래프 기능을 객체로 묶습니다.

3. DataFrame 생성

딕셔너리 데이터를 표 형태로 바꿉니다.

4. 분석 메서드

평균, 합계, 빈도, 결측치 등을 계산합니다.

5. 그래프 메서드

막대, 선, 산점도, 히스토그램 등으로 시각화합니다.

6. 객체 실행

객체를 만들고 메서드를 호출하여 결과를 확인합니다.

1. 과목별 점수 막대그래프

import pandas as pd
import matplotlib.pyplot as plt

class SubjectScoreBarChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def average_scores(self):
        return self.df[["국어", "수학", "정보", "과학"]].mean()

    def draw(self):
        avg = self.average_scores()
        plt.figure(figsize=(8, 5))
        plt.bar(avg.index, avg.values)
        plt.title("과목별 평균 점수")
        plt.xlabel("과목")
        plt.ylabel("평균 점수")
        plt.ylim(0, 100)
        plt.show()

data = {"이름":["김","이","박","최"],"국어":[90,85,78,92],"수학":[88,95,80,91],"정보":[96,89,85,98],"과학":[84,90,87,93]}
chart = SubjectScoreBarChart(data)
print(chart.average_scores())
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class SubjectScoreBarChart:SubjectScoreBarChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def average_scores(self):average_scores라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df[["국어", "수학", "정보", "과학"]].mean()mean()으로 평균을 계산하여 반환합니다. 숫자 열의 대표값을 구할 때 사용합니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 avg = self.average_scores()avg 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
13 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.bar(avg.index, avg.values)막대그래프를 그립니다. 범주별 크기를 비교할 때 사용합니다.
15 plt.title("과목별 평균 점수")그래프의 제목을 설정합니다.
16 plt.xlabel("과목")x축 이름을 설정합니다.
17 plt.ylabel("평균 점수")y축 이름을 설정합니다.
18 plt.ylim(0, 100)y축 값의 표시 범위를 설정합니다.
19 plt.show()완성된 그래프를 화면에 표시합니다.
20 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
21data = {"이름":["김","이","박","최"],"국어":[90,85,78,92],"수학":[88,95,80,91],"정보":[96,89,85,98],"과학":[84,90,87,93]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
22chart = SubjectScoreBarChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
23print(chart.average_scores())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
24chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

2. 월별 매출 선그래프

import pandas as pd
import matplotlib.pyplot as plt

class MonthlySalesLineChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def draw(self):
        plt.figure(figsize=(8, 5))
        plt.plot(self.df["월"], self.df["매출"], marker="o")
        plt.title("월별 매출 변화")
        plt.xlabel("월")
        plt.ylabel("매출")
        plt.grid(True)
        plt.show()

data = {"월":["1월","2월","3월","4월","5월"],"매출":[120,150,130,180,210]}
chart = MonthlySalesLineChart(data)
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class MonthlySalesLineChart:MonthlySalesLineChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
10 plt.plot(self.df["월"], self.df["매출"], marker="o")선그래프를 그립니다. 시간에 따른 변화나 순서가 있는 데이터를 표현할 때 사용합니다.
11 plt.title("월별 매출 변화")그래프의 제목을 설정합니다.
12 plt.xlabel("월")x축 이름을 설정합니다.
13 plt.ylabel("매출")y축 이름을 설정합니다.
14 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
15 plt.show()완성된 그래프를 화면에 표시합니다.
16 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
17data = {"월":["1월","2월","3월","4월","5월"],"매출":[120,150,130,180,210]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
18chart = MonthlySalesLineChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
19chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

3. 공부 시간과 점수 산점도

import pandas as pd
import matplotlib.pyplot as plt

class StudyScatterPlot:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def correlation(self):
        return self.df["공부시간"].corr(self.df["점수"])

    def draw(self):
        plt.figure(figsize=(8, 5))
        plt.scatter(self.df["공부시간"], self.df["점수"])
        plt.title("공부 시간과 점수의 관계")
        plt.xlabel("공부 시간")
        plt.ylabel("점수")
        plt.grid(True)
        plt.show()

data = {"공부시간":[1,2,3,4,5,6],"점수":[55,60,68,75,84,92]}
plot = StudyScatterPlot(data)
print("상관계수:", plot.correlation())
plot.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class StudyScatterPlot:StudyScatterPlot라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def correlation(self):correlation라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df["공부시간"].corr(self.df["점수"])corr()로 두 변수 사이의 상관계수를 계산합니다. 값이 1에 가까울수록 양의 관계가 강합니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
13 plt.scatter(self.df["공부시간"], self.df["점수"])산점도를 그립니다. 두 숫자 변수 사이의 관계를 점으로 표현합니다.
14 plt.title("공부 시간과 점수의 관계")그래프의 제목을 설정합니다.
15 plt.xlabel("공부 시간")x축 이름을 설정합니다.
16 plt.ylabel("점수")y축 이름을 설정합니다.
17 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
18 plt.show()완성된 그래프를 화면에 표시합니다.
19 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
20data = {"공부시간":[1,2,3,4,5,6],"점수":[55,60,68,75,84,92]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
21plot = StudyScatterPlot(data)plot 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
22print("상관계수:", plot.correlation())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
23plot.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

4. 점수 분포 히스토그램

import pandas as pd
import matplotlib.pyplot as plt

class ScoreHistogram:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def mean_score(self):
        return self.df["점수"].mean()

    def draw(self):
        plt.figure(figsize=(8, 5))
        plt.hist(self.df["점수"], bins=5)
        plt.title("점수 분포")
        plt.xlabel("점수 구간")
        plt.ylabel("학생 수")
        plt.show()

data = {"점수":[55,62,70,71,75,80,82,85,88,91,93,95]}
hist = ScoreHistogram(data)
print("평균:", hist.mean_score())
hist.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class ScoreHistogram:ScoreHistogram라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def mean_score(self):mean_score라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df["점수"].mean()mean()으로 평균을 계산하여 반환합니다. 숫자 열의 대표값을 구할 때 사용합니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
13 plt.hist(self.df["점수"], bins=5)히스토그램을 그립니다. 값이 어떤 구간에 많이 분포하는지 확인할 때 사용합니다.
14 plt.title("점수 분포")그래프의 제목을 설정합니다.
15 plt.xlabel("점수 구간")x축 이름을 설정합니다.
16 plt.ylabel("학생 수")y축 이름을 설정합니다.
17 plt.show()완성된 그래프를 화면에 표시합니다.
18 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
19data = {"점수":[55,62,70,71,75,80,82,85,88,91,93,95]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
20hist = ScoreHistogram(data)hist 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
21print("평균:", hist.mean_score())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
22hist.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

5. 용돈 사용 비율 원그래프

import pandas as pd
import matplotlib.pyplot as plt

class AllowancePieChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def percentage_table(self):
        total = self.df["금액"].sum()
        self.df["비율"] = self.df["금액"] / total * 100
        return self.df

    def draw(self):
        plt.figure(figsize=(7, 7))
        plt.pie(self.df["금액"], labels=self.df["항목"], autopct="%1.1f%%")
        plt.title("용돈 사용 비율")
        plt.show()

data = {"항목":["교통","식비","문화","저축"],"금액":[20000,40000,15000,25000]}
pie = AllowancePieChart(data)
print(pie.percentage_table())
pie.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class AllowancePieChart:AllowancePieChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def percentage_table(self):percentage_table라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 total = self.df["금액"].sum()total 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
10 self.df["비율"] = self.df["금액"] / total * 100이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.
11 return self.df현재 객체 자신을 반환합니다. 메서드 체이닝처럼 다음 작업을 이어서 할 수 있게 합니다.
12 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
13 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
14 plt.figure(figsize=(7, 7))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
15 plt.pie(self.df["금액"], labels=self.df["항목"], autopct="%1.1f%%")원그래프를 그립니다. 전체에서 각 항목이 차지하는 비율을 보여줍니다.
16 plt.title("용돈 사용 비율")그래프의 제목을 설정합니다.
17 plt.show()완성된 그래프를 화면에 표시합니다.
18 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
19data = {"항목":["교통","식비","문화","저축"],"금액":[20000,40000,15000,25000]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
20pie = AllowancePieChart(data)pie 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
21print(pie.percentage_table())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
22pie.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

6. 반별 평균 점수 비교

import pandas as pd
import matplotlib.pyplot as plt

class ClassAverageChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def class_average(self):
        return self.df.groupby("반")["점수"].mean()

    def draw(self):
        avg = self.class_average()
        plt.figure(figsize=(8, 5))
        plt.bar(avg.index, avg.values)
        plt.title("반별 평균 점수")
        plt.xlabel("반")
        plt.ylabel("평균 점수")
        plt.ylim(0, 100)
        plt.show()

data = {"반":["A","A","B","B","C","C"],"점수":[90,82,77,91,88,95]}
chart = ClassAverageChart(data)
print(chart.class_average())
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class ClassAverageChart:ClassAverageChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def class_average(self):class_average라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df.groupby("반")["점수"].mean()mean()으로 평균을 계산하여 반환합니다. 숫자 열의 대표값을 구할 때 사용합니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 avg = self.class_average()avg 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
13 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.bar(avg.index, avg.values)막대그래프를 그립니다. 범주별 크기를 비교할 때 사용합니다.
15 plt.title("반별 평균 점수")그래프의 제목을 설정합니다.
16 plt.xlabel("반")x축 이름을 설정합니다.
17 plt.ylabel("평균 점수")y축 이름을 설정합니다.
18 plt.ylim(0, 100)y축 값의 표시 범위를 설정합니다.
19 plt.show()완성된 그래프를 화면에 표시합니다.
20 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
21data = {"반":["A","A","B","B","C","C"],"점수":[90,82,77,91,88,95]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
22chart = ClassAverageChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
23print(chart.class_average())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
24chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

7. 지역별 제품 매출 누적 막대

import pandas as pd
import matplotlib.pyplot as plt

class StackedSalesChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def pivot_sales(self):
        return pd.pivot_table(self.df, values="매출", index="지역", columns="제품", aggfunc="sum", fill_value=0)

    def draw(self):
        pivot = self.pivot_sales()
        pivot.plot(kind="bar", stacked=True, figsize=(8, 5))
        plt.title("지역별 제품 매출 구성")
        plt.xlabel("지역")
        plt.ylabel("매출")
        plt.legend(title="제품")
        plt.show()

data = {"지역":["서울","서울","부산","부산","대구","대구"],"제품":["A","B","A","B","A","B"],"매출":[100,150,80,120,90,60]}
chart = StackedSalesChart(data)
print(chart.pivot_sales())
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class StackedSalesChart:StackedSalesChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def pivot_sales(self):pivot_sales라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return pd.pivot_table(self.df, values="매출", index="지역", columns="제품", aggfunc="sum", fill_value=0)pivot_table()로 데이터를 행과 열 기준으로 재구성합니다. 지역별·제품별 매출표처럼 교차표를 만들 때 유용합니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 pivot = self.pivot_sales()pivot 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
13 pivot.plot(kind="bar", stacked=True, figsize=(8, 5))DataFrame의 plot() 기능으로 누적 막대그래프를 그립니다. stacked=True는 항목을 쌓아서 표시한다는 뜻입니다.
14 plt.title("지역별 제품 매출 구성")그래프의 제목을 설정합니다.
15 plt.xlabel("지역")x축 이름을 설정합니다.
16 plt.ylabel("매출")y축 이름을 설정합니다.
17 plt.legend(title="제품")그래프 범례를 표시합니다. 여러 데이터가 있을 때 무엇을 의미하는지 알려 줍니다.
18 plt.show()완성된 그래프를 화면에 표시합니다.
19 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
20data = {"지역":["서울","서울","부산","부산","대구","대구"],"제품":["A","B","A","B","A","B"],"매출":[100,150,80,120,90,60]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
21chart = StackedSalesChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
22print(chart.pivot_sales())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
23chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

8. 날짜별 방문자 시계열

import pandas as pd
import matplotlib.pyplot as plt

class VisitorTimeSeries:
    def __init__(self, data):
        self.df = pd.DataFrame(data)
        self.df["날짜"] = pd.to_datetime(self.df["날짜"])

    def draw(self):
        plt.figure(figsize=(9, 5))
        plt.plot(self.df["날짜"], self.df["방문자"], marker="o")
        plt.title("날짜별 방문자 수")
        plt.xlabel("날짜")
        plt.ylabel("방문자 수")
        plt.grid(True)
        plt.xticks(rotation=30)
        plt.show()

data = {"날짜":["2026-01-01","2026-01-02","2026-01-03","2026-01-04"],"방문자":[120,150,170,160]}
ts = VisitorTimeSeries(data)
ts.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class VisitorTimeSeries:VisitorTimeSeries라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 self.df["날짜"] = pd.to_datetime(self.df["날짜"])문자열로 된 날짜를 Pandas 날짜 자료형으로 변환합니다. 시계열 그래프와 날짜별 집계에 필요합니다.
8 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
9 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
10 plt.figure(figsize=(9, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
11 plt.plot(self.df["날짜"], self.df["방문자"], marker="o")선그래프를 그립니다. 시간에 따른 변화나 순서가 있는 데이터를 표현할 때 사용합니다.
12 plt.title("날짜별 방문자 수")그래프의 제목을 설정합니다.
13 plt.xlabel("날짜")x축 이름을 설정합니다.
14 plt.ylabel("방문자 수")y축 이름을 설정합니다.
15 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
16 plt.xticks(rotation=30)x축 눈금의 위치나 이름, 회전 각도를 설정합니다.
17 plt.show()완성된 그래프를 화면에 표시합니다.
18 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
19data = {"날짜":["2026-01-01","2026-01-02","2026-01-03","2026-01-04"],"방문자":[120,150,170,160]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
20ts = VisitorTimeSeries(data)ts 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
21ts.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

9. 월별 매출 집계 그래프

import pandas as pd
import matplotlib.pyplot as plt

class MonthlySalesAggregator:
    def __init__(self, data):
        self.df = pd.DataFrame(data)
        self.df["날짜"] = pd.to_datetime(self.df["날짜"])

    def monthly_sum(self):
        temp = self.df.set_index("날짜")
        return temp["매출"].resample("M").sum()

    def draw(self):
        monthly = self.monthly_sum()
        plt.figure(figsize=(8, 5))
        plt.plot(monthly.index, monthly.values, marker="o")
        plt.title("월별 매출 합계")
        plt.xlabel("월")
        plt.ylabel("매출 합계")
        plt.grid(True)
        plt.show()

data = {"날짜":["2026-01-01","2026-01-15","2026-02-01","2026-02-20"],"매출":[100,150,80,120]}
chart = MonthlySalesAggregator(data)
print(chart.monthly_sum())
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class MonthlySalesAggregator:MonthlySalesAggregator라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 self.df["날짜"] = pd.to_datetime(self.df["날짜"])문자열로 된 날짜를 Pandas 날짜 자료형으로 변환합니다. 시계열 그래프와 날짜별 집계에 필요합니다.
8 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
9 def monthly_sum(self):monthly_sum라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
10 temp = self.df.set_index("날짜")특정 열을 DataFrame의 인덱스로 설정합니다. 날짜를 인덱스로 만들면 resample 같은 시계열 기능을 사용할 수 있습니다.
11 return temp["매출"].resample("M").sum()sum()으로 합계를 계산하여 반환합니다.
12 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
13 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
14 monthly = self.monthly_sum()monthly 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
15 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
16 plt.plot(monthly.index, monthly.values, marker="o")선그래프를 그립니다. 시간에 따른 변화나 순서가 있는 데이터를 표현할 때 사용합니다.
17 plt.title("월별 매출 합계")그래프의 제목을 설정합니다.
18 plt.xlabel("월")x축 이름을 설정합니다.
19 plt.ylabel("매출 합계")y축 이름을 설정합니다.
20 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
21 plt.show()완성된 그래프를 화면에 표시합니다.
22 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
23data = {"날짜":["2026-01-01","2026-01-15","2026-02-01","2026-02-20"],"매출":[100,150,80,120]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
24chart = MonthlySalesAggregator(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
25print(chart.monthly_sum())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
26chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

10. 결측치 개수 시각화

import pandas as pd
import matplotlib.pyplot as plt

class MissingValueVisualization:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def missing_count(self):
        return self.df.isna().sum()

    def draw_missing(self):
        counts = self.missing_count()
        plt.figure(figsize=(8, 5))
        plt.bar(counts.index, counts.values)
        plt.title("열별 결측치 개수")
        plt.xlabel("열")
        plt.ylabel("결측치 개수")
        plt.show()

data = {"이름":["김","이","박","최"],"점수":[90,None,85,None],"출석":[10,9,None,8]}
viz = MissingValueVisualization(data)
print(viz.missing_count())
viz.draw_missing()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class MissingValueVisualization:MissingValueVisualization라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def missing_count(self):missing_count라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df.isna().sum()sum()으로 합계를 계산하여 반환합니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw_missing(self):draw_missing라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 counts = self.missing_count()counts 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
13 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.bar(counts.index, counts.values)막대그래프를 그립니다. 범주별 크기를 비교할 때 사용합니다.
15 plt.title("열별 결측치 개수")그래프의 제목을 설정합니다.
16 plt.xlabel("열")x축 이름을 설정합니다.
17 plt.ylabel("결측치 개수")y축 이름을 설정합니다.
18 plt.show()완성된 그래프를 화면에 표시합니다.
19 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
20data = {"이름":["김","이","박","최"],"점수":[90,None,85,None],"출석":[10,9,None,8]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
21viz = MissingValueVisualization(data)viz 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
22print(viz.missing_count())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
23viz.draw_missing()이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.

11. 반별 점수 박스플롯

import pandas as pd
import matplotlib.pyplot as plt

class ClassBoxPlot:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def draw(self):
        groups = [group["점수"].values for _, group in self.df.groupby("반")]
        labels = list(self.df["반"].unique())
        plt.figure(figsize=(8, 5))
        plt.boxplot(groups, labels=labels)
        plt.title("반별 점수 분포")
        plt.xlabel("반")
        plt.ylabel("점수")
        plt.grid(True)
        plt.show()

data = {"반":["A","A","A","B","B","B"],"점수":[90,85,88,70,95,78]}
box = ClassBoxPlot(data)
box.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class ClassBoxPlot:ClassBoxPlot라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 groups = [group["점수"].values for _, group in self.df.groupby("반")]groups 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
10 labels = list(self.df["반"].unique())labels 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
11 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
12 plt.boxplot(groups, labels=labels)박스플롯을 그립니다. 중앙값, 사분위수, 이상값 등 분포 특징을 한눈에 보여줍니다.
13 plt.title("반별 점수 분포")그래프의 제목을 설정합니다.
14 plt.xlabel("반")x축 이름을 설정합니다.
15 plt.ylabel("점수")y축 이름을 설정합니다.
16 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
17 plt.show()완성된 그래프를 화면에 표시합니다.
18 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
19data = {"반":["A","A","A","B","B","B"],"점수":[90,85,88,70,95,78]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
20box = ClassBoxPlot(data)box 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
21box.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

12. 상관행렬 히트맵

import pandas as pd
import matplotlib.pyplot as plt

class CorrelationHeatmap:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def correlation_matrix(self):
        return self.df.corr(numeric_only=True)

    def draw(self):
        corr = self.correlation_matrix()
        plt.figure(figsize=(7, 6))
        plt.imshow(corr)
        plt.xticks(range(len(corr.columns)), corr.columns)
        plt.yticks(range(len(corr.index)), corr.index)
        plt.colorbar()
        plt.title("상관행렬 히트맵")
        plt.show()

data = {"공부시간":[1,2,3,4,5],"점수":[55,65,70,85,90],"결석":[5,4,3,1,0]}
heatmap = CorrelationHeatmap(data)
print(heatmap.correlation_matrix())
heatmap.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class CorrelationHeatmap:CorrelationHeatmap라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def correlation_matrix(self):correlation_matrix라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df.corr(numeric_only=True)corr()로 두 변수 사이의 상관계수를 계산합니다. 값이 1에 가까울수록 양의 관계가 강합니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 corr = self.correlation_matrix()corr 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
13 plt.figure(figsize=(7, 6))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.imshow(corr)행렬 형태의 값을 색으로 표현합니다. 상관행렬 히트맵을 만들 때 사용합니다.
15 plt.xticks(range(len(corr.columns)), corr.columns)x축 눈금의 위치나 이름, 회전 각도를 설정합니다.
16 plt.yticks(range(len(corr.index)), corr.index)y축 눈금의 위치나 이름을 설정합니다.
17 plt.colorbar()색이 어떤 값 범위를 의미하는지 보여주는 색상 막대를 추가합니다.
18 plt.title("상관행렬 히트맵")그래프의 제목을 설정합니다.
19 plt.show()완성된 그래프를 화면에 표시합니다.
20 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
21data = {"공부시간":[1,2,3,4,5],"점수":[55,65,70,85,90],"결석":[5,4,3,1,0]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
22heatmap = CorrelationHeatmap(data)heatmap 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
23print(heatmap.correlation_matrix())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
24heatmap.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

13. Top N 제품 매출

import pandas as pd
import matplotlib.pyplot as plt

class TopNBarChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def top_n(self, n=3):
        return self.df.sort_values("매출", ascending=False).head(n)

    def draw(self, n=3):
        top = self.top_n(n)
        plt.figure(figsize=(8, 5))
        plt.bar(top["제품"], top["매출"])
        plt.title(f"상위 {n}개 제품 매출")
        plt.xlabel("제품")
        plt.ylabel("매출")
        plt.show()

data = {"제품":["A","B","C","D","E"],"매출":[120,300,180,90,250]}
chart = TopNBarChart(data)
print(chart.top_n(3))
chart.draw(3)

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class TopNBarChart:TopNBarChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def top_n(self, n=3):top_n라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df.sort_values("매출", ascending=False).head(n)sort_values()로 특정 열 기준으로 데이터를 정렬합니다. ascending=False는 큰 값부터 정렬한다는 뜻입니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self, n=3):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 top = self.top_n(n)top 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
13 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.bar(top["제품"], top["매출"])막대그래프를 그립니다. 범주별 크기를 비교할 때 사용합니다.
15 plt.title(f"상위 {n}개 제품 매출")그래프의 제목을 설정합니다.
16 plt.xlabel("제품")x축 이름을 설정합니다.
17 plt.ylabel("매출")y축 이름을 설정합니다.
18 plt.show()완성된 그래프를 화면에 표시합니다.
19 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
20data = {"제품":["A","B","C","D","E"],"매출":[120,300,180,90,250]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
21chart = TopNBarChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
22print(chart.top_n(3))괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
23chart.draw(3)객체의 draw 메서드를 호출하여 그래프를 그립니다.

14. 범주별 빈도 그래프

import pandas as pd
import matplotlib.pyplot as plt

class CategoryCountChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def counts(self):
        return self.df["선호과목"].value_counts()

    def draw(self):
        counts = self.counts()
        plt.figure(figsize=(8, 5))
        plt.bar(counts.index, counts.values)
        plt.title("선호 과목 빈도")
        plt.xlabel("과목")
        plt.ylabel("학생 수")
        plt.show()

data = {"선호과목":["정보","수학","정보","과학","정보","수학"]}
chart = CategoryCountChart(data)
print(chart.counts())
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class CategoryCountChart:CategoryCountChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def counts(self):counts라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 return self.df["선호과목"].value_counts()value_counts()는 같은 값이 몇 번 나왔는지 빈도를 계산합니다. 범주형 데이터 분석에 자주 사용됩니다.
10 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
11 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
12 counts = self.counts()counts 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
13 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.bar(counts.index, counts.values)막대그래프를 그립니다. 범주별 크기를 비교할 때 사용합니다.
15 plt.title("선호 과목 빈도")그래프의 제목을 설정합니다.
16 plt.xlabel("과목")x축 이름을 설정합니다.
17 plt.ylabel("학생 수")y축 이름을 설정합니다.
18 plt.show()완성된 그래프를 화면에 표시합니다.
19 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
20data = {"선호과목":["정보","수학","정보","과학","정보","수학"]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
21chart = CategoryCountChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
22print(chart.counts())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
23chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

15. 이중 축 그래프

import pandas as pd
import matplotlib.pyplot as plt

class DualAxisChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def draw(self):
        fig, ax1 = plt.subplots(figsize=(9, 5))
        ax1.plot(self.df["월"], self.df["매출"], marker="o")
        ax1.set_xlabel("월")
        ax1.set_ylabel("매출")
        ax2 = ax1.twinx()
        ax2.bar(self.df["월"], self.df["광고비"], alpha=0.3)
        ax2.set_ylabel("광고비")
        plt.title("월별 매출과 광고비")
        plt.show()

data = {"월":["1월","2월","3월","4월"],"매출":[120,150,180,210],"광고비":[20,35,45,50]}
chart = DualAxisChart(data)
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class DualAxisChart:DualAxisChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 fig, ax1 = plt.subplots(figsize=(9, 5))Figure와 첫 번째 축 ax1을 만듭니다. 여러 축을 사용할 때 객체지향 방식으로 그래프를 제어합니다.
10 ax1.plot(self.df["월"], self.df["매출"], marker="o")이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.
11 ax1.set_xlabel("월")해당 축의 x축 이름을 설정합니다.
12 ax1.set_ylabel("매출")해당 축의 y축 이름을 설정합니다.
13 ax2 = ax1.twinx()기존 x축은 공유하고 y축을 하나 더 만듭니다. 단위가 다른 두 데이터를 함께 표시할 때 사용합니다.
14 ax2.bar(self.df["월"], self.df["광고비"], alpha=0.3)이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.
15 ax2.set_ylabel("광고비")해당 축의 y축 이름을 설정합니다.
16 plt.title("월별 매출과 광고비")그래프의 제목을 설정합니다.
17 plt.show()완성된 그래프를 화면에 표시합니다.
18 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
19data = {"월":["1월","2월","3월","4월"],"매출":[120,150,180,210],"광고비":[20,35,45,50]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
20chart = DualAxisChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
21chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

16. 이동평균 그래프

import pandas as pd
import matplotlib.pyplot as plt

class MovingAverageChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def add_moving_average(self, window=3):
        self.df["이동평균"] = self.df["값"].rolling(window=window).mean()
        return self.df

    def draw(self):
        plt.figure(figsize=(9, 5))
        plt.plot(self.df["날짜"], self.df["값"], marker="o", label="원자료")
        plt.plot(self.df["날짜"], self.df["이동평균"], marker="o", label="이동평균")
        plt.title("원자료와 이동평균")
        plt.legend()
        plt.grid(True)
        plt.show()

data = {"날짜":["1일","2일","3일","4일","5일","6일"],"값":[10,15,13,20,18,25]}
chart = MovingAverageChart(data)
print(chart.add_moving_average(3))
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class MovingAverageChart:MovingAverageChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def add_moving_average(self, window=3):add_moving_average라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 self.df["이동평균"] = self.df["값"].rolling(window=window).mean()rolling()은 일정한 창(window)을 움직이며 계산합니다. 이동평균처럼 추세를 부드럽게 볼 때 사용합니다.
10 return self.df현재 객체 자신을 반환합니다. 메서드 체이닝처럼 다음 작업을 이어서 할 수 있게 합니다.
11 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
12 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
13 plt.figure(figsize=(9, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.plot(self.df["날짜"], self.df["값"], marker="o", label="원자료")선그래프를 그립니다. 시간에 따른 변화나 순서가 있는 데이터를 표현할 때 사용합니다.
15 plt.plot(self.df["날짜"], self.df["이동평균"], marker="o", label="이동평균")선그래프를 그립니다. 시간에 따른 변화나 순서가 있는 데이터를 표현할 때 사용합니다.
16 plt.title("원자료와 이동평균")그래프의 제목을 설정합니다.
17 plt.legend()그래프 범례를 표시합니다. 여러 데이터가 있을 때 무엇을 의미하는지 알려 줍니다.
18 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
19 plt.show()완성된 그래프를 화면에 표시합니다.
20 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
21data = {"날짜":["1일","2일","3일","4일","5일","6일"],"값":[10,15,13,20,18,25]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
22chart = MovingAverageChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
23print(chart.add_moving_average(3))괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
24chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

17. 누적합 그래프

import pandas as pd
import matplotlib.pyplot as plt

class CumulativeSumChart:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def add_cumsum(self):
        self.df["누적매출"] = self.df["매출"].cumsum()
        return self.df

    def draw(self):
        plt.figure(figsize=(8, 5))
        plt.plot(self.df["월"], self.df["누적매출"], marker="o")
        plt.title("월별 누적 매출")
        plt.xlabel("월")
        plt.ylabel("누적 매출")
        plt.grid(True)
        plt.show()

data = {"월":["1월","2월","3월","4월"],"매출":[100,120,90,150]}
chart = CumulativeSumChart(data)
print(chart.add_cumsum())
chart.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class CumulativeSumChart:CumulativeSumChart라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def add_cumsum(self):add_cumsum라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 self.df["누적매출"] = self.df["매출"].cumsum()cumsum()은 누적합을 계산합니다. 시간이 지남에 따라 값이 얼마나 쌓였는지 볼 수 있습니다.
10 return self.df현재 객체 자신을 반환합니다. 메서드 체이닝처럼 다음 작업을 이어서 할 수 있게 합니다.
11 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
12 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
13 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
14 plt.plot(self.df["월"], self.df["누적매출"], marker="o")선그래프를 그립니다. 시간에 따른 변화나 순서가 있는 데이터를 표현할 때 사용합니다.
15 plt.title("월별 누적 매출")그래프의 제목을 설정합니다.
16 plt.xlabel("월")x축 이름을 설정합니다.
17 plt.ylabel("누적 매출")y축 이름을 설정합니다.
18 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
19 plt.show()완성된 그래프를 화면에 표시합니다.
20 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
21data = {"월":["1월","2월","3월","4월"],"매출":[100,120,90,150]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
22chart = CumulativeSumChart(data)chart 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
23print(chart.add_cumsum())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
24chart.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

18. 조건별 산점도

import pandas as pd
import matplotlib.pyplot as plt

class ConditionalScatter:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def add_level(self):
        self.df["수준"] = self.df["점수"].apply(lambda x: "높음" if x >= 80 else "낮음")
        return self.df

    def draw(self):
        self.add_level()
        plt.figure(figsize=(8, 5))
        for level, group in self.df.groupby("수준"):
            plt.scatter(group["공부시간"], group["점수"], label=level)
        plt.title("공부 시간과 점수: 수준별 표시")
        plt.xlabel("공부 시간")
        plt.ylabel("점수")
        plt.legend()
        plt.grid(True)
        plt.show()

data = {"공부시간":[1,2,3,4,5,6],"점수":[55,62,75,83,88,95]}
plot = ConditionalScatter(data)
print(plot.add_level())
plot.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class ConditionalScatter:ConditionalScatter라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def add_level(self):add_level라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 self.df["수준"] = self.df["점수"].apply(lambda x: "높음" if x >= 80 else "낮음")apply()는 각 값에 함수를 적용합니다. lambda는 짧은 익명 함수이며, 조건에 따라 새로운 값을 만들 때 사용합니다.
10 return self.df현재 객체 자신을 반환합니다. 메서드 체이닝처럼 다음 작업을 이어서 할 수 있게 합니다.
11 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
12 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
13 self.add_level()객체의 데이터 처리 메서드를 호출합니다. 새로운 열을 추가하거나 계산 결과를 확인합니다.
14 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
15 for level, group in self.df.groupby("수준"):groupby로 나눈 그룹을 하나씩 반복하면서 각 그룹에 대해 그래프를 그립니다.
16 plt.scatter(group["공부시간"], group["점수"], label=level)산점도를 그립니다. 두 숫자 변수 사이의 관계를 점으로 표현합니다.
17 plt.title("공부 시간과 점수: 수준별 표시")그래프의 제목을 설정합니다.
18 plt.xlabel("공부 시간")x축 이름을 설정합니다.
19 plt.ylabel("점수")y축 이름을 설정합니다.
20 plt.legend()그래프 범례를 표시합니다. 여러 데이터가 있을 때 무엇을 의미하는지 알려 줍니다.
21 plt.grid(True)그래프에 격자선을 표시하여 값을 읽기 쉽게 만듭니다.
22 plt.show()완성된 그래프를 화면에 표시합니다.
23 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
24data = {"공부시간":[1,2,3,4,5,6],"점수":[55,62,75,83,88,95]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
25plot = ConditionalScatter(data)plot 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
26print(plot.add_level())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
27plot.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

19. 미니 대시보드

import pandas as pd
import matplotlib.pyplot as plt

class MiniDashboard:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def draw(self):
        fig, axes = plt.subplots(1, 2, figsize=(12, 5))
        axes[0].bar(self.df["제품"], self.df["매출"])
        axes[0].set_title("제품별 매출")
        axes[1].plot(self.df["제품"], self.df["이익"], marker="o")
        axes[1].set_title("제품별 이익")
        axes[1].grid(True)
        plt.tight_layout()
        plt.show()

data = {"제품":["A","B","C","D"],"매출":[100,150,90,200],"이익":[20,35,10,50]}
dashboard = MiniDashboard(data)
dashboard.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class MiniDashboard:MiniDashboard라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 fig, axes = plt.subplots(1, 2, figsize=(12, 5))이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.
10 axes[0].bar(self.df["제품"], self.df["매출"])이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.
11 axes[0].set_title("제품별 매출")해당 그래프 영역의 제목을 설정합니다.
12 axes[1].plot(self.df["제품"], self.df["이익"], marker="o")이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.
13 axes[1].set_title("제품별 이익")해당 그래프 영역의 제목을 설정합니다.
14 axes[1].grid(True)이 줄은 데이터 분석, 계산, 그래프 설정 또는 객체 사용을 위한 코드입니다. 앞뒤 줄과 함께 실행되어 전체 분석 흐름을 완성합니다.
15 plt.tight_layout()그래프 요소들이 겹치지 않도록 배치를 자동 조정합니다.
16 plt.show()완성된 그래프를 화면에 표시합니다.
17 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
18data = {"제품":["A","B","C","D"],"매출":[100,150,90,200],"이익":[20,35,10,50]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
19dashboard = MiniDashboard(data)dashboard 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
20dashboard.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

20. 종합 분석 리포트

import pandas as pd
import matplotlib.pyplot as plt

class SalesVisualizationReport:
    def __init__(self, data):
        self.df = pd.DataFrame(data)

    def clean(self):
        self.df["지역"] = self.df["지역"].str.strip()
        self.df["매출"] = self.df["매출"].fillna(self.df["매출"].mean())
        return self

    def summary(self):
        return self.df.groupby("지역")["매출"].sum()

    def draw(self):
        summary = self.summary()
        plt.figure(figsize=(8, 5))
        plt.bar(summary.index, summary.values)
        plt.title("지역별 총매출")
        plt.xlabel("지역")
        plt.ylabel("총매출")
        plt.show()

    def report(self):
        total = self.df["매출"].sum()
        best_region = self.summary().idxmax()
        return f"전체 매출은 {total:.1f}, 최고 지역은 {best_region}입니다."

data = {"지역":["서울 ","서울","부산","부산","대구"],"매출":[120,None,80,150,90]}
report = SalesVisualizationReport(data)
report.clean()
print(report.summary())
print(report.report())
report.draw()

🔍 초보자용 한 줄씩 꼼꼼한 코드 상세 설명

코드상세 설명
1import pandas as pdPandas 라이브러리를 pd라는 짧은 이름으로 불러옵니다. 표 형태 데이터인 DataFrame을 만들고 분석할 때 사용합니다.
2import matplotlib.pyplot as pltMatplotlib의 pyplot 기능을 plt라는 이름으로 불러옵니다. 그래프를 그리고 화면에 보여줄 때 사용합니다.
3 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
4class SalesVisualizationReport:SalesVisualizationReport라는 클래스를 정의합니다. 데이터 분석과 그래프 그리기 기능을 하나의 객체로 묶기 위한 설계도입니다.
5 def __init__(self, data):__init__은 생성자입니다. 객체가 만들어질 때 자동으로 실행되어 초기 데이터를 준비합니다.
6 self.df = pd.DataFrame(data)입력받은 data를 Pandas DataFrame으로 변환하여 self.df에 저장합니다. 이후 모든 분석과 그래프는 이 표 데이터를 기준으로 진행됩니다.
7 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
8 def clean(self):clean라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
9 self.df["지역"] = self.df["지역"].str.strip()문자열의 양쪽 공백을 제거합니다. '서울 '과 '서울'을 같은 값으로 처리하기 위해 사용합니다.
10 self.df["매출"] = self.df["매출"].fillna(self.df["매출"].mean())fillna()는 비어 있는 결측값을 다른 값으로 채웁니다. 여기서는 평균값으로 결측 매출을 대체합니다.
11 return self현재 객체 자신을 반환합니다. 메서드 체이닝처럼 다음 작업을 이어서 할 수 있게 합니다.
12 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
13 def summary(self):summary라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
14 return self.df.groupby("지역")["매출"].sum()sum()으로 합계를 계산하여 반환합니다.
15 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
16 def draw(self):draw라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
17 summary = self.summary()summary 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
18 plt.figure(figsize=(8, 5))새 그래프 영역을 만듭니다. figsize는 그래프의 가로와 세로 크기를 지정합니다.
19 plt.bar(summary.index, summary.values)막대그래프를 그립니다. 범주별 크기를 비교할 때 사용합니다.
20 plt.title("지역별 총매출")그래프의 제목을 설정합니다.
21 plt.xlabel("지역")x축 이름을 설정합니다.
22 plt.ylabel("총매출")y축 이름을 설정합니다.
23 plt.show()완성된 그래프를 화면에 표시합니다.
24 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
25 def report(self):report라는 메서드를 정의합니다. 클래스 안에서 특정 작업을 수행하는 함수입니다.
26 total = self.df["매출"].sum()total 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
27 best_region = self.summary().idxmax()best_region 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
28 return f"전체 매출은 {total:.1f}, 최고 지역은 {best_region}입니다."f-string을 사용해 변수 값을 문장 안에 넣어 문자열을 반환합니다.
29 빈 줄입니다. 코드를 읽기 쉽게 구분하기 위한 줄입니다.
30data = {"지역":["서울 ","서울","부산","부산","대구"],"매출":[120,None,80,150,90]}분석에 사용할 원본 데이터를 딕셔너리 형태로 만듭니다. 각 키는 열 이름, 값 리스트는 열 데이터가 됩니다.
31report = SalesVisualizationReport(data)report 변수에 객체나 계산 결과를 저장합니다. 이후 이 변수를 통해 메서드를 호출하거나 데이터를 사용할 수 있습니다.
32report.clean()데이터 정제 메서드를 실행합니다. 공백 제거와 결측값 처리 같은 전처리를 수행합니다.
33print(report.summary())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
34print(report.report())괄호 안의 값을 화면에 출력합니다. 분석 결과나 표를 확인하기 위해 사용합니다.
35report.draw()객체의 draw 메서드를 호출하여 그래프를 그립니다.

🏁 최종 정리

데이터 준비
→ 클래스 생성
→ DataFrame 변환
→ 분석 메서드 실행
→ Matplotlib 그래프 그리기
→ 결과 출력과 시각화
→ 대시보드와 자동 리포트로 확장

한 줄씩 코드를 이해하면, 새로운 데이터가 들어와도 클래스 구조를 조금만 바꾸어 다양한 시각화 프로그램을 만들 수 있습니다.