데이터 시각화 - 히스토그램

정지호·2022년 9월 1일
0

개인 실습 진행

목록 보기
33/41

1. 히스토그램 그래프

  • 수치형 데이터 분포를 정확하게 표현
  • 하나의 숫자 변수만 입력해야 한다.
  • 변수는 여러 개의 빈(bin)으로 자르고(자신이 지정 가능), 빈(bin) 당 관측수는 막대의 높이로 표시된다.
  • 설정한 빈의 갯수에 따라 히스토그램의 모양은 실제로 다를 수도 있으므로, 성급하게 결론을 내리기 전에 다른 값으로 실험을 많이 해보는 것이 좋다. 실제로 밀도 플롯에 가깝다고 할 수 있다.
  • 여러 분포를 비교하는 목적이라면 동일한 분포에 다른 분포를 추가하거나, 바이올린 플롯을 사용하는 것이 더 효율적이다.

2. seaborn 시각화 작업

  • seaborn에서 distplot 함수를 사용하여 히스토그램을 만들 수 있다.
    (seaborn을 sns로 불러오고)
    sns.distplot(데이터프레임이름["변수이름"])
    sns.distplot(데이터프레임이름["변수이름"], bins=n) -> n개의 막대가 생성

  • 선 없이 막대그래프만 출력하려면
    sns.distplot(a=데이터프레임이름["변수이름"], hist=True, kde=False, rug=False)
    (선 없이 막대 그래프만)

  • Rug와 커널 밀도 함께 출력하기
    : Rug란 그래프의 X 축에 데이터를 1차원으로 표시해준다는 의미이다.
    : 그래프 하단에 커널의 밀도를 표시해주는 그래프도 추가해서 출력해보자.

sns.distplot(a=데이터프레임이름["변수이름"], hist=True, kde=True, rug=True)

  • Rug 상세하게 조정해서 출력하기(Rug 파라미터 상세하게 조정하기)
    sns.distplot(a=데이터프레임이름["변수이름"], rug=True,
    rug_kws={"color":"r", "alpha":0.3, "linewidth":2, "height":0.2})

  • 밀도 조정해서 출력하기
    sns.distplot(a=데이터프레임이름["변수이름"], kde=True,
    rug_kws={"color":"g", "alpha":0.3, "linewidth":5, "shade":True})

    (kde: 커널(k) 밀도(density의 de))

  • 세로축으로 출력하기
    sns.distplot(데이터프레임이름["변수이름"], color="skyblue", vertical=True)

  • 한 그래프 안에 변수 2개 이상 출력하기

    1. 같은 축에 다수의 변수 그래프 그리기
      sns.distplot(데이터프레임이름["sepal_length"], color="skyblue", label="Sepal Length")
      sns.distplot(데이터프레임이름["sepal_width"], color="red", label="Sepal Width")
  1. faceting으로 여러칸으로 나누어서 출력하기
    : 한가지 윈도우를 여러 칸으로 나누어서 시각화하는 방식이다.

import matplotlib.pyplot as plt

f, axes = plt.subplots(2, 2, figsize=(7,7), sharex=True) -> 칸을 2x2로 나눔
sns.distplot(데이터프레임이름["sepal_length"], color="skyblue", ax=axes[0,0]) # (0,0)에 위치
sns.distplot(데이터프레임이름["sepal_width"], color="olive", ax=axes[0,1]) # (0,1)에 위치
sns.distplot(데이터프레임이름["petal_length"], color="gold", ax=axes[1,0]) # (1,0)에 위치
sns.distplot(데이터프레임이름["petal_width"], color="teal", ax=axes[1,1]) # (1,1)에 위치


출처
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=youji4ever&logNo=221804922659

profile
정지호

0개의 댓글