시각화 (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()
'Data-driven Methodology > DS (Data Science)' 카테고리의 다른 글
[Data Science] 데이터 시각화 (3) (0) | 2022.09.22 |
---|---|
[Data Science] 데이터 시각화 (2) (0) | 2022.09.22 |
[Data Science] 공공포털 데이터 (9) (0) | 2022.09.22 |
[Data Science] 공공포털 데이터 (8) (0) | 2022.09.22 |
[Data Science] 공공포털 데이터 (7) (0) | 2022.09.22 |