데이터 전처리 & 시각화 4주차

Arin lee·2024년 10월 23일

contents

  • 데이터 시각화의 목적
  • Matplotlib 알아보기
  • 그래프 그리기 - 도구편
  • 그래프 그리기 - 차트

summary

  1. 데이터 시각화의 목적
  • 패턴 발견 및 이해:
    데이터 내의 숨겨진 패턴을 발견하고, 이해하는 데 도움을 준다.
  • 의사 결정 지원:
    시각화는 복잡한 데이터를 이해하고 결정을 내리는 데 도움을 줌.
  • 효과적인 커뮤니케이션:
    데이터를 시각적으로 보여주면 이해하기 쉽고 기억하기 쉬운 형태로 전달할 수 있다.
  1. Matplotlib 알아보기
  • Matplotlib 이란?
    :다양한 종류의 그래프를 생성하기 위한 도구를 제공
    -2D 그래픽을 생성하는 데 주로 사용
    -선 그래프, 막대 그래프, 히스토그램, 산점도, 파이 차트 등 다양한 시각화 방식을 지원
    -그래프를 색상, 스타일, 레이블, 축 범위 등을 조절하여 원하는 형태로 시각화할 수 있음
  • matplotlib.pyplot
    -plot() 함수 : 2차원 데이터를 시각화하기 위해 사용.
import matplotlib.pyplot as plt

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

# 선 그래프 그리기
plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Example Plot')
plt.show()

  1. 그래프 그리기 - 도구편
  • Matplotlib.pyplot 에서 plot() 를 활용하는 법
    -pandas의 plot() 메서드는 DataFrame 객체에서 데이터를 시각화하는데 사용된다. 예를 들어, 선 그래프를 그리기 위해서는 plot() 메서드를 호출하고 x와 y 인수에 각각 x축과 y축에 해당하는 열을 지정 함.
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()

  • 스타일 설정하기
    :color, linestyle, marker 등의 파라미터를 사용하여 선의 색상, 스타일, 마커를 변경할 수 있다.
ax = df.plot(x='A', y='B', color='green', linestyle='--', marker='o')


plt.show()


색은 초록, 선스타일은 점선, 마커는 o로 표시해준다.

*그외
-Color(색상):
- 색상은 문자열로 지정할 수 있으며, 'blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black', 'white'와 같은 기본 색상 이름 또는 RGB 값을 직접 지정할 수 있다.
-Linestyle(선 스타일):
- 선의 스타일은 '-'(실선), '--'(대시선), ':'(점선), '-.'(점-대시선) 등으로 지정할 수 있다.
-Marker(마커):
- 마커는 데이터 포인트를 나타내는 기호로, 'o'(원), '^'(삼각형), 's'(사각형), '+'(플러스), 'x'(엑스) 등 다양한 기호로 지정할 수 있다.

  • 범례 추가하기
    legend() 메서드
#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()

  • 축 , 제목 입력하기
    :set_xlabel(), set_ylabel(), set_title() 메서드를 사용하여 x축과 y축의 레이블 및 그래프 제목을 추가할 수 있다.
ax.set_xlabel('X-axis Label')
ax.set_ylabel('Y-axis Label')
ax.set_title('Title of the Plot')


plt.show()

  • 텍스트 추가하기
    :text()그래프에 특정 위치에 텍스트를 추가
ax.text(3, 3, 'Some Text', fontsize=12)

plt.show()

  • 한꺼번에 설정하는 방법 !
    -plot() 함수에 color, linestyle, marker, label 등의 파라미터로 스타일과 범례를 적용
    -xlabel(), ylabel(), title(), legend(), text() 함수들을 사용하여 각각의 설정을 추가
    *plot() 함수 자체에는 범례, 제목, 텍스트를 직접적으로 입력하는 기능은 내장되어 있지 않다.*
import matplotlib.pyplot as plt

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

# 그래프 그리기
plt.plot(x, y, color='green', linestyle='--', marker='o', label='Data Series')

# 추가 설정
plt.xlabel('X-axis Label')
plt.ylabel('Y-axis Label')
plt.title('Title of the Plot')
plt.legend()
plt.text(3, 8, 'Some Text', fontsize=12)  # 특정 좌표에 텍스트 추가

# 그래프 출력
plt.show()

  • 그래프 사이즈 변경
    :plt.figure() 함수를 사용하여 Figure 객체를 생성하고, 이후에 figsize 매개변수를 이용하여 원하는 크기로 설정할 수 있음.
    *figsize는 그래프의 가로와 세로 크기를 인치 단위로 설정.
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()


위에는 (8,6)/밑에는 (18,6)

  1. 그래프 그리기 - 차트
  • 그래프 유형

  • 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 vs Histogram
    -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, color='pink')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')
plt.show()

  • Bar vs Histogram 의 차이

    :막대 그래프는 주로 범주형 데이터의 값을 비교하는데 사용되고, 히스토그램은 연속적인 데이터의 분포를 시각화하는 데 사용된다.

  • 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 (박스 플롯)
    :데이터의 분포와 이상치를 시각적으로 보여준다.중앙값, 사분위수, 최솟값, 최댓값 등의 정보를 제공하여 데이터의 통계적 특성을 파악하는 데 사용한다.
    -자료 유형: 연속형 데이터의 분포와 이상치를 시각화하는 데 주로 사용.
    -활용: 데이터의 중앙값, 사분위수(25%, 50%, 75% 위치의 값), 최소값, 최대값, 이상치를 한눈에 파악할 수 있다.
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()


*박스 플롯의 구성 요소:
1)상자(Box): 데이터의 중앙값과 사분위수(25%와 75%). 상자의 아래쪽 끝은 25%의 값(1사분위수), 상자의 윗쪽 끝은 75%의 값(3사분위수)을 나타내고, 상자의 중앙에 위치한 선은 중앙값.
2)수염(Whisker): 상자의 위 아래로 연장되는 선으로, 일반적으로 1.5배의 사분위 범위로 계산되는데, 이 범위를 넘어가는 값은 이상치(outlier)로 간주. 수염의 끝은 최솟값과 최댓값.
3)이상치(Outliers): 수염 부분을 벗어나는 개별 데이터 포인트로, 일반적인 범위를 벗어나는 값들을 의미. 이상치는 박스 플롯에서 독립적으로 표시.

  • 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()

key points

코랩의 경우 한글깨짐현상!
!pip install koreanize-matplotlib
설치후
import koreanize_matplotlib
임포트해서 사용하면 현재 사용가능, 업데이트 이후 사라질 수 도 있음.

일단 데이터에 직접 적용을 해보는 연습이 먼저 필요할 것 같다.

profile
Be DBA

0개의 댓글