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 |