삶의 공유
[Python기초] Seaborn을 이용한 데이터 시각화 본문
안녕하세요
오늘은 Python의 Seaborn 라이브러리를 활용해서 데이터시각화를 한번 해보고자 합니다.
Seaborn라이브러리는 matplot 보다 더 나은 기능을 제공합니다.
관련해서 seaborn 라이브러리 문서를 보고싶으시다면 하기 링크를 클릭 해주시면 됩니다.
https://seaborn.pydata.org/examples/index.html
자 이제 예제로 들어가보겠습니다. 먼저 seaborn 라이브러리를 포함하여 데이터 시각화를 위해 필요한
여러 라이브러리를 호출해보겠습니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
위 문장에서 "import seaborn as sns" 이 문장이 seaborn 라이브러리를 호출하는 문장입니다.
이번 예제에서는 데이터셋을 무료로 제공하는 sklearn에서 가져 올 것 입니다. 어떻게 가져오는건지 같이 한번 살펴보겠습니다.
먼저 코드는 다음과 같습니다.
여러 데이터셋이 있지만 이번에는 그중에서 load_breast_cancer이라는 데이터셋을 가져와보았습니다. 참 직관적으로 잘 되어 있지 않나요? sklearn은 정말 잘되어있는 것 같습니다. 나중에 머신러닝에서도 많이 다룰 것 입니다.
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
cancer
이렇게 load한 데이터 구조가 어떻게 되어있는지 살펴보면, 아래와 같이 딕셔너리 구조로 되어 있는 것을 볼 수 있습니다.
그럼 이 딕셔너리 구조의 데이터를 데이터프레임으로 만들어 보겠습니다. 코드는 다음과 같습니다.
df_cancer = pd.DataFrame(np.c_[cancer['data'], cancer['target']], columns=np.append(cancer['feature_names'],['target']))
df_cancer
여기서 다른건 크게 어렵지 않지만 "np.c_" 가 어떤 의미인지 생소 하셨을텐데 이거에 대해서 간략히 설명하면 아래 내용과 같이 2개의 1차원 배열을 좌에서 우로 한줄씩 붙여 넣는 개념으로 생각하시면 됩니다. 아래 내용을 보시면서 상상을 해보시면 좋을 것 같습니다.
그럼 이와 같은 데이터 프레임을 얻을 수 있습니다.
자 이제 본격적으로 데이터 시각화를 해보겠습니다.
SCATTER PLOT
- x = 의 의미는 x축으로 사용할 데이터 프레임 내 컬럼
- y = 의 의미는 y축으로 사용할 데이터 프레임 내 컬럼
- hue = 의 의미는 legend 입니다(즉 색을 구분하기 위한 구분자 역할)
- data = 의 의미는 원본 데이터 프레임 입니다.
sns.scatterplot(x='mean area' ,y='mean smoothness', hue='target', data = df_cancer)
두 데이터 컬럼의 관계를 알 수 있습니다.
COUNTER PLOT
sns.countplot이라고 쓰면 되고 괄호 안에는 원하는 데이터셋을 넣으면 됩니다.
sns.countplot(df_cancer['target'])
아래와같이 target 컬럼은 은 1, 0의 데이터들로 이루어져 있는데 각 0, 1의 항목 개수들이 시각화 되는 것을 볼 수 있습니다.
PAIR PLOT
데어터들의 관계를 한번에 알아볼 수 있게 시각화 하는 방법입니다. 시각화를 통한 강력한 데이터 분석 방법 입니다.
- df_cancer 는 데이터셋인 데이터 프레임 입니다.
- hue는 앞서 말씀드린데로 Legend 역할 입니다
- vars는 비교할 데이터 컬럼 리스트 입니다. 데이터 컬럼명을 문자열로 리스트화하여 작성 하면 됩니다.
sns.pairplot(df_cancer, hue='target', vars=['mean radius','mean texture', 'mean area', 'mean perimeter', 'mean smoothness'])
이렇게 데이터 변수들 간의 관계를 시각화하여 한번에 표현하기 때문에 상대적으로 쉽게 데이터들간의 관계를 찾아낼수 있습니다.
HEAT MAP
Pair plot에 이어 데이터들간의 관계를 한번에 알아볼 수 있는 시각화 분석툴로 heat map 또한 많은 사람들이 사용하고 있는 방법 중에 하나 입니다.
- df_cancer.corr() 은 각 컬럼들끼리 데이터를 비교하여 상관계수를 뽑아 내는 함수 입니다.(1이면 상관계수가 높다, -1이면 낮다)
- annot=True는 아래 이미지에서 corr()함수의 값을 표현 하겠다 라는 의미 입니다. ※default는 False입니다.
plt.figure(figsize=(20,10))
sns.heatmap(df_cancer.corr(), annot=True)
heatmap함수를 사용해서 pairplot함수보다 더 쉽게 데이터 변수들간의 상관계수를 수치로 나타냄으로써 좀 더 직관적으로 확인 할 수 있습니다.
이상으로 matplot 라이브러리의 확장판이라고 볼 수 있는 seaborn에 대해서 같이 공부를 해보았습니다. 많은 분들에게 도움이 되었으면 좋겠습니다. 감사합니다.
'Data Scientist > Python' 카테고리의 다른 글
[Python활용]종목별 Valuation 및 저평가 주식 Search 자동화 Project[1] (0) | 2022.01.24 |
---|---|
[Python활용]텍스트 마이닝을 위한 konlpy 설치(MAC) (5) | 2022.01.17 |
[Python활용] Chrome Driver 설치 및 Selenium 활용 (3) | 2022.01.11 |
[Python기초] Matplotlib로 시각화 다루기 (0) | 2022.01.09 |
[Python기초] Pandas (연산, 함수, Concat, Merge) (0) | 2022.01.05 |