Bar 차트 - 막대 차트
Pie 차트 - 원형 차트
Line 차트 - 선 차트
Scatter 차트 - 점 차트
Heat Map 차트 - 열 차트
Histogram 차트 - 빈포 분도 차트
Box 차트 - 박스 차트
- 시각화 라이브러리
- matplotlib
- 파이썬으로 기본적인 차트들을 쉽게 그릴 수 있도록 도와주는 시각화 라이브러리
- seaborn
- matplotlib 기반으로 만들어진 통계 데이터 시각화 라이브러리
- matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings # 시각화 관련 버전 등의 경고(없애기위함)
# 시각화 하기 전 준비 (안해도 되는 과정)
plt.rcParams['figure.figsize'] = [10,8] # 시각화 보여줄 때의 화면 크기
sns.set(style ='whitegrid') # 시각화 그려주는 테마 중 하나
sns.set_palette('pastel') # 시각화 색깔
warnings.filterwarnings('ignore') # 경고 무시
시각화할 때 한글 깨지는 경우
# % 한글이 깨지는 경우
from matplotlib import font_manager, rc
import matplotlib
import platform
if platform .system() == 'Windows':
# 원도우인 경우
font_name =font_manager.FontProperties(fname ='c:/Windows/Fonts/malgun.ttf').get_name()
rc('font', family = font_name)
else:
# MAC인 경우
rc('font', family= 'AppleGothic')
matplotlib.rcParams['axes.unicode_minus'] = False
# Loading'Tips' dataset from seaborn
tips = sns.load_dataset('tips')
tips.head()
데이터를 로딩해오면 shape로 크기 확인하기
tips.shape
>>> (244, 7)
matplotlib를 활용한 시각화
# matplotlib를 활용한 시각화
# 어느 요일에 팁을 많이 받는지
sum_tip_by_day = tips.groupby('day')['tip'].sum()
sum_tip_by_day
x_label = ['Thu', 'Fri','sat', 'sun'] # X_label이 목,금,토,일이 있음
x_label_index = np.arange(len(x_label)) # np.arange(4)
x_label_index
Bar차트
matplotlib를 활용한 시각화
# Bar 차트 이해 및 제작
#x축에는 X_label, y축에는 팁받은날
#plt.bar(x_label, sum_tip_by_day)
#옵션 추가한경우
plt.bar(x_label, sum_tip_by_day,
color='pink', # 차트 색
alpha=0.6, # 차트 투명도
width=0.3, # 너비
align='edge') # 격자가 변경됨 (배치)
plt.title('sum of Tips by Days') # 차트 제목
plt.xlabel('Days', fontsize =14) #x축에 변수 넣기
plt.ylabel('sum of Tips', fontsize=14) # y축에 설명넣기
plt.xticks(x_label_index, x_label, rotation=45, fontsize=15) # X축 변수 글자크기, 회전 등
plt.show()
seaborn을 활용한 시각화
# seaborn을 활용한 시각화
# sns.barplot(data=tips, # 데이터프레임
# x='day',
# y='tip',
# estimator= np.sum)
# 옵션 추가한 경우
sns.barplot(data=tips, # 데이터프레임
x='day',
y='tip',
estimator= np.sum, # 평균도 가능
hue ='sex', # 색깔 구분으로 특정 컬럼값을 비교하고 싶을 때
palette ='pastel', # 위에서 했으므로 굳이 안해도됨
order=['Sun', 'Sat','Fri', 'Thur'], # xticks 순서
edgecolor = '.6', # 바 모서리 선명도
linewidth=2.5) # 라인에 대한 두께설정
plt.title('sum of Tips by Days', fontsize=16) # 차트 제목
plt.xlabel('Days') #x축에 변수 넣기
plt.ylabel('sum of Tips') # y축에 설명넣기
plt.xticks(rotation=45) # X축 변수 글자크기, 회전 등
plt.show()
Pie차트
- 둥근모양
matplotlib을 활용한 시각화
# pie 차트 이해 및 제작
# matplotlib를 활용한 시각화
sum_tip_by_day =tips.groupby('day')['tip'].sum()
ratio_tip_by_day = sum_tip_by_day/sum_tip_by_day.sum()
x_label = ['Thu', 'Fri','Sat', 'Sun'] # X_label이 목,금,토,일이 있음
plt.pie(ratio_tip_by_day, # 비율값
labels=x_label, # 라벨값
autopct='%.2f%%', # 부채꼴 안에 표시될 숫자 형식(소수 2자리깢 표시)
startangle=90, # 축이 시작되는 각도 설정
counterclock=True, # 시계 방향ㅁ -> False : 반시계 방향
explode=[0.05, 0.05, 0.05, 0.05], # 중심에서 벗어나는 정도 표시
shadow=True, # 그림자 표시 여부
colors=['gold', 'silver', 'whitesmoke', 'gray'], # 색 변환
wedgeprops={'width':0.7, 'edgecolor':'w', 'linewidth':3}) # 도넛 차트 그릴 때 사용
plt.show()
Line 차트
matplotlib을 활용한 시각화
# Line 차트 이해 및 제작
# matplotlib을 활용해서 시각화
# line 차트 예제를 위해, tips 데이터에 가상 시간 컬럼 추가하기
# 일요일 데이터만 사용
sun_tips = tips[tips['day']=='Sun']
sun_tips
# 현재 서버 시간을 얻기 위해 datetime 라이브러리 사용
import datetime
# datetime.date.today() -> 오늘 날짜
date =[]
today = datetime.date.today()
date.append(today)
for time in range(sun_tips.shape[0]-1):
today += datetime.timedelta(1) # 하루씩 추가
date.append(today)
date
sun_tips['date'] = date
sun_tips
# line chart
plt.plot(sun_tips['date'], sun_tips['total_bill'],
linestyle='-', # 선의 모양
linewidth=2, # 너비
color='pink', # 색
alpha=0.5 ) # 투명도
plt.title('Total Tips by Date', fontsize=20)
plt.title('sum of Tips by Days', fontsize=16) # 차트 제목
plt.xlabel('Days') #x축에 변수 넣기
plt.ylabel('sum of Tips') # y축에 설명넣기
plt.xticks(rotation=90) # X축 변수 글자크기, 회전 등
plt.show()
seaborn을 활용한 시각화
# seaborn을 활용한 시각화
sns.lineplot(data=sun_tips,
x='date',
y='total_bill',
hue='sex')
plt.title('Total Bill By date & sex')
plt.show()
Scatter 차트
matplotlib을 활용한 시각화
# Scatter 차트 이해 및 제작
# 변수 간의 상관 관게를 볼 때 많이 사용
# matplotlib을 활용한 시각화
plt.scatter(tips['total_bill'], tips['tip'],
color='pink', # 색상
edgecolors='black', # 테두리 색깔
linewidths=2) # 라인 두께
plt.show()
seaborn을 활용한 시각화
# seaborn을 활용한 시각화
sns.scatterplot(data=tips,
x='total_bill',
y='tip',
style='time', # 모양 구분으로 다른 변수랑 비교
hue='day', # 색깔 구분으로 다른 변수랑 비교
size='size', # 크기 구분으로 다른 변수랑 비교
)
plt.title('Scatter between total_bill and trip', fontsize=20)
plt.xlabel('total_bill', fontsize=16) #x축에 변수 넣기
plt.ylabel('tip', fontsize=16) # y축에 설명넣기
plt.show()
Heat Map 차트
seaborn을 활용한 시각화
# Heat Map 차트 이해 및 제작
# seaborn을 활용한 시각화
sns.heatmap(tips.corr(),
annot=True, # 박스 안 corr 값 표시 여부
square=True, # 정사각형으로 만들지 여부
vmin=-1, vmax=1, # 범위 지정은 1부터 -1로 지정(최소 최댓값 지정)
linewidths=.5, # 라인 두께 지정
cmap='RdBu') # 색상 선택
plt.title('Heatmap by correlation', fontsize=20)
plt.show()
Histogram 차트
matplotlib을 활용한 시각화
# Histogram 차트 이해 및 제작
# matplotlib을 활용한 시각화
plt.hist(tips['total_bill'],
bins=30, # x축의 갯수
density=True, # 비율적으로 보여주는 것
alpha=0.7, # 선명도
color='pink', # 색상
edgecolor='black') # 테두리 색상
plt.title('Histogram for total_bill') # 차트 제목
plt.xlabel('total_bill') #x축에 변수 넣기
plt.ylabel('rate') # y축에 설명넣기
plt.show()
seaborn을 활용한 시각화
# seaborn을 활용한 시각화
sns.histplot(data=tips,
x='total_bill',
bins=30,
kde=True, # 분포도를 선으로 보여줌
hue='sex',
multiple='stack',
shrink=0.6) # bin의 두께
plt.title('Histogram for total_bill by sex') # 차트 제목
plt.xlabel('total_bill') #x축에 변수 넣기
plt.ylabel('rate') # y축에 설명넣기
plt.show()
Box 차트
matplotlib을 활용한 시각화
# Box 차트 이해 및 제작
# matplotlib을 활용한 시각화
plt.boxplot(tips['tip'],
sym='rs', # 빨간색으로 표시
)
plt.title('Box Plot for Tip', fontsize=20)
plt.xlabel('tip', fontsize=15)
plt.ylabel('tip size', fontsize=15)
plt.show()
seaborn을 활용한 시각화
# seaborn을 활용한 시각화
sns.histplot(data=tips,
x='total_bill',
bins=30,
kde=True, # 분포도를 선으로 보여줌
hue='sex',
multiple='stack',
shrink=0.6) # bin의 두께
plt.title('Histogram for total_bill by sex') # 차트 제목
plt.xlabel('total_bill') #x축에 변수 넣기
plt.ylabel('rate') # y축에 설명넣기
plt.show()
'Programming Language > Python' 카테고리의 다른 글
[Python] apply 함수 (0) | 2024.06.13 |
---|---|
[Python] DataFrame 그룹 (0) | 2024.06.13 |
[Python] DataFrame (0) | 2024.06.13 |
[Python] iloc와 loc (0) | 2024.06.13 |
[Python] Pandase(판다스) (0) | 2024.06.13 |