내일배움캠프

[본캠프] 데이터기반 QA/QC 부트캠프 15일차

min0jun 2026. 6. 1. 20:47

1. 오늘 학습 목표

- 데이터 시각화


2. 오늘 학습 한 내용

2-1. 데이터 시각화의 목적

  • 패턴 발견 및 이해
    : 데이터 시각화는 데이터 내의 숨겨진 패턴을 발견하고, 이해하는데 도움을 준다. 그래프나 차트를 통해 데이터의 특징을 시각적으로 파악할 수 있다.
  • 의사 결정 지원
    : 시각화는 복잡한 데이터를 이해하고 결정을 내리는 데에 도움을 준다. 시각화를 통해 정보를 명확하게 전달하여 의사 결정 과정을 지원한다.
  • 효과적인 커뮤니케이션
    : 시각화는 데이터 분석 결과를 다른 사람들과 공유하거나 설명할 때 유용하다. 데이터를 시각적으로 보여주면 이해하기 쉽고 기억하기 쉬운 형태로 전달할 수 있다.

 

처음에는 데이터 시각화가 단순히 그래프를 그리는 작업이라고 생각했다.
하지만 직접 배워보니 중요한 건 그래프 자체가 아니라, 데이터 속 흐름과 패턴을 더 쉽게 이해하도록 만드는 것이라는 점이었다.
표로만 보면 그냥 숫자의 나열처럼 보이던 데이터도 그래프로 바꾸면 어디가 증가하고 감소하는지, 어떤 값이 튀는지 훨씬 빠르게 파악할 수 있었다.

 

2-2. 그래프를 그리기 위한 도구

  • Matplotlib에서 plot()을 활용하는 법
import pandas as pd
import matplotlib.pyplot as plt

# 샘플 데이터프레임 생성
data = {
    'A': [1, 2, 3, 4, 5],
    'B': [5, 4, 3, 2, 1]
}
df = pd.DataFrame(data)

# 선 그래프 그리기
df.plot(x='A', y='B')
plt.show()

 

  • 스타일 설정하기
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')


plt.show()

 

  • 범례 추가하기
#1 label
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o', label='Data Series')

#2 legend
ax.legend(['Data Series'])


#1번 또는 2번 방법으로 범례를 추가할 수 있습니다.
plt.show()

 

  • 축, 제목 입력하기 | 텍스트 추가하기
#축, 제목 입력하기
ax.set_xlabel('X-axis Label')
ax.set_ylabel('Y-axis Label')
ax.set_title('Title of the Plot')

#텍스트 추가
ax.text(3, 3, 'Some Text', fontsize=12)

plt.show()

 

  • 그래프 키우기!
import matplotlib.pyplot as plt

# Figure 객체 생성 및 사이즈 설정
plt.figure(figsize=(8, 6))  # 가로 8인치, 세로 6인치



# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 그래프 그리기
plt.plot(x, y)

# 그래프 출력
plt.show()

 

처음에는 df.plot(x='A', y='B') 같은 코드가 그냥 정해진 문법처럼 느껴졌다. 그런데 그래프를 직접 확인해보니 “A를 기준으로 B가 어떻게 변하는지 보여주는 코드”라고 이해하면 되는 것이었다. 코드를 눈으로만 볼 때보다, 결과 그래프까지 같이 보니까 왜 이렇게 쓰는지 훨씬 잘 이해됐다.

 

2-3. 그래프의 유형

그래프 자료유형

그래프 종류가 생각보다 많아서 처음에는 “이걸 다 언제 구분해서 쓰지?”라는 생각이 들었다.
그런데 하나씩 정리해보니 그래프마다 잘 맞는 상황이 달랐다.
결국 중요한 건 그래프를 많이 아는 것보다, 내가 가진 데이터에 어떤 그래프가 가장 잘 맞는지 고르는 것이라는 생각이 들었다.
  • Line Plot(선 그래프)
import pandas as pd
import matplotlib.pyplot as plt

# 데이터프레임 생성
data = {'날짜': ['2023-01-01', '2023-01-02', '2023-01-03'],
        '값': [10, 15, 8]}
df = pd.DataFrame(data)

# '날짜'를 날짜 형식으로 변환
df['날짜'] = pd.to_datetime(df['날짜'])

# 선 그래프 작성
plt.plot(df['날짜'], df['값'])
plt.xlabel('날짜')
plt.ylabel('값')
plt.title('선 그래프 예시')
plt.show()

선 그래프

 

  • Bar Plot(막대 그래프)
# 데이터프레임 생성
data = {'도시': ['서울', '부산', '대구', '인천'],
        '인구': [990, 350, 250, 290]}
df = pd.DataFrame(data)

# 막대 그래프 작성
plt.bar(df['도시'], df['인구'])
plt.xlabel('도시')
plt.ylabel('인구')
plt.title('막대 그래프 예시')
plt.show()

바 그래프

 

  • Histogram
import matplotlib.pyplot as plt
import numpy as np

# 데이터 생성 (랜덤 데이터)
data = np.random.randn(1000)

# 히스토그램 그리기
plt.hist(data, bins=30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

히스토그램

 

더보기

그래프 비교

  • Pie Chart(원 그래프)
import matplotlib.pyplot as plt

# 데이터 생성
sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']

# 원 그래프 그리기
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Pie Chart')
plt.show()

원 그래프

 

  • Box Plot(박스 플롯)
import matplotlib.pyplot as plt
import numpy as np

# 데이터 생성
np.random.seed(10)
data = [np.random.normal(0, std, 100) for std in range(1, 4)]

# 박스 플롯 그리기
plt.boxplot(data)
plt.xlabel('Data')
plt.ylabel('Value')
plt.title('Box Plot')
plt.show()

박스 플롯

 

박스 플롯 구성 요소

 

  • Scatter Plot (산점도)
import matplotlib.pyplot as plt

# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# 산점도 그리기
plt.scatter(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Scatter Plot')
plt.show()

산점도

더보기
⁉️ 상관관계란?
상관관계 확인하기 양의 상관관계: 산점도에서 점들이 오른쪽 위 방향으로 일직선으로 분포되어 있을 때를 말합니다. 즉, 하나의 변수가 증가할 때 다른 변수도 증가하는 경향이 있습니다. 음의 상관관계: 산점도에서 점들이 왼쪽 위 방향으로 일직선으로 분포되어 있을 때를 말합니다. 하나의 변수가 증가할 때 다른 변수는 감소하는 경향이 있습니다. 무상관 관계: 산점도에서 점들이 어떤 방향으로도 일직선으로 분포하지 않고 무작위로 퍼져 있을 때를 말합니다. 즉, 두 변수 간에는 상관관계가 거의 없는 것으로 보입니다. 상관관계의 강도 확인하기 점들의 모임: 점들이 더 밀집된 곳은 상관관계가 높다는 것을 나타낼 수 있습니다. 점들의 방향성: 일직선에 가까운 분포일수록 상관관계가 강할 가능성이 높습니다. 상관계수 계산: 피어슨 상관계수와 같은 통계적 방법을 사용하여 상관관계의 정도를 수치적으로 계산할 수 있습니다.

⁉️ 피어슨 상관계수란?
피어슨 상관계수(Pearson correlation coefficient)는 두 변수 간의 선형적인 관계를 측정하기 위한 통계적인 방법 중 하나입니다. 주로 연속형 변수들 간의 상관관계를 평가하는 데 사용됩니다. 피어슨 상관계수의 특징: 범위: -1에서 1 사이의 값을 가집니다. 양의 상관관계: 1에 가까울수록 강한 양의 선형관계를 나타냅니다. 음의 상관관계: -1에 가까울수록 강한 음의 선형관계를 나타냅니다. 무상관 관계: 0에 가까울수록 선형관계가 거의 없거나 약한 관계를 가집니다.
Tip. 표준편차 - 데이터의 분산 정도를 나타내는 측정 지표 중 하나
       공분산 - 두 변수 간의 관계를 나타내는 통계적 측정 지표
       정규화 - 데이터의 스케일을 조정하여 특정 범위나 규격에 맞추는 과정

 

 

특히 선 그래프, 막대 그래프, 히스토그램, 산점도는 생김새는 비슷해 보여도 쓰임새가 꽤 달랐다.
선 그래프는 변화 흐름, 막대 그래프는 항목 비교, 히스토그램은 분포, 산점도는 변수 간 관계를 볼 때 적합하다는 식으로 정리하니 훨씬 덜 헷갈렸다.
앞으로 그래프를 그릴 때는 “이 그래프를 왜 쓰는지”를 먼저 생각해야겠다고 느꼈다.

3. 오늘의 과제 - 데이터 홀로서기

- 판다스 연습해보기

위로가 되는 사실
이미 저번부터 연습 하고 있었다....

 

이번 과제를 하면서 느낀 건, 데이터 분석은 코드를 많이 아는 것도 중요하지만 순서를 잡는 게 더 중요하다는 점이었다.
데이터를 불러오고, 확인하고, 필요한 부분을 정리한 뒤, 그래프로 표현하는 흐름을 스스로 만들 수 있어야 한다.
아직은 중간중간 막히는 부분이 있지만, 이런 식으로 직접 해봐야 진짜 내 것이 되는 것 같다.

 


나의 간단 소감

- 오늘은 데이터 시각화가 단순히 그래프를 예쁘게 그리는 작업이 아니라, 데이터 안에 숨어 있는 흐름과 패턴을 더 빠르게 이해하기 위한 도구라는 것을 배웠다.

 

처음에는 plot()으로 선 그래프를 그리는 것도 단순히 코드를 따라 치는 느낌이었는데, 스타일을 바꾸고 범례를 넣고 축 이름과 제목을 붙이면서 그래프가 점점 “설명 가능한 결과물”이 되는 과정이 흥미로웠다. 특히 같은 데이터라도 선 그래프, 막대 그래프, 히스토그램, 산점도처럼 표현 방식에 따라 전달되는 느낌이 달라진다는 점이 인상 깊었다.

 

품질관리나 QA/QC 직무에서도 데이터 시각화는 꽤 중요하게 쓰일 것 같다. 예를 들어 불량률 추이, 공정별 생산량, 검사 결과 분포, 변수 간 상관관계 등을 그래프로 표현하면 숫자만 봤을 때보다 문제 지점을 훨씬 빠르게 찾을 수 있을 것 같다. 결국 데이터를 잘 다룬다는 것은 계산만 잘하는 것이 아니라, 상대방이 이해할 수 있게 보여주는 능력까지 포함한다는 생각이 들었다.

 

아직은 그래프 종류마다 어떤 상황에서 쓰면 좋은지 완전히 익숙하지는 않지만, 오늘 배운 내용을 바탕으로 앞으로는 데이터를 볼 때 “이걸 어떤 그래프로 보여주면 가장 직관적일까?”를 같이 고민해보려고 한다. 판다스와 Matplotlib을 더 연습해서 단순히 그래프를 그리는 수준을 넘어, 데이터에서 의미를 찾아 설명할 수 있는 분석 역량을 키워야겠다.

 

+내가 만든 차트들

야르 시리즈