TIL(Today I Learned)
1️⃣데이터 분석 입문 4
데이터 시각화 준비
더보기
더보기
#라이브러리
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 한글 폰트 설정 (Windows/Mac)
import platform
if platform.system() == 'Darwin': # Mac
plt.rc('font', family='AppleGothic')
elif platform.system() == 'Windows': # Windows
plt.rc('font', family='Malgun Gothic')
# 마이너스 부호 깨짐 방지
plt.rc('axes', unicode_minus=False)
# 화질 선명하게 설정 (Retina 디스플레이 지원)
%config InlineBackend.figure_format = 'retina'
import warnings
#경고 메시지 숨기기
warnings.filterwarnings("ignore", category=FutureWarning)
Matplotlib의 두가지 방법:plt vs ax
Pyplot 인터페이스 (plt.~): "자동 카메라"
- 빠르고 간편하게 한 장 찍을 때 사용
- plt.plot(), plt.title() 처럼 plt가 자동으로 적용
객체 지향 인터페이스 (fig, ax): "DSLR 수동 모드"
- 도화지(Figure)와 축(Axes)을 직접 만들고 제어
- 그래프를 여러 개 그리거나, 세밀하게 꾸밀 때 필수

plt.figure(figsize=(10, 5)) # 1. 캔버스 크기 설정 (생략 가능)
plt.bar(day_counts.index, day_counts.values) # 2. 그래프 그리기
plt.title("요일별 손님 수 (plt 방식)") # 3. 제목 달기
plt.xlabel("요일") # 4. 축 이름
plt.ylabel("빈도")
plt.show() # 5. 출력

# 1. 도화지(fig)와 축(ax) 생성
fig, ax = plt.subplots(figsize=(10, 5))
# 2. ax(축)에게 그림을 그리라고 명령
ax.bar(day_counts.index, day_counts.values, color='orange')
# 3. 제목 및 라벨 설정 (set_ 접두사 주의!)
ax.set_title("요일별 손님 수 (ax 방식)")
ax.set_xlabel("요일")
ax.set_ylabel("빈도")
plt.show()
| 구분 | fig(Figure) | ax(Axes) |
| 비유 | 거대한 액자, 캔버스 전체 | 액자 속 개별 도화지, 차트 1개 |
| 주요 기능 | 전체 크기 조절, 이미지 저장, 레이아웃 관리 | 데이터 플로팅, 축 설정, 눈금 제어 |
| 개수 | 실행 시 보통 1개 | subplots(n, m) 설정에 따라 여러 개 가능 |
Seaborn: 통계 시각화 라이브러리
Seaborn을 사용하는 이유
Seaborn은 데이터 시각화를 쉽고 빠르게 할 수 있도록 도와주는 라이브러리로,
복잡한 설정 없이도 깔끔하고 직관적인 그래프를 만들 수 있다.
- 관계형 (Relational) → 변수 간 관계
- 범주형 (Categorical) → 그룹 비교
- 분포형 (Distribution) → 데이터 퍼짐
- 회귀형 (Regression) → 추세/예측
- 행렬형 (Matrix) → 다변수 비교

Plotly: 인터랙티브 차트(Interactive chart)
Plotly는 웹 기반 인터랙티브 데이터 시각화 라이브러리로,
그래프 위에 마우스를 올리면 값이 표시되고, 확대/축소가 가능한 것이 특징
왜 Plotly를 사용하는가?
- 정적인 그래프보다 데이터 탐색이 쉬움
- hover(마우스 오버)로 값 확인 가능
- 확대/축소 및 드래그 지원
- 웹에 바로 삽입 가능

더보기
더보기
import plotly.express as px
# Seaborn과 문법이 거의 비슷합니다!
fig = px.scatter(
tips,
x="total_bill",
y="tip",
color="day", # 색상 (Seaborn의 hue)
symbol="sex", # 모양 (Seaborn의 style)
size="size", # 크기
hover_data=['time'], # 마우스 올렸을 때 추가로 보여줄 정보
title="Interactive Tips Scatter Plot"
width=1200,
height=600
)
fig.show()
2️⃣Python 알리고즘 주요 문제
문제52
- 문제 설명: 빈 병 a개를 주면 b개의 콜라를 받을 수 있을 때, n개로 최대 몇 개를 얻는지 구하는 문제
- 제한 사항:
- 1 ≤ b < a ≤ n ≤ 1,000,000
- 정답은 항상 int 범위를 넘지 않게 주어집니다
- 입출력 예

- 문제 접근 : while문을 통해 빈병 n개가 마트에서 반환을 위해 요구하는 a보다 크거나 같을 때 동안 반복하며 문제에 따른 수식을 구현하면 될 것이다.
- 코드
def solution(a, b, n):
answer = 0
while n >= a:
answer += (n // a) * b
n = (n % a) + (n // a) * b
return answer
💡 느낀점
다양한 라이브러리를 활용하여 데이터에 따라 시각화하는 실습을 통해 문제나 클라이언트의 요구에 따라 툴을 적용하는 것을 학습할 수 있었다. Plotly의 인터랙티브 차트로 상호작용이 가능해서 데이터에 따라 잘 활용하면 그래프에 대한 이해에 도움이 될 것 같다.
'데이터 분석 입문' 카테고리의 다른 글
| Chapter.2 데이터 분석 입문(6) (0) | 2026.04.01 |
|---|---|
| Chapter.2 데이터 분석 입문(5) (0) | 2026.03.31 |
| Chapter.2 데이터 분석 입문(3) (0) | 2026.03.27 |
| Chapter.2 데이터 분석 입문(2) (0) | 2026.03.26 |
| Chapter.2 데이터 분석 입문(1) (0) | 2026.03.25 |