Matplotlib 시각화(2)
히스토그램
히스토그램은 연속형 변수의 분포를 그리는 데 사용한다. 연속형 변수들의 값이 빈(Bin) 수로 분할되어 x축에 표시되며, 각 빈에 포함되는 범위의 수치들은 카운트화되어 y축에 표시된다. y축에는 카운트 대신 총량의 백분율을 표시해 확률 분포를 나타내며, 이러한 그래프는 통계 분석에 사용된다.
titanic = sns.load_dataset('titanic')
age = titanic['age']
nbins = 21
fig, ax = plt.subplots(figsize = (10, 6))
ax.hist(age, bins = nbins)
ax.set_xlabel('Age')
ax.set_ylabel('Frequency')
ax.set_title('Distribution of Age in Titanic')
ax.axvline(x = age.mean(), linewidth = 2, color = 'r')
fig.show()
nbins라는 변수를 지정해 Bin을 21개로 나누었다. axvline()은 데이터의 평균선을 세로로 긋는 함수이다. X 인수에 age.mean()의 평균값을 넣고, Linewidth를 통해 선 굵기를 지정하고, Color를 통해 선의 색깔을 지정했다.
박스 플롯 그래프(Box Plot)
박스 플롯은 범주형 데이터를 기준으로 수치형 데이터의 분포를 파악하는 데 적합하다. 최솟값, 1분위값, 중간값, 3분위값, 최댓값을 제공한다.
iris = sns.load_dataset('iris')
data = [iris[iris['species'] == 'setosa']['petal_width'],
iris[iris['species'] == 'versicolor']['petal_width'],
iris[iris['species'] == 'virginica']['petal_width']]
fig, ax = plt.subplots(figsize = (10, 6))
ax.boxplot(data, labels = ['setosa', 'versicolor', 'virginica'])
fig.show()
iris 내장 데이터를 통해 알아봤다. Data는 리스트로 담는다. 그 이유는 Labels에 있는 값과 하나씩 일치시키기 위해서이다. 첫 번째 리스트 값은 Setosa를 기준으로 Petal_Width를 추출한 것이고, 두 번째 리스트 값은 Veisicolor, 마지막 리스트 값은 Virginica를 기준으로 추출한 것이다.
히트 맵(Heat Map)
히트맵은 열을 뜻하는 히트(Heat)와 지도를 뜻하는 맵(Map)을 결합시킨 단어로 다양한 강도, 다양한 색상으로 데이터 범위를 시각화하는 데 사용된다. 상관 행렬의 요소는 두 변수 사이의 선형 관계의 강도를 나타내며, 행렬에는 주어진 데이터에 포함된 속성의 모든 조합에 대한 값을 포함한다. Matplotlib 모듈에서는 Heat Map을 바로 사용하는 함수는 존재하지 않기 때문에, Imshow 함수를 활용하는 것이 특징이다.
flights = sns.load_dataset('flights')
flights = flights.pivot('month', 'year', 'passengers')
fig, ax = plt.subplots(figsize = (12, 6))
im = ax.imshow(flights, cmap = 'YlGnBu')
ax.set_xticklabels(flights.columns, rotation = 20)
ax.set_yticklabels(flights.index, rotation = 10)
fig.colorbar(im)
fig.show()
imshow() 함수 안에 Cmap이라는 인수가 있다. 이 부분은 히트맵의 Color를 나타낸다.
지금까지 Matplotlib 모듈을 활용해 시각화를 구현해봤다. 어려운 부분 중 하나는 DataFrame 객체를 List로 변환해 처리하는 것이다. List로 처리하지 않고 변수명을 입력하면서 더욱 쉽게 구현하도록 등장한 방법이 Seaborn 모듈이다. 다음 글에서는 Seaborn에 대해 살펴볼 예정이다.
'파이썬 시각화' 카테고리의 다른 글
Seaborn 시각화(2) (0) | 2021.09.29 |
---|---|
Seaborn 시각화(1) (0) | 2021.09.28 |
Matplotlib 시각화(1) (0) | 2021.09.27 |