희스레저 2022. 5. 23. 01:12

목차

1. 그래프 그릴 때 한글 깨지는 현상 해결하기

2.  Plot 그래프

  2-1) line

  2-2) bar

  2-3) 히스토그램

 

3. 커널밀도 그래프, hexbin

  3-1) 커널밀도그래프

  3-2) hexbin(고밀도 산점도)

 

4. box plot

5. 

6. scatter plot

 


 

1. 그래프 그릴 때 한글 깨지는 현상 해결하기

df.plot

 이렇게 범주부분에서 한글이 깨지는 모습을 볼 수 있다.

 

STEP 1. 아래 코드를 실행

!apt-get -qq -y install fonts-nanum > /dev/null

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

fontpath = '/usr/share/fonts/truetype/nanum/NanumBarunGothic.ttf'
font = fm.FontProperties(fname=fontpath, size=10)
fm._rebuild()

# 그래프에 retina display 적용
%config InlineBackend.figure_format = 'retina'

# Colab 의 한글 폰트 설정
plt.rc('font', family='NanumBarunGothic')
 
 
기존의 apt 코드는 error 발생으로 apt-get으로 바꿔서 실행
(코드 외울 필요 x)
 
 
STEP 2. 런타임 다시 시작
 
STEP 3. 위 코드 한 번 더 입력해서 다시 실행
 
STEP 4. 필요한 패키지, 데이터, 그래프 로딩
 
 

STEP 5. 그래프 사이즈 키우는 옵션

plt.rcParams["figure.figsize"] = (12, 9) 또는 plt.figure(figsize=[12,9])

 

2. Plot 그래프

df['분양가'].plot()

> kind 옵션을 통해 원하는 그래프 그리기 가능

 

2-1) line (default)

데이터가 연속적일 때 유용함 (ex. 주가데이터)

df['분양가'].plot(kind='line')

 

ex)

df_seoul = (df.loc[df['분양가'] == '서울')

df_seoul_year = df_seoul.groupby('연도').mean()

df_seoul_year.plot(kind='line')

 

시계열 데이터에 어울리기 때문에 억지로 시게열식으로 짜맞춰본...

연도는 필요없으니

df_seoul['분양가'].plot(kind='line') 하면 더 직관적 확인 가능!

 

 

2-2)  bar

그룹별로 비교할 때 유용하다

ex. 지역별 분양가 비교

df.groupby('지역')['분양가'].mean().plot(kind='bar') / df.groupby('지역')['분양가'].mean().plot(kind='barh')

좌-bar, 우-barh

 

2-3) 히스토그램(hist)

히스토그램은 분포・빈도를 시각화하여 보여줍니다

x축에는 분포(범위), y축에는 빈도가 있다.

 

df['분양가'].plot(kind='hist')

 

 

3. 커널밀도그래프와 hexbin

3-1) 커널밀도그래프: kde

히스토그램과 유사하게 밀도를 보여주는 그래프, 부드러운 라인을 갖고 있음

밀도를 보여주는데 선으로 보여준다고 생각하면 될 듯

 

df['분양가'].plot(kind='kde')

 

3-2) hexbin: 고밀도 산점도 그래프

x와 y 키 값을 넣어주어야 함

x와 y 모두 numeric한 값을 넣어주어야한다. 데이터의 밀도를 추정함

(육각형 모양으로 나와서 헥스, 어디에 집중적으로 분포해있는지 설명해주기 때문에 고밀도 산점도라고 표현함)

 

df.plot(kind='hexbin', x='분양가', y='연도', gridsize=20)

>> gridsize 안주면 좀 작게보임..

 

4. box plot

 

박스플롯은 데이터 outlier를 감지할 때 가장 많이 활용되며, 25%, median, 75% 분위 값을 활용하는 용도로 많이 활용된다.

df_seoul = df.loc[df['지역'] == '서울']         #조건주기

df_seoul['분양가'].plot(kind='box')            #지역이 서울인 데이터 중 분양가 값만 box형태로 그래프그리기

 

 

 

box plot

중앙의 선(median), 중앙값

박스 윗부분 3사분위, 박스 아랫부분 1사분위

 

IQR = (3사분위 - 1사분위)*1.5

box plot의 최대값: 3사분위 + IQR

box plot의 최소값: 1사분위 - IQR