#Matplotlib, Seaborn 시각화 #2
#Scatter 차트 이해 및 제작
#Heatmap 차트 이해 및 제작
#Histogram 차트 이해 및 제작
#Box 차트 이해 및 제작
#머신러닝
#"거친코딩
#파이썬 기초 라이브러리부터 쌓아가는 머신러닝"
#1 Scatter Chart
matplotlib의 scatter 차트를 이용하여 데이터를 분석한다.
_데이터 셋은 기온에 따른 아이스크림의 판매 _
plt.scatter(tips['total_bill'],tips['tip'],
color='green'
edgecolor='lightblue',
linewidth=1)
plt.show()
seaborn의 scatterplot을 이용하여 데이터를 분석 시각화 한다.
데이터는 이전 장에서 이용했던 요일별 tips이다
sns.scatterplot(data=tips,
x='total_bill',
y='tip',
hue='day',
style='time',
size='size')
plt.title('Scatter between total_bill and tip', fontsize=20)
plt.xlabel('total_bill', fontsize=16)
plt.ylabel('tip', fontsize=16)
plt.show()
style => 모양 구분으로 다른 변수와 비교
hue => 색깔 구분으로 다른 변수와 비교
size => 크기 구분으로 다른 변수와 비교
요일별로 색깔을, tip의 크기별로 사이즈를,
시간 별로 모양을 나누어 데이터 구분을 했다.
파라미터들의 기능을 보여주기 위해 여러 종류를 사용했지만
시각화 했을 때 데이터가 한 눈에 들어오지 않는다.
파라미터들을 적절히 사용하여 데이터 분석에 도움을 주어야 할 것 같다.
Scatter chart에 어울리는 데이터를 적절한 파라미터를 사용하여 시각화하면
데이터의 분포를 한 눈에 알아보기 쉬울 것으로 보인다.
#2 Heatmap
Heatmap 차트 이해 및 제작
seaborn을 활용한 시각화
1에 가까우면 양의 상관관계 0에 가까우면 상관관계 없을 수도
-1에 가까우면 음의 상관관계
sns.heatmap(tips.corr(),
annot=True,
square=True,
vmin=-1, vmax=1,
linewidth=5,
cmap='RdBu')
plt.show()
annot => 박스 안 corr 값 표시할지 말지
square => 박스를 정사각형으로 할지말지
vmin, vmax => 최소, 최대 값 지정
linewidth => 라인 두께 지정
cmap => 색상 스타일 선택
위의 예시에서는 진한 파랑색이 강한 상관관계
진한 빨간색이 강한 음의 상관관계를 의미한다
이렇게 변수들 사이의 상관관계를 시각화하여 데이터 분석을 한다.
#3 Histogram
Histogram 차트 이해 및 제작
matplotlib의 hist을 이용하여 histogram 작성
bins default=10
density=True하면 비율로 확인, false하면 실제 데이터 수로
plt.hist(tips['total_bill'],
bins=10,
density=True,
alpha=0.4,
color='lightgreen',
edgecolor='red',
linewidth=2)
plt.show()
alpha => 투명도
color => 기둥의 색상
edgecolor => 테두리 색상
linewidth => 기둥의 두께
seaborn을 이용한 시각화
sns.histplot(data=tips,
x='total_bill',
bins=30,
kde=True,
hue='day'
multiple='stack',
shrink=0.6)
plt.show()
히스토그램을 이용하면 수치의 비교가 용이하다.
예를들어 위의 그림에서 x축을 요일로 만들면 어떤 요일에
가장 많은 팁을 받는지 비교할 수 있을 것이다.
#Box chart
pyplot의 boxplot을 이용한 시각화
plt.boxplot(tips['tip'],
sym='rs')
plt.show()
seaborn의 boxplot을 이용한 시각화
sns.boxplot(data=tips,
x='day',
y='tip',
hue='smoker',
linewidth=2,
order=['Sun','Sat','Fri','Thur'])
plt.show()