Python - Matplotlib 활용 - 표, 그래프 만들기(통계/원형/히스토그램/산점도/회귀/상관관계/열분포도)

반응형

pokemon.csv
0.04MB

 

# Tidy Data란?

  • 데이터를 분석하기 위해 깔끔하게 정리된 데이터(=깔끔한 데이터, Tidy Data)
  • 깔끔한 데이터(Tidy Data)로 가공되기 전에는 지저분한 데이터라고 분류

 

# Tidy Data의 특징

  • 각 변수는 개별의 열을 구성
  • 각 관측치는 행을 구성
  • 각 표는 관측치 기준에 의해 조직된 데이터를 저장
  • 여러개의 표 존재시 하나 이상의 열 공유

 

# Tidy Data로 가공하여 데이터 표를 만들어 분석해보기

# matplotlib

  • 간편하게 그래프를 만들고 변화를 줄 수 있음

 

# matplotlib 호출하기

import matplotlib.pyplot as plt
# 편의상 앞으로 plt로 정의

 

# 표 만들기 (plot x, y)

  • matplotlib.pyplot.plot(x, y) : x축과 y축의 데이터를 가진 표 생성
    • 이하 matplotlib.pyplot를 편의상 plt(as plt)로 정의해서 사용함
    • plot.show() 를 같이 사용 할 경우 표만 출력


# 표 저장하기 (savefig)

  • plt.savefig('파일이름') : 표를 이미지로 저장
    • 파일은 실행중인 파일의 같은 경로에 생성

경로에 파일 생성

 

# seaborn

  • matplotlib기반의 시각화 라이브러리, 통계를 그래픽으로 나타내기 위한 고급 인터페이스 제공

 

# seaborn 호출하기

import seaborn

 

# 통계 그래프 만들기 (seaborn>countplot)

  • 예제로 확인을 원하는 경우 첨부파일을 확인해주세요. (pokemon.csv)
  • 편의상 데이터를 한 눈에 보기 편하게 여러 데이터가 있는 포켓몬스터의 포켓몬의 상세 정보를 불러왔습니다.
import pandas
df = pandas.read_csv('pokemon.csv')

<pokemon.csv> 의 데이터프레임

 

  • 그래프 생성하기
  • seaborn.countplot(data= 데이터, x= x축, y= y축, color=색의 인덱스, order=순서)

 

  • 그래프의 색 확인 및 변경
  • seaborn.color_palette() : 그래프에 사용될 색 및 인덱스 확인
    • 인덱스는 왼쪽부터 차례로 0부터 시작
    • 그래프를 만들 때 color를 지정해주면 변경

 

  • 그래프의 순서 변경하기
  • 그래프를 만들 때 order를 지정해주면 지정된 순서로 그래프 출력
    • 예시) value_counts로 내림차순의 값을 그래프로 출력

 

  • 그래프 각 축의 이름 각도 변경하기
  • plt.xticks(rotation=각도) : x축 이름의 각도 기울기 설정
  • plt.yticks(rotation=각도) : y축 이름의 각도 기울기 설정

 

# 원형 그래프 만들기 (pie)

  • 예제에 쓰일 기본 데이터프레임(df)
  • 가독성을 위해 정렬한 데이터(sorted_data)로 원형 그래프 생성 예정

 

  • 원형 그래프 생성하기
  • plt.pie(데이터, autopct = 수치표기, labels = 인덱스, startangle = 각도, wedgeprops = {'width': 0~1사이 숫자})

 

# 히스토그램 만들기 (hist)

  • 히스토그램이란?
    • 특정 구간별로 나누어 그래프로 나타낸 것
  • 예제에 쓰일 기본 데이터프레임(df)
  • 스피드 항목별로 구간을 설정해 히스토그램 생성 예정

 

  • 히스토그램 생성하기
  • plt.hist(data= 데이터, x= x축, y= y축, rwidth= 구간사이너비, bins=구간범위)

 

# 여러개의 그래프 비교하기 (subplot)

  • plt.figure(figsize= (x, y)) : 비교할 그래프의 크기, x는 가로, y는 세로. 개인적으로 2:1의 비율이 보기 편함
  • plt.subplot(x, y, z) : x는 행, y는 열, z는 순서

 

# 산점도 그래프만들기 (scatter / seaborn>scatterplot)

  • plt.scatter(data= 데이터, x= x축, y= y축) : x와 y의 관계를 그래프로 출력
    • 관계(비례, 반비례, 관계없음)를 통해 방향성과 강도를 조사
    • 예제에 쓰일 기본 데이터프레임(df)
    • 공격과 방어를 기준으로 관계 그래프 생성 예정

 

  • seaborn.scatterplot(data= 데이터, x= x축, y= y축, hue= 기준이 될 데이터)
    • hue의 데이터를 기반으로 x축과 y축의 관계를 그래프로 출력
    • hue : 단색의 표를 hue에 데이터를 주어 해당 기준으로 다시 다색의 표로 작성
    • 세대별로 공격력과 방어력 관계 그래프 생성 예정

 

# 선형 회귀 분석 그래프 만들기 (regression)

  • seaborn.regplot(data= 데이터, x= x축, y= y축)
  • 추세선과 함께 표시

 

# 상관관계(상관계수/상관관계분석) 만들기 (corr)

  • df[ [x, y] ].corr() : x=x축, y=y축
  • 마이너스(-)로 나오면 반비례, 플러스(+)로 나오면 비례

 

# 열 분포도 만들기 (heatmap)

  • plt.hist2d(data= 데이터, x= x축, y= y축, cmap= '색상(_r)', annot=False)
    • cmin : 분포도로부터 멀어진 값들의 색상의 연하기정도? 표가 잘 보이지 않는다면 활용해보자
    • cmap : 색상 변경, 색반전은 색상_r
    • annot : 해당 값의 실제 값 표기
    • plt.colorbar() : 밀도를 나타내는 컬러바 표시

반응형