본문 바로가기
Data-driven Methodology/DS (Data Science)

[Data Science] 데이터 시각화 (1)

by goatlab 2022. 9. 22.
728x90
반응형
SMALL

시각화 (Visualization)

 

인간은 눈 망막 자극이 뇌에 전달될 때 정보의 의미를 파악할 수 있게 진화한 동물이다. 인간은 감각 중의 대부분을 시각에 의존하는 데 일반적으로 시각이 77%, 청각이 13%, 후각이 7%, 나머지 3%는 촉각과 미각이 나뉜다. 빅데이터 시대의 도래로 데이터를 가공하지 않고 눈으로 보고 파악할 수 있는 한계를 넘어섰다. 따라서, 데이터 시각화 (Data visualization)는 매우 효과적으로 정보를 전달하는 수단이 되고 있다.

 

시각화 라이브러리

 

내장 라이브러리 Pandas에 내장된 기본 그래프 라이브러리로써 별도의 라이브러리 import 없이 사용 가능하다.
Matplotlib Pandas에서 가장 많이 쓰는 라이브러리로써 데이터 프레임을 시각화할 때도 내부적으로 Matplotlib을 사용한다.
Seaborn Matplotlib을 기반으로 다양한 색 테마, 차트 기능을 추가한 라이브러리로써 Matplotlib에 의존성을 가지고 있다.
Plotnine R의 ggplot2에 기반해 그래프를 작성하는 라이브러리로써 R로 시각화하는 것이 익숙하면 편리하게 사용할 수 있다.
Folium 지도 데이터 (Open Street Map)에 leaflet.js를 이용해 위치정보를 시각화하는 라이브러리이다.
Plot.ly 인터랙티브 그래프를 그려주는 라이브러리로써 R, 스칼라, 파이썬, 자바스크립트, 매트랩 등에서 사용할 수 있다.

 

Matplotlib

 

Matplotlib은 많은 Python 라이브러리 중에서 plot (그래프)을 그릴 때 주로 쓰이는 2D, 3D 플롯팅 패키지이다. Matplotlib을 활용하면 다양한 유형의 그래프를 간편하게 작성 가능하다.

 

Seaborn

 

Seaborn은 Matplotlib을 기반으로 하는 Python 시각화 라이브러리이다. 좀 더 동적인 시각화가 가능하고 기본적으로 Matplotlib보다 기본 색상표가 더 뛰어나기 때문에 색 표현력이 좋다. Seaborn은 deep, muted, pastel, bright, dark, colorblind 총 6개의 기 본 팔레트를 제공한다.

 

그래프 종류

 

막대 시간의 흐름 및 항목별 빈도 표현
두 데이터의 관계 표현
데이터의 분포 시각화
히스토그램 데이터 구간별 분포 파악
상자 수염 항목별 분포를 비교하며 이상치 파악

 

matplotlib 그래프 옵션

 

구분 정의 예시
xlim, ylim x축, y축 범위 x축 범위를 -1에서 1까지 지정 : plt.xlim(-1, 1)
grid g격자 눈금 격자 생성 : plt.grid(True)
legend 범례 위치 지정
1: 우측 위, 2: 좌측 위
3: 좌측 아래, 4: 우측 아래
6: 좌측 중앙, 7: 우측 중앙
8: 하측 중앙, 9: 상측 중앙
좌측 상단에 범례 위치 : plt.legend(2)
xlabel, ylabel x축, y축 타이틀 x축 제목을 시간으로 설정 : plt.xlabel(“시간”)
title 그래프 제목 그래프 제목을 월간매출로 설정 : plt.title(“월간매출”)
xticks, yticks x축, y축 눈금 조정 -

 

matplotlib 모듈

 

plot / line 선 그래프
scatter 산점도
bar 수직 막대 그래프
barh 수평 막대 그래프
pie 원 그래프
hist 히스토그램
boxplot 상자 수염 그래프

 

선 그래프

 

선 그래프 (line plot)는 ‘연속하는 데이터 값’들을 직선이나 곡선으로 연결하여 데이터 값 사이 관계를 나타낸다. 예를 들어, 선 그래프를 그리는 plot 함수에 입력할 x, y 축 데이터를 선택하고 x축에 시간 변수를 지정하여 시간 변화량을 나타내는 시계열 데이터를 표현하는 그래프로도 많이 사용된다.

 

plt.plot(x, y, color, lw)
(x = x축 데이터, y = y축 데이터, color = 컬러, lw = 라인 두께)
import matplotlib.pyplot as plt

# 그래프에서 한글 폰트 깨짐 방지
plt.rcParams[“font.family”] = "Malgun Gothic"
plt.rc('font', family='Malgun Gothic') 

# 실선(line)
plt.plot([1,10], [1,1], linestyle = "solid")

# 파선(dash)
plt.plot([1,10], [2,2], linestyle = "dashed")

# 쇄선(dashdot)
plt.plot([1,10], [3,3], linestyle = "dashdot")

# 점선(dot)
plt.plot([1,10], [4,4], linestyle = "dotted")

# plot 그리기
height = [155, 160, 163, 167, 170, 174, 178, 182, 186, 190] # 키 데이터
weight = [44, 46, 48, 50, 57, 62, 70, 74, 79, 82] # 몸무게 데이터

# 제목
plt.title("선 그래프")

# x축 제목
plt.xlabel("몸무게")

# y축 제목
plt.ylabel("키")

# 그래프 그리기, 컬러 적색, 선 두께 3
plt.plot(weight, height, color = "red", lw = 3)

plt.show()

 

산점도

 

산점도 (Scatter plot)는 서로 다른 ‘두 연속형 변수’ 사이 관계를 나타내며 연속형 변수의 상관성을 확인할 수 있다.

 

plt.scatter(x, y)
(x = x축 데이터, y = y축 데이터)
height = [155, 160, 163, 167, 170, 174, 178, 182, 186, 190] # 키 데이터
weight = [44, 46, 48, 50, 57, 62, 70, 74, 79, 82] # 몸무게 데이터

# 제목
plt.title("scatter plot")

# x축 제목
plt.xlabel("몸무게")

# y축 제목
plt.ylabel("키")

# scatter plot 그리기
plt.scatter(weight, height)

plt.show()

 

 

728x90
반응형
LIST