1. Matplotlib

시각화는 누구나 쉽게많은 데이터의 양을 한 눈에 알아볼 수 있도록 돕습니다. Matplotlib는 데이터프레임을 chart나 plot으로 시각화하는 패키지 라이브러리 입니다. import matplotlib 로 사용합니다. 한글을 지원하지 않기 때문에 따로 설치해야합니다.

# 시각화
# colab에서 한글 설치

!sudo apt-get install -y fonts-nanum
!sudo fc-cache - fv
!rm ~/.cache/matplotlib -rf
# 이후 재가동

# 폰트설정
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic')

plt.title('선그래프')
plt.plot([1,2,3,4,5],[4,9,4,2,10])
plt.show()

image

이때 그래프에서 축을 tic이라고 합니다. x틱과 y틱의 이름을 설정합니다.

plt.xlabel('일')
plt.ylabel('명')

2. Style

그래프의 스타일을 지정해 줄 수 있습니다.

image image

xtics(원본List, 바꿀List)와 ytics로 틱들의 이름을 바꿀수 도 있습니다.

3. Figure

figure란 그래프가 그러지는 영역(canvas)입니다. figure(fizgsize=(가로사이즈,세로사이즈))로 캔버스의 크기를 설정할 수 있습니다. subplot(행,열,순서)로 캔버스를 쪼개 여러개의 그래프를 나타낼 수 있습니다.

plt.figure(figsize=(6,4))
plt.subplot(2,1,1) # 캔버스를 나누는 함수
plt.plot([2,7,3,1], c='r')
plt.subplot(2,1,2)  # 2번째 캔버스
plt.plot([1,3,5,7], c='g')
plt.show()

image

4. bar

bar차트는 막대형 그래프로 굉장히 직관적이어서 자주 사용됩니다. 기본적으로 세로막대가 나오지만 가로형으로 나타낼 수 도 있습니다.

plt.title('매장별 매출데이터')
plt.bar([0,1,2],[100,50,200])
plt.xticks([0,1,2],['강남구','관악구','영등포구'])
plt.xlabel('지역명')
plt.ylabel('매장별')
plt.show()

image

plt.title('매장별 매출데이터')
city = ['서울','부산','충북','광주']
y_pos = [0,1,2,3]
data = [100,80,40,30]
plt.barh(y_pos,data,alpha=0.5)
plt.yticks(y_pos,city)
plt.show()

image

5. 다양한 그래프

  • stem : 막대 넓이가 없는 차트
  • hist : 히스토그램. 데이터분포가 어떻게 되는지 확인
import matplotlib
matplotlib.rcParams['axes.unicode_minus'] = False  # 음수를 사용하기 위한 설정

plt.title('stemp plot')
plt.stem([0,1,2,3,4],[10,-5,2,9,-7],'-o') # -0는 표시자
plt.show()

image

import numpy as np
x = np.random.randn(100)
plt.title('histogram')
plt.hist(x,bins=10)  # bins = 집계구간
plt.show()

집계구간이란 통계학에서 사용되는 용어로, 데이터를 수집하고 분석할 때 일정한 기간 또는 구간을 나누어 그 안에서 데이터를 집계하는 것을 말합니다1. 집계구간은 데이터의 특성에 따라 다르게 설정될 수 있습니다. 예를 들어, 일주일 동안의 매출을 집계할 때는 1주일을 집계구간으로 설정할 수 있습니다1.

image

  • 파이차트 : autopct(퍼센티지 자동계산), shadow(그림자)
  • scatter : 두 데이터간의 상관관계 확인
labels = ['서울','부산','광주','인천']
size = [10,50,30,80]
colors = ['y','c','b','r']
explode = (0,0.2,0,0) # 해당 데이터를 0.2만큼 떨어트린다는 의미
plt.pie(size, explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=45) # autopct는 소수점 첫쨰자리까지 나타낸다는 의미
plt.show()

image

np.random.seed(0)
x = np.random.randint(0,50,100)
y = np.random.randint(0,50,100)
plt.scatter(x,y)
plt.show()

image

6. Seaborn 라이브러리

seaborn이란 Matplotlib를 기반으로 다양한 테마와 통계용 차트 등의 기능을 추가한 시각화 패키지입니다. iris, titani, tips, filights 데이터를 기본으로 제공합니다.

  • rugplot : 데이터 위치를 x축에 표현
import seaborn as sns

iris = sns.load_dataset('iris')
titanic = sns.load_dataset('titanic')

x = iris.petal_length.values

plt.figure(figsize=(5,3))
sns.rugplot(x)  # rugplot함수를 이용하면 plt로 반환
plt.title('rug plot')
plt.show()

image

image

1~2사이에 데이터가 있고 3~7사이에 데이터가 있다는 것을 확인할 수 있습니다.

  • countplot : 카테고리별 데이터 갯수
  • jointplot : 산점도그래프를 기본으로 표시하고 x,y축에 변수에 대한 히스토그램 표시, 두 변수의 관계와 데이터가 얼마나 분산되어 있는지 파악
sns.countplot(x='class', data = titanic)
plt.show()

image

sns.jointplot(x='sepal_length',y='sepal_width', data=iris)
plt.show()

image

  • pairplot : 3차원 이상의 데이터 비교 분석
plt.figure(figsize=(10,10))
sns.pairplot(iris)
plt.show()

image

  • heatmap : 데이터 값을 컬러로 변환시켜 시각적인 분석
  • barplot : 카데고리 값에 따른 실수 값의 평균과 편차를 표시 평균은 막대의 높이로, 편차는 에러바로 표시
  • pointplot : 점 추정치 및 신뢰구간을 표시
  • boxplot : 박스와 박스 바깥의 선으로 이루어짐
    • 데이터의 구간, 이상치, 최소값, 최대값을 나타날 때 자주 사용합니다.

image

image

신뢰구간 : 평균과 표준편차를 이용해서 어떤 데이터의 구간을 추정

  • violinplot : 세로 방향으로 커널 밀도 히스토그램을 그림
  • stripplot : 범주형 변수에 들어있는 각 범주별 데이터의 분포 확인
  • swarmplot : stripplot과 유사하지만 데이터를 나타내는 점이 겹치지 않도록 표현
  • image

image

댓글남기기