2 분 소요

import warnings
warnings.filterwarnings('ignore')
from IPython.display import Image
import numpy as np
import pandas as pd

import matplotlib.pyplot as plt #그래프
import seaborn as sns
import matplotlib as mpl

#한글 폰트를 사용할 때 마이너스 데이터가 깨져
#보이는 문제를 해결한다.
mpl.rcParams['axes.unicode_minus'] = False

plt.rcParams['font.family'] = 'NanumGothicCoding'
plt.rcParams['font.size'] = 15
#사람의 눈은 수백 줄의 텍스트만으로 이루어진 데이터를
#읽거나 기초 통계 수치를 계산하는 방법으로는 데이터를
#제데로 분석할 수 없기 때문에, 데이터에 숨겨진 패턴을
#파악하기 위해 데이터 시각화를 사용한다.

#엔스콤 4분할 그래프
#데이터를 시각화하지 않고 수치만 확인햇을 때 발생할 수 
#있는 함정을 보여주기 위해 만든 그래프
#데이터 집합은 4개의 그룹으로 구성되어 있으며 4개의 데이터
#그룹은 각각 평균, 분산과 같은 수치나 상관관계, 회귀선이
#모두 같다는 특징이 있다. 그래서 이런 결과를 보면 4개의
#데이터 그룹의 데이터는 모두 같을 것이라 착각할 수 있다.
#앤스콤 데이터 집합은 seaborn 라이브러리에 포함되어 있다.
#seaborn 라이브러리의 load_dataset()함수의 인수로 'anscombe'을
#전달하면 엔스콤 데이터 집합을 불러올 수 있다.
anscombe = sns.load_dataset('anscombe')
anscombe
dataset x y
0 I 10.0 8.04
1 I 8.0 6.95
2 I 13.0 7.58
3 I 9.0 8.81
4 I 11.0 8.33
5 I 14.0 9.96
6 I 6.0 7.24
7 I 4.0 4.26
8 I 12.0 10.84
9 I 7.0 4.82
10 I 5.0 5.68
11 II 10.0 9.14
12 II 8.0 8.14
13 II 13.0 8.74
14 II 9.0 8.77
15 II 11.0 9.26
16 II 14.0 8.10
17 II 6.0 6.13
18 II 4.0 3.10
19 II 12.0 9.13
20 II 7.0 7.26
21 II 5.0 4.74
22 III 10.0 7.46
23 III 8.0 6.77
24 III 13.0 12.74
25 III 9.0 7.11
26 III 11.0 7.81
27 III 14.0 8.84
28 III 6.0 6.08
29 III 4.0 5.39
30 III 12.0 8.15
31 III 7.0 6.42
32 III 5.0 5.73
33 IV 8.0 6.58
34 IV 8.0 5.76
35 IV 8.0 7.71
36 IV 8.0 8.84
37 IV 8.0 8.47
38 IV 8.0 7.04
39 IV 8.0 5.25
40 IV 19.0 12.50
41 IV 8.0 5.56
42 IV 8.0 7.91
43 IV 8.0 6.89
print(anscombe[anscombe['dataset'] == 'I'].mean())
print('=' * 30)
print(anscombe[anscombe['dataset'] == 'II'].mean())
print('=' * 30)
print(anscombe[anscombe['dataset'] == 'III'].mean())
print('=' * 30)
print(anscombe[anscombe['dataset'] == 'IV'].mean())
x    9.000000
y    7.500909
dtype: float64
==============================
x    9.000000
y    7.500909
dtype: float64
==============================
x    9.0
y    7.5
dtype: float64
==============================
x    9.000000
y    7.500909
dtype: float64
dataset_1 = anscombe[anscombe['dataset'] == 'I']
dataset_2 = anscombe[anscombe['dataset'] == 'II']
dataset_3 = anscombe[anscombe['dataset'] == 'III']
dataset_4 = anscombe[anscombe['dataset'] == 'IV']
   dataset     x      y
0        I  10.0   8.04
1        I   8.0   6.95
2        I  13.0   7.58
3        I   9.0   8.81
4        I  11.0   8.33
5        I  14.0   9.96
6        I   6.0   7.24
7        I   4.0   4.26
8        I  12.0  10.84
9        I   7.0   4.82
10       I   5.0   5.68
#plot() 함수로 그래프를 그린다. plot()함수의
#x,y축으로 데이터를 전달하면 그래프가 나타난다.
plt.plot(dataset_1['x'],dataset_1['y'], 'ro')
plt.show()

output_5_0

plt.plot(dataset_2['x'],dataset_2['y'], 'bs')
plt.show()

output_6_0

plt.plot(dataset_3['x'],dataset_3['y'], 'g^')
plt.show()

output_7_0

plt.plot(dataset_4['x'],dataset_4['y'], 'm*')
plt.show()

output_8_0

# figure() 함수로 전체 그래프가 그려질 기본 틀을 만든다.
fig = plt.figure()
plt.rcParams['figure.figsize'] = [10, 10]

#add_subplot()함수로 그래프가 그려질 격자를 만든다.
#=> add_subplot(행, 열, 위치)
axes1 = fig.add_subplot(2,2,1)
axes2 = fig.add_subplot(2,2,2)
axes3 = fig.add_subplot(2,2,3)
axes4 = fig.add_subplot(2,2,4)

#plot()함수로 격자에 데이터를 전달해 그래프를 그린다.
axes1.plot(dataset_1['x'],dataset_1['y'], 'ro')
axes2.plot(dataset_2['x'],dataset_2['y'], 'bs')
axes3.plot(dataset_3['x'],dataset_3['y'], 'g^')
axes4.plot(dataset_4['x'],dataset_4['y'], 'm*')

#set_title()함수로 각각의 그래프에 제목을 추가할 수 있다.
axes1.set_title('dataset_1')
axes2.set_title('dataset_2')
axes3.set_title('dataset_3')
axes4.set_title('dataset_4')

#suptitle()함수로 그래프 전체의 제목을 추가할 수 있다.
fig.suptitle('앤스콤 데이터 그래프')

plt.show()

output_9_0

태그:

카테고리:

업데이트:

댓글남기기