본문 바로가기

부트캠프/멀티캠퍼스_퍼포먼스 마케팅과 데이터 분석

[멀티캠퍼스 부트캠프 6주차(2)] 데이터 분석 기본_시각화

데이터 분석 기본_시각화


0. 라이브러리 불러오기

-rcParams: 프로그램이 실행되는 동안 유지되는 전역 설정(Runtime Configuration Parameters)

import numpy as pd
import pandas as pd

import seaborn as sns
import matplotlib.pyplot as plt

import matplotlib as mpl
# 한글 폰트 설정(한글 깨지지 않도록)
mpl.rcParams['font.family'] = 'Malgun Gothic'
# 마이너스 기호(-) 깨짐 방지
mpl.rcParams['axes.unicode_minus'] = False

 


1. mathplotlib

1) 라인 차트

 -시계열 데이터에 많이 사용

 -plt.plot(x축 데이터, y축 데이터, 스타일): 라인차트 그리기

 -리스트 형태로 입력

 -값을 하나만 넣으면 y축으로 인식, x축은 0부터 자동으로

 -plt.title("문자열"): 그래프 제목 설정

  • fontsize=숫자: 글자 크기 조절
  • loc='center' / 'left' / ... : 제목의 수평 치 지정
  • pad=숫자: 제목과 그래프 상단 사이의 여백(디폴트값 6.0)

 -plt.xticks(x축 데이터, [라벨]): x축 눈금 라벨 지정

plt.figure(figsize=(4, 3))
plt.title("첫 번째 라인 그래프")  

x_list = [1, 2, 3, 4]
y_list = [5, 8, 10, 15]

plt.plot(x_list, y_list)

plt.xticks(x_list, ['1월', '2월', '3월', '4월']);

 -스타일: 색상, 마커 모양, 선 모양 순서

 ex) 'ro--': 빨간색, 원, 점선

 -plt.axis([x축 범위], [y축 범위]): x축, y축 범위 지정

plt.plot(x_list, y_list, 'ro--')

plt.axis([0.5, 4.5, 3, 16]);

 -plt.xlabel(): x축 레이블 지정

 -plt.ylabel(): y축 레이블 지정

  • fontsize=숫자: 글자 크기 조절(디폴트 값 10.0)
  • labelpad=숫자: 축 레이블과 축 숫자 사이의 여백 조절(디폴트 값 4.0)

 -plt.legend(): 데이터가 각각 무엇을 의미하는지 범례 생성

  • loc='upper right' / 'center' / 'best' / (x좌표, y좌표)... : 범례 위치 지정
  • ncol=숫자: 범례 열 개수 지정(ex. 범례 항목이 많아 가로로 배치하고 싶을 때)
  • fontsize=숫자: 범례 글자 크기 조절
  • frameon=True / False: 범례 테두리 표시 여부
# 디양힌 선 종류
plt.figure(figsize=(6, 4))

plt.plot([1, 2, 3], [4, 4, 4], 'rh-', label='label 1')  # 빨간색 실선
plt.plot([1, 2, 3], [3, 3, 3], 'b>--', label='label ')  # 파란색 긴 점선 
plt.plot([1, 2, 3], [2, 2, 2], 'gd:', label='label 3')  # 초록색 짧은 점선
plt.plot([1, 2, 3], [1, 1, 1], 'k*-.', label='label 4')  # 검은색 대쉬-닷 점선

# x축, y축 범위 지정
plt.axis([0.8, 3.2, 0, 5]);

# x축, y축 라벨 지정
plt.xlabel("time", fontsize=12, labelpad=12)
plt.ylabel("count", fontsize=12, labelpad=12)

# 범례 생성
plt.legend(loc=(1.05, 0.6), ncol=2);

 -plt.grid(): 배경 그리드 적용

  • visible=True / False: 격자 표시 여부(함수 호출 시 기본값 True)
  • axis='both' / 'x' / 'y': 격자를 그릴 축 선택
  • alpha=0~1 사이 값: 격자의 투명도
  • linestyle='-' / '--' / ':' / ... : 격자의 모양
time = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
sales1 = [100, 85, 75, 98, 92, 97]
sales2 = [90, 92, 98, 87, 89, 83]
sales3 = [40, 52, 60, 73, 87, 93]
plt.title("Monthly Performance", pad=15, fontsize=15);

plt.grid(True, axis='y')

plt.plot(time, sales1, 'ro-', label='sales 1')
plt.plot(time, sales2, 'b>--', label='sales 2')
plt.plot(time, sales3, 'gs:', label='sales 3')

plt.xlabel("month", labelpad=12, fontsize=12)
plt.ylabel("sales", labelpad=12, fontsize=12)

plt.legend(loc='lower right');

 

2) 파이 차트

 -파이 차트는 value_count()로 받은 후에 그려야 함

 -기본적으로 백분율(%)로, 상대적인 비율 표시

 -plt.pie(x=데이터 리스트): 파이 차트 그리기

  • labels=순서 有 나열형 자료: 각 부채꼴의 이름표
  • autopct='%.nf%%': 부채꼴 안의 비율(%) 표시(%기호 문자열로 쓰기 위해서는 %%)
  • startangle=숫자: 차트 시작 각도(기본 3시 방향)
  • explode=[리스트 형태]: 특정 부채꼴을 밖으로 튀어나오게 설정
  • colors=[리스트 형태] / 미리 설정한 팔레트: 각 부채꼴의 색상 지정
  • countercolock=True/False: 시계 반대방향 여부
  • textprops={딕셔너리 형태}: 파이 차트 안 글자들의 스타일 한번에 제어
# 물고기 종류별 count
species_cnt = df_fish['species'].value_counts()
species_cnt

plt.pie(x=species_cnt.values,
        labels=species_cnt.index,
        autopct = "%.2f%%",
        explode=[0, 0, 0.1, 0, 0, 0, 0],  # 파이 떼어내서 강조(내림차순)
        startangle=90,  # 12시 방향부터 시작
        textprops={'fontsize':8},  # 글씨 크기 설정(기본값 10)
        counterclock=False);  # 시계방향
        colors=['lightgray', 'darkgray', 'lightblue', 'lightgray', 'darkgray','lightgray', 'darkgray']);

 

3) 도넛 차트

 -wedgeprops={딕셔너리 형태}: 파이 차트의 각 조각의 모양과 선 스타일 결정 → 파이 차트를 도넛 차트로 변경

options = {'width':0.7,  # 파이 조각의 두께
          'edgecolor':'w',  # 파이 조각의 외곽선 색상
          'linewidth':7,  # 외곽선 두께
          'linestyle':'solid'}  # 파이 조각의 외곽선 스타일

# 파이 차트에서 wedgeprops 옵션이 추가됨
plt.pie(x=species_cnt.values, labels=species_cnt.index, 
       autopct= "%.2f%%", 
       wedgeprops=options);

 

 

2. seaborn

1) stripplot

 -범주형 변수에 따라 숫자 데이터의 분포를 점으로 찍어 보여주는 그래프

 -상자 그림보다 데이터 각각을 시각화(데이터 수가 적을 때 데이터 분포 시각화)

 -sns.stripplot(데이터프레임): 스트립 플롯 생성

  • x=컬럼명, y=컬럼명: x축, y축에 들어갈 컬럼명
  • hue=컬럼명: 데이터를 추가로 구분할 범주
  • jitter=True / False / 숫자: 점들이 겹치지 않게 옆으로 흩뿌리는 정도(False는 모든 점이 한 줄로 겹침)
  • size=숫자: 점의 크기(디폴트값 5)
  • palette='deep' / 'muted' / [리스트 형식] : 색상 조합 설정
sns.stripplot(df_fish, y='weight', x='species', palette='pastel',
             marker="*", jitter=0.3);


 

#부트캠프후기 #멀티캠퍼스부트캠프 # 데이터마케팅부트캠프