본문 바로가기
IT/인공지능

[matplotlib] 데이터 별 시각화 처리

by U ZZICK 2022. 8. 12.
반응형

시각화의 목적

시각화는 데이터를 더 쉽게 이해하기 위해서 수행되는 작업이다. 숫자로 늘여진 테이블만 보는 것보다는 그래프로 보는 것이 우리가 더 직관적으로 보기 쉽다. 데이터마다 특성이 전부 다를텐데 이러한 각각의 데이터를 이해하기 위해서는 어떤 시각화가 필요한 지에 대해 학습한 내용을 정리해본다.

  • 데이터를 이해하기 위해서
  • 데이터마다 적합한 시각화가 있을 것

데이터 분류

데이터를 분류하고 나면 카테고리와 같은 데이터, 또는 연속된 숫자 값으로 된 데이터로 거의 분류된다.

  • 카테고리
  • 연속된 숫자 데이터

상황에 따른 시각화 처리 정리

  • 카테고리 데이터 - sns.countplot
  • 연속된 숫자데이터 - sns.histplot, sns.distplot
  • 카테고리, 숫자 - sns.boxplot, sns.violinplot
  • 숫자, 숫자 - plt.scatter, sns.joinplot
  • 카테고리, 카테고리 - sns.countplot(hue=), pivot 의 heatmap

이렇게 정리된 내용을 테스트 데이터를 가지고 한번 해보자. seaborn에서 제공하는 tips 데이터를 이용하기로 한다.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

tip_df = sns.load_dataset('tips')

데이터 분류

- 카테고리 데이터: sex, smoker, day, time, size
- 연속된 숫자 데이터 : total_biil, tip

이렇게 분류할 수 있다. 


상황에 따른 시각화 처리 정리

1. 카테고리 데이터

- sns.countplot

# 카테고리 데이터
data = tip_df
x = 'day'

plt.figure()

sns.countplot( data=data, x=x )

plt.show()

countplot을 이용한 day 카테고리 시각화


2. 연속된 숫자데이터

- sns.histplot, sns.distplot

total_bill 의 밀집도를 보고 싶다면

# 연속된 숫자 데이터
data = tip_df
x = 'total_bill'

plt.figure(figsize=(14,5))

sns.distplot( data[x], rug=True)

plt.xticks(rotation=90)
plt.show()

distplot을 활용한 total_bill 데이터 시각화


3. 카테고리, 숫자

- sns.boxplot, sns.violinplot

# 카테고리, 숫자 데이터
data = tip_df
x = 'sex'
y = 'tip'

plt.figure(figsize=(8, 6))

sns.boxplot( data=data, x=x, y=y )
# sns.violinplot( data=data, x=x, y=y )

plt.show()

violinplot
왼) boxplot / 오) violinplot 이용한 sex, tip 의 데이터 시각화


4. 숫자, 숫자

- plt.scatter, sns.joinplot

# 숫자, 숫자 데이터 
x = tip_df['total_bill']
y = tip_df['tip']

plt.figure(figsize=(14,5))

plt.scatter(x=x, y=y, s=1)
plt.axvline(x.mean(), color='red', ls=':')
plt.axhline(y.mean(), color='red', ls=':')

plt.text(x.mean(), y.mean(), 'avg', color='black', backgroundcolor='lightgreen', size=12, ha='center', va='center' )

plt.grid()
plt.show()

scatter 를 이용한 total_bll, tip의 데이터 시각화


5. 카테고리, 카테고리

- sns.countplot(hue=), pivot 의 heatmap

plt.figure()

sns.countplot(data=tip_df, x='sex', hue='smoker')

plt.show()

countplot 을 이용한 sex, smoker 의 데이터 시각화

pivot_table로 카테고리, 카테고리 형태로 변환하여 데이터를 확인하고 이를 heatmap 으로 시각화한 결과이다. 

# 카테고리, 카테고리 데이터
data = tip_df
index = 'time'
columns = 'day'
values = 'tip'

plt.figure(figsize=(8, 4))

temp = pd.pivot_table(data=data, index=index, columns=columns, values=values, aggfunc='count')

sns.heatmap(temp, cmap='Reds', annot=True, linewidths=2)

plt.show()

heatmap 을 이용한 time, day의 tip 데이터 시각화

 

반응형

댓글