데이터 분석 기본_시각화
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);

#부트캠프후기 #멀티캠퍼스부트캠프 # 데이터마케팅부트캠프
'부트캠프 > 멀티캠퍼스_퍼포먼스 마케팅과 데이터 분석' 카테고리의 다른 글
| [멀티캠퍼스 부트캠프 7주차(2)] 데이터 분석 심화_선형회귀 모델 (0) | 2026.02.24 |
|---|---|
| [멀티캠퍼스 부트캠프 7주차(1)] 데이터 분석 심화_검정의 이해 (0) | 2026.02.20 |
| [멀티캠퍼스 부트캠프 6주차(1)] 데이터 분석 기본_웹 크롤링(selenium) (0) | 2026.02.09 |
| [멀티캠퍼스 부트캠프 5주차(2)] 데이터 분석 기본_웹 크롤링(requests, beautifulsoup) (0) | 2026.02.08 |
| [멀티캠퍼스 부트캠프 5주차(1)] 데이터 분석 기본_웹 통신 개념 (0) | 2026.02.03 |