AI Big Data/pandas

앤스콤 4분할 그래프 살펴보기

retro_blue 2020. 7. 9. 14:48
반응형

# 앤스콤 4분할 그래프 (Anscombe's quartet)

 

Frank Anscombe이 데이터를 시각화하지 않고 수치만 확인할 때 발생할 수 있는 함정을 보여주기 위해 만든 그래프

 


# 앤스콤이 지적한 함정

 

- 앤스콤 그래프를 구성하는 데이터 집합은 4개의 그룹으로 구성되어 있으며 모든 데이터 그룹은 x, y 열을 가지고 있다

- 이 4개의 데이터 그룹은 각각 평균, 분산과 같은 수칫값이나 상관과계, 회귀선이 모두 같다는 특징이 있다

- 이런 결과를 통해 '데이터 그룹 I, II, III, IV의 데이터는 모두 같을 것이다' 라고 착각할 수 있음

 

하지만 ! 각 데이터 그룹을 시각화하면 데이터 그룹들이 서로 다른 데이터 패턴을 가지고 있다는 점을 알 수 있다


이런 점에서 데이터 시각화는 데이터 분석 분야에서 아주 중요한 요소라고 할 수 있습니다

 

 

1. 앤스콘 데이터 집합 불러오기

 

- 앤스콤 데이터 집합은 seaborn 라이브러리에 포함되어 있습니다.

seaborn 라이브러리는 통계 그래픽을 만들기 위한 라이브러리, 즉 데이터 시각화를 담당하는 모듈입니다.

 

seaborn 라이브러리의 load_dataset 메서드에 문자열 anscombe를 전달하겠습니다.

 

I, II, III, IV 4개의 데이터 그룹으로 나뉘어져 있으며 11개의 데이터

 

 

2. matplotlib 라이브러리로 그래프 그리기

 

matplotlib 라이브러리는 플롯(그래프)을 그릴 때 주로 쓰이는 2D, 3D 플롯팅 패키지(모듈)라고 할 수 있습니다.

 

 

# matplotlib 라이브러리로 그래프 그리기

 

1. 전체 그래프가 위치할 기본 틀을 만듭니다

2. 그래프를 그려 넣을 그래프 격자를 만듭니다

3. 그런 다음 격자에 그래프를 하나씩 추가합니다. 격자에 그래프가 추가되는 순서는 왼쪽에서 오른쪽 방향입니다.

4. 만약 격자의 첫 번째 행이 꽉 차면 두 번째 행에 그래프를 그려 넣습니다.


불러온 앤스콤 데이터 집합을 그래프로 시각화해보겠습니다.

 

matplotlib 라이브러리를 불러와서 dataset 데이터 값이 I인 것만 추출하였습니다. (첫 번째 데이터 그룹) 

 

 

그래프를 살펴보면 선으로 그려져 있습니다. 이것은 plot 메서드가 기본적으로 선을 사용하여 그래프를 그리기 때문입니다.

 

그럼 이번엔 점으로 그래프를 그려보겠습니다.

 

세 번째 인자에 o를 전달하여 점으로 표시하였습니다

 

이제 나머지 데이터 집합에 대해서도 그려볼까요?

 

그래프 격자가 위치할 기본 틀은 figure 메서드를 이용해서 만듭니다.

또한 add_subplot 메서드를 사용하여 그래프의 격자를 그리는데, 기본 틀(fig)에 격자를 추가한다고 생각하시면 됩니다.

첫 번째 인자에는 그래프 기본 틀의 행 크기를, 두 번째 인자에서는 열 크기를 지정합니다.

plot 메서드에 데이터를 전달하여 그래프를 그려보도록 하겠습니다.

그래프가 잘 그려졌는지 확인하려면 fig를 입력해서 확인할 수 있습니다.

점의 색상은 매번 실행할 때마다 달라질 수 있습니다.

 

각각의 그래프가 어떤 데이터 집합인지 확인하기 위해 그래프 격자에 제목을 추가하겠습니다.

이때 set_title 메서드로 그래프 이름을 전달하면 됩니다.

또 기본 틀에 제목을 추가하려면 suptitle 메서드를 사용하면 됩니다.

3, 4번 그래프와 1, 2번 그래프 사이가 좁아 제목이 가려져버렸네요.

이런 경우엔 tight_layout 메서드를 호출하여 각 그래프의 레이아웃을 조절할 수 있습니다.

 

이런 식으로 앤스콤 4분할 그래프를 출력해봤습니다.

이처럼 평균, 표준편차, 분산 등이 같은 데이터 집합일지라도 실제로 데이터 분포는 시각화한 그래프 처럼 서로 다른 패턴을 가질 수 있다는 점을 명심해야 할 것입니다.

 

 


[참고자료]

(Data) seaborn (https://seaborn.pydata.org/)

 

seaborn: statistical data visualization — seaborn 0.10.1 documentation

Seaborn is a Python data visualization library based on matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics. For a brief introduction to the ideas behind the library, you can read the introductory note

seaborn.pydata.org

        matplotlib (https://matplotlib.org/)

 

Matplotlib: Python plotting — Matplotlib 3.2.2 documentation

 

matplotlib.org

(Book) Do it! 데이터 분석을 위한 판다스 입문 (Chen. Daniel Y 저) - 이지스퍼블리싱

Do it! 데이터 분석을 위한 판다스 입문
국내도서
저자 : 다니엘 첸(Chen, Daniel Y.) / 김영하역
출판 : 이지스퍼블리싱 2018.10.11
상세보기
반응형