[Python] Matplotlib과 Seaborn라이브러리를 활용한 데이터 시각화

2024. 6. 13. 09:03·Programming Language/Python
목차
  1. 데이터를 로딩해오면 shape로 크기 확인하기
  2. matplotlib를 활용한 시각화
  3. Bar차트
  4. Pie차트
  5. Line 차트
  6. Scatter 차트
  7. Heat Map 차트
  8. Histogram 차트
  9. Box 차트

Bar 차트 - 막대 차트

Pie 차트 - 원형 차트

Line 차트 - 선 차트

Scatter 차트 - 점 차트

Heat Map 차트 - 열 차트

Histogram 차트 - 빈포 분도 차트

Box 차트 - 박스 차트

 

  • 시각화 라이브러리
    1. matplotlib
      • 파이썬으로 기본적인 차트들을 쉽게 그릴 수 있도록 도와주는 시각화 라이브러리
    2. seaborn
      • 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
  1. 데이터를 로딩해오면 shape로 크기 확인하기
  2. matplotlib를 활용한 시각화
  3. Bar차트
  4. Pie차트
  5. Line 차트
  6. Scatter 차트
  7. Heat Map 차트
  8. Histogram 차트
  9. Box 차트
'Programming Language/Python' 카테고리의 다른 글
  • [Python] apply 함수
  • [Python] DataFrame 그룹
  • [Python] DataFrame
  • [Python] iloc와 loc
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (827)
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (443)
        • 백준[JAVA] (106)
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    springboot
    baekjoon
    시큐리티
    Linux
    스프링부트
    백준
    리눅스마스터 1급
    프로그래머스
    JPA
    Spring Security
    리눅스마스터
    플러터
    스프링 부트 쇼핑몰 프로젝트 with JPA
    Oracle
    pcce 기출문제
    python
    Java
    스프링
    리눅스
    DB
    spring
    데이터
    programmers
    postgresql
    자바
    CS
    데이터베이스
    backjoon
    CS지식
    Flutter
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[Python] Matplotlib과 Seaborn라이브러리를 활용한 데이터 시각화

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.