시각화의 목적
시각화는 데이터를 더 쉽게 이해하기 위해서 수행되는 작업이다. 숫자로 늘여진 테이블만 보는 것보다는 그래프로 보는 것이 우리가 더 직관적으로 보기 쉽다. 데이터마다 특성이 전부 다를텐데 이러한 각각의 데이터를 이해하기 위해서는 어떤 시각화가 필요한 지에 대해 학습한 내용을 정리해본다.
- 데이터를 이해하기 위해서
- 데이터마다 적합한 시각화가 있을 것
데이터 분류
데이터를 분류하고 나면 카테고리와 같은 데이터, 또는 연속된 숫자 값으로 된 데이터로 거의 분류된다.
- 카테고리
- 연속된 숫자 데이터
상황에 따른 시각화 처리 정리
- 카테고리 데이터 - 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()
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()
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()
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()
5. 카테고리, 카테고리
- sns.countplot(hue=), pivot 의 heatmap
plt.figure()
sns.countplot(data=tip_df, x='sex', hue='smoker')
plt.show()
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()
'IT > 인공지능' 카테고리의 다른 글
[Pandas] DataFrame 기초 (0) | 2022.08.11 |
---|---|
[Pandas] Series 기초 (0) | 2022.08.10 |
[matplotlib] 한번에 그래프 여러개 그리기 (0) | 2022.07.31 |
colab에 접속하여 tensorflow, numpy, pandas, matplotlib 버전 출력해 보기 (0) | 2022.06.06 |
댓글