데이터 분석 입문

Chapter.2 데이터 분석 입문(4)

devjjun 2026. 3. 30. 21:00

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)을 직접 만들고 제어
  • 그래프를 여러 개 그리거나, 세밀하게 꾸밀 때 필수

Pyplot 스타일(자동모드) 예시

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) → 다변수 비교

 

Seaborn 시각화 카테고리별 대표 함수 총정리

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의 인터랙티브 차트로 상호작용이 가능해서 데이터에 따라 잘 활용하면 그래프에 대한 이해에 도움이 될 것 같다.