프로그래밍/Pandas

[Pandas] 데이터 시각화 | Matplotlib | 히스토그램 | 산점도

LeeSeunghyuk 2021. 2. 1. 11:02
반응형

 

# 히스토그램 그래프

 

단변수 데이터 빈도수를 그래프로 나타냅니다.

즉, 하나의 변수인 데이터를 같은 여러 구간으로 나누고

구간 내 속한 데이터 개수를 사용해 그래프를 그립니다.

 

보통 히스토그램에서 가로축이 계급, 세로축이 도수를 뜻합니다.

계급(변수의 구간)은 서로 겹치지 않고, 붙어있어야 합니다.

 

일반 막대 그래프는 가로축(변수의 구간)은 생각하지 않고

세로축의 높이만 생각하며 그래프를 확인합니다.

 

히스토 그램 그래프는 가로축과 세로축을 함께 생각하며 그래프를 확인합니다.

 

 

계급 : 변수의 구간

도수 : 그 사건이 일어난 횟수 , 계급에 속하는 자료의 수

도수 분포 :  표본의 다양한 산출 분포를 보여주는 목록

 

< 키 도수 분포표 >

계급 도수
160 미만 8
165 미만 15
170 미만 22
175 미만 17

 

※ 히스토그램 패턴

 

  • 좌우 대칭(symmetric)
  • 왼쪽 기울어짐(skewed left)
  • 오른쪽(right)
  • 단봉형(unimodal)
  • 두꼭대기(bimodal)
  • 복합(multimodal)

출처 : https://ko.wikipedia.org/wiki/%ED%9E%88%EC%8A%A4%ED%86%A0%EA%B7%B8%EB%9E%A8

 

 

plot 메소드의 kind를 hist로 지정하여 쉽게 사용할 수 있습니다.

또한 bins 옵션을 지정해 원하는 구간의 개수도 지정할 수 있습니다.

 

import pandas as pd
import matplotlib.pyplot as plt

df=pd.read_csv('d:\\판다스 실습\\mpg.csv')
df['mpg'].plot(kind='hist',bins=10)

plt.style.use('ggplot')
plt.rcParams["figure.figsize"] = (14,4) # 기본 그래프 크기 설정
plt.rcParams["font.size"]=15 # 기본 글자 크기 설정

plt.title('Histogram')
plt.xlabel('mpg')
plt.show()

bins=10(좌) , bins=5(우)

데이터가 판다스 데이터 프레임 형식이 아닐 때

matplotlib의 내장 함수 hist를 사용합니다.

import pandas as pd
import matplotlib.pyplot as plt

df=pd.read_csv('d:\\판다스 실습\\mpg.csv')
plt.hist(df['mpg'],color='orange')

plt.style.use('ggplot')
plt.rcParams["figure.figsize"] = (14,4) # 기본 그래프 크기 설정
plt.rcParams["font.size"]=15 # 기본 글자 크기 설정

plt.title('Histogram')
plt.xlabel('mpg')
plt.show()

 

 

 

# 산점도

 

서로 다른 두 변수 사이의 관계를 알아볼 때 사용합니다.

각 변수는 연속적인 수치를 가집니다.

 

각 변수를 x축 , y축으로 사용해서 점으로 표시한 그래프 입니다.

 

연속적인 데이터, 두 변수간의 관계를 확인할 때 사용합니다.

 

산점도의 분포를 통해 상관관계가 약하고 강함을 파악합니다.

 

음의 상관관계 , 상관계수가 -1에 가깝다 : 하나의 변수가 커지면, 다른 변수는 작아진다.

 

양의 상관관계 , 상관 계수가 1에 가깝다 : 하나의 변수가 커지면, 다른 변수도 커진다.

 


 

자동차 데이터의 무게(weight) & 연비(mpg)의 상관관계를 알아보겠습니다.

 

plot 내장 함수에 kind = scatter 옵션으로 사용합니다.

 

import pandas as pd
import matplotlib.pyplot as plt

df=pd.read_csv('d:\\판다스 실습\\mpg.csv')
df.plot(kind='scatter',x='weight',y='mpg')

plt.style.use('ggplot')
plt.rcParams["figure.figsize"] = (14,4) # 기본 그래프 크기 설정
plt.rcParams["font.size"]=15 # 기본 글자 크기 설정

plt.title('Scatter')
plt.show()

 

혹은 두개의 변수 & matplotlib plot & linestyle 사용해 산점도를 나타낼 수 있습니다.

 

import pandas as pd
import matplotlib.pyplot as plt

df=pd.read_csv('d:\\판다스 실습\\mpg.csv')
plt.plot(df['mpg'],df['weight'],marker='o',linestyle='none',color='skyblue')

plt.style.use('ggplot')
plt.rcParams["figure.figsize"] = (14,4) # 기본 그래프 크기 설정
plt.rcParams["font.size"]=15 # 기본 글자 크기 설정

plt.title('Scatter')
plt.show()

 

 

 

1. 상관관계는 음의 상관관계를 나타냅니다.

2. 무게가 무거워질수록 연비가 낮아지는 경향이 있습니다.

3. 데이터에 따라 pandas 형식이면 plot 내장 함수, 아니면 plt.plot을 사용하는 것이 좋을 것 같습니다.

 

 

반응형