데이터 분석에서 시각화는 데이터를 더 직관적으로 이해할 수 있게 해주는 중요한 도구입니다. 파이썬에서는 대표적으로 Matplotlib와 Seaborn 라이브러리를 사용하여 데이터를 시각화합니다. 이 글에서는 다양한 차트 활용법과 함께, 상관관계 분석에 대해 살펴보겠습니다. 📊
🔵 Matplotlib & Seaborn으로 차트 만들기
1. 카운트 플롯 (Count Plot)
특정 컬럼의 값별로 데이터의 개수를 바로 확인할 수 있는 플롯입니다.
import seaborn as sb
import matplotlib.pyplot as plt
# 기본 카운트 플롯
sb.countplot(data=df, x='generation_id')
plt.show()
# 색깔 변경하기 🎨
base_color = sb.color_palette()[1]
sb.countplot(data=df, x='generation_id', color=base_color)
plt.show()
# 큰 순서대로 정렬하기 🪜
base_order = df['generation_id'].value_counts().index
sb.countplot(data=df, x='generation_id', color=base_color, order=base_order)
plt.show()
2. 히스토그램 (Histogram)
데이터를 구간(bin) 별로 나누어 빈도를 시각화합니다.
장점
- 데이터 분포 시각화: 대량의 데이터를 시각적으로 표현하여 분포를 쉽게 파악할 수 있습니다.
- 빈도 분석: 각 구간의 데이터 발생 빈도를 한눈에 볼 수 있어 데이터의 중심 경향과 분산을 쉽게 이해할 수 있습니다.
- 정규분포 비교: 데이터가 정규분포를 따르는지 쉽게 비교할 수 있습니다.
- 이상치 탐지: 데이터의 전체적인 패턴에서 벗어난 이상치를 쉽게 발견할 수 있습니다.
단점
- 원래 값 손실: 데이터를 구간으로 그룹화하기 때문에 개별 데이터의 정확한 값을 알 수 없습니다.
- 데이터 세트 비교의 어려움: 두 개 이상의 데이터 세트를 비교하기 어렵습니다.
- 연속 데이터 제한: 연속적인 데이터에만 사용 가능하며, 이산형 데이터에는 적합하지 않습니다.
- 구간 설정의 영향: 구간(bin)의 수와 크기에 따라 히스토그램의 모양이 달라질 수 있어 해석에 주의가 필요합니다.
import matplotlib.pyplot as plt
# 첫 번째 히스토그램 (bins 조정)
plt.hist(data=df,x='speed',rwidth=0.9, bins=20)
plt.title('speed hist.bins 20')
plt.xlabel('speed')
plt.ylabel('count')
plt.show()
# 두 번째 히스토그램 (bins 범위구간으로 조정)
df['speed'].min()
df['speed'].max() #최소,최대값 사이를 나누기
np.arange(df['speed'].min(), df['speed'].max()+7,7)
plt.hist(data=df,x='speed',rwidth=0.9, bins=my_bins)
plt.title('speed hist.bins 20')
plt.xlabel('speed')
plt.ylabel('count')
plt.show()
3. 파이 차트 (Pie Chart)
데이터의 비율을 시각적으로 표현할 때 유용한 차트입니다.
# 파이 차트 예제 🥧
data=df['generation_id'].value_counts()
plt.pie(data,labels=data.index,wedgeprops={'width':0.7},startangle=90)
plt.legend(loc='lower right')
plt.title("Poke'mon Generation")
plt.show()
상관관계 분석(Correlation Analysis)이란? 📊
상관관계 분석은 두 변수 간의 관계를 수치로 나타내는 방법입니다. 주로 데이터 분석이나 통계학에서 변수 간의 연관성을 파악하고자 할 때 많이 사용됩니다. 이를 통해 변수 간의 비례 관계, 반비례 관계, 또는 무관계 여부를 판단할 수 있습니다.
By DenisBoigelot, original uploader was Imagecreator - 자작, original uploader was Imagecreator, CC0, https://commons.wikimedia.org/w/index.php?curid=15165296
상관관계란? 🔄
상관관계(Correlation)는 두 변수 간에 어떻게 관련되어 있는지를 나타냅니다. 이 관계는 -1에서 +1 사이의 값으로 나타나며, 다음과 같이 해석됩니다:
- +1: 완벽한 양의 상관관계 (한 변수가 증가하면 다른 변수도 증가)
- 0: 상관관계 없음 (두 변수 간의 연관성이 없음)
- -1: 완벽한 음의 상관관계 (한 변수가 증가하면 다른 변수는 감소)
상관관계 분석 방법 ✨
1. 피어슨 상관 계수 (Pearson Correlation Coefficient)
가장 일반적으로 사용하는 방법으로, 연속형 데이터 간의 상관관계를 측정합니다.
# 피어슨 상관계수 계산
df[['displ', 'comb']].corr()
2. 시각화를 통한 분석
Seaborn과 Matplotlib을 활용해 상관관계를 시각적으로 확인할 수 있습니다.
상관관계 분석을 위한 시각화 방법 🖼️
1. 산점도 (Scatter Plot)
산점도는 두 변수 간의 관계를 점으로 표현합니다. 데이터를 직관적으로 이해하기 좋은 방법이며, 상관관계를 확인하는 첫 단계로 사용됩니다.
plt.scatter(data=df,x='displ',y='comb')
plt.title('Displ vs Comb')
plt.xlabel('Displacemnet (L)')
plt.ylabel('Combined Fuel Eff (mpg)')
plt.show()
2. 회귀선 플롯 (Regression Plot)
Seaborn의 regplot 함수는 산점도에 회귀선을 추가하여 변수 간의 관계를 더 명확하게 보여줍니다.
sb.regplot(data=df, x='displ', y='comb')
plt.title('Regression Plot of displ vs comb')
plt.xlabel('displ (Engine Displacement)')
plt.ylabel('comb (Combined Fuel Efficiency)')
plt.show()
3. 다변량 관계 플롯 (Pair Plot)
pairplot은 여러 변수들 간의 관계를 한 번에 확인할 수 있는 강력한 도구입니다. 상관분석 대상이 되는 변수들을 선택하여 사용합니다.
sb.pairplot(data=df, vars=['displ', 'comb'])
plt.show()
4. 2D 히스토그램 (2D Histogram)
2D 히스토그램은 두 변수의 데이터 분포를 색상으로 나타냅니다. 데이터가 밀집된 구간을 확인할 때 유용합니다.
plt.hist2d(data=df, x='displ',y='comb',cmin=0.5,cmap='viridis_r',bins=20)
plt.colorbar()
plt.title('배기량과 연비의 관계')
plt.xlabel('배기량')
plt.ylabel('연비 mpg')
plt.show()
한글 글꼴 문제를 해결하기 위한 설정
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
%matplotlib inline
import platform
from matplotlib import font_manager, rc
plt.rcParams['axes.unicode_minus'] = False
if platform.system() == 'Darwin':
rc('font', family='AppleGothic')
elif platform.system() == 'Windows':
path = "c:/Windows/Fonts/malgun.ttf"
font_name = font_manager.FontProperties(fname=path).get_name()
rc('font', family=font_name)
else:
print('Unknown system... sorry~~~~')
상관관계 분석 시 주의할 점 ⚠️
- 상관관계는 인과관계가 아니다: 상관관계가 있다고 해서 한 변수가 다른 변수의 원인이라고 단정할 수는 없습니다.
- 이상치(Outliers) 제거: 이상치는 상관계수에 큰 영향을 줄 수 있으므로, 데이터를 정제하는 것이 중요합니다.
- 데이터의 종류: 상관분석은 연속형 데이터에 적합하며, 범주형 데이터에는 다른 분석 방법이 필요합니다.
🎯 상관관계 분석 활용 사례
- 추천 시스템
- 상관관계가 높은 변수를 분석하여 사용자에게 더 적합한 상품이나 콘텐츠를 추천합니다.
- 예: 영화 추천 시, 사용자의 시청 이력과 유사한 영화 데이터를 기반으로 추천 🎥
- 비즈니스 의사 결정
- 매출, 광고비, 고객 만족도 간의 상관관계를 분석해 효과적인 전략 수립. 💼
- 과학적 데이터 분석
- 실험 데이터에서 변수 간 관계를 분석하여 결과를 해석합니다. 🧪
✨ 결론
Matplotlib와 Seaborn 라이브러리는 데이터를 시각적으로 표현하고 통찰을 얻는 데 강력한 도구입니다. 특히, 상관관계 분석은 데이터의 구조를 이해하고 변수 간의 관계를 발견하는 데 필수적입니다. 이를 활용해 데이터 기반의 더 나은 의사 결정을 할 수 있습니다! 🚀
💡 Tip: 다양한 데이터셋에서 차트를 만들어보고, 상관관계를 분석하며 시각화 스킬을 키워보세요! 😊