TIL - 2025.06.02

Date:     Updated:

카테고리:

태그:

2025-06-02 · Day 19

일독일행 — 하루에 한 가지는 반드시 가져간다

“오늘의 하나: plotly.express


Abstract · 오늘 배운 것 한눈에 보기 (1‑4줄)

  • Plotly는 웹 기반의 인터랙티브한 시각화를 지원하는 Python 라이브러리로, plotly.express를 사용하면 간결한 코드로 다양한 그래프를 생성할 수 있다.
  • 이번 실습에서는 산점도, 선 그래프, 막대 그래프, 파이 차트 등 기본 차트를 다뤘고, hovertemplate, animation_frame, facet_row 등 고급 기능도 실습했다.
  • 또한 plotly.graph_objectsmake_subplots를 활용해 복합 레이아웃과 3D 시각화 구성 방법도 다뤘다.

Keywords Hierarchy

익숙한 개념 ✅ 조금 아는 개념 🔍 잘 모르는 개념 ❓ 전혀 새로운 개념 🚀
pandas subplot plotly.express, hovertemplate volume rendering, 3D 시각화

Tip : 각 열에 최대 3개만 적어 집중도를 유지하세요.


Deep‑Dive Notes (선택한 키워드 정리)

1. 익숙한 개념

  • pandas
    • 언제 사용?
      • csv, Excel 등 파일에서 표 데이터를 불러오거나 데이터 처리와 같은 작업을 수행을 하기 위함.
      • Series와 DataFrame을 통해 데이터 가공, 집계, 필터링 등을 효율적으로 처리할 수 있음.
      • Plotly에서 그래프를 그리기 위해서는 Dataframe을 기본으로 사용하기 때문에 pandas 사용
    • 💡핵심 포인트
      • groupby(), query(), value_counts(), reset_index() 자주 활용
      • 시각화 전에 전처리를 깔끔하게 해야 시각화가 잘 나옴
    • 🧪예시

      avg_tip_by_day = tips_df.groupby('day', as_index=False)['tip'].mean()
      



2. 조금 아는 개념

  • subplot
    • 개념 요약
      • 여러 개의 그래프를 하나의 화면에 배치하는 기능
      • make_subplots함수를 통해 그리드(행과 열) 형태의 레이아웃을 만들고 각 셀에 다른 종류의 그래프를 추가할 수 있다.
    • 💡핵심 포인트
      • rows, cols, subplot_titles, specs 인자를 활용
      • fig.add_trace(trace, row=r, col=c)와 같은 방식으로 Figure 객체에 trace 추가하면서 위치 지정한다.
      • 레이아웃이나 축 제목은 update_layout(), update_xaxes() 등으로 제어한다.
    • 🧪예시

      fig = make_subplots(rows=1, cols=2, subplot_titles=["히스토그램", "박스플롯"])
      fig.add_trace(go.Histogram(x=tips_df['total_bill']), row=1, col=1)
      fig.add_trace(go.Box(y=tips_df['tip'], x=tips_df['day']), row=1, col=2)
      



3. 잘 모르는 개념

  • plotly.express
    • 개념 요약
      • Plotly의 고수준 시각화 API로, 간결한 문법으로 다양한 인터랙티브 그래프를 생성할 수 있다.
      • px.scatter, px.line, px.bar, px.pie, px.violin, px.histogram, px.sunburst 등을 통해 다양한 그래프들을 생성할 수 있다.
    • 💡핵심 포인트
      • facet_row, animation_frame, hover_data, color_discrete_sequence 등 옵션이 강력하다.
      • 코드가 간결하면서도 시각적으로 뛰어난 결과를 제공한다.
    • 🧪예시

      fig = px.scatter(gapminder_2007, x="gdpPercap", y="lifeExp",
                   size="pop", color="continent",
                   hover_name="country", log_x=True)
      



  • hovertemplate
    • 개념 요약
      • 데이터 포인트에 마우스를 올렸을 때 표시되는 툴팁(hover info)을 완전히 커스터마이징할 수 있는 문법이다.
      • HTML 유사 템플릿을 사용한다.
    • 💡핵심 포인트
      • fig.update_traces(hovertemplate="...")로 설정한다.
      • {x}, {y},{customdata[0]} 등 변수를 사용한다.
      • <extra></extra>로 trace명 제거 가능하다.
    • 🧪예시

      fig.update_traces(
          hovertemplate="<b>%{hovertext}</b><br>GDP: %{x:,.0f}<br>Life Exp: %{y:.1f}년"
      )
      



4. 전혀 새로운 개념

  • volume rendering
    • 개념 요약
      • 3차원 스칼라 필드(예: 의료 영상 데이터 MRI, CT 스캔)의 내부 구조를 시각화한다.
      • 밀도에 따라 다른 색상과 투명도를 부여하여 표현한다.
    • 💡핵심 포인트
      • value, x/y/z, opacity, isomin, isomax 조정
      • 3D 내부 밀도를 색상과 투명도로 표현
    • 🧪예시

      fig = go.Figure(go.Volume(
          x=X.flatten(), y=Y.flatten(), z=Z.flatten(),
          value=V.flatten(), opacity=0.1, surface_count=15
      ))
      



  • 3D 시각화
    • 개념 요약
      • 데이터의 세 가지 변수(x, y, z)를 시각화하기 위한 방법
      • 점 위치, 크기, 색상을 통해 4차원 이상 표현도 가능하다.
    • 💡핵심 포인트
      • scene 옵션을 통해 축 제목 및 범위 설정
      • mesh 또는 surface 형태로 복잡한 구조 표현 가능
      • 시각적으로 드래그와 회전을 통한 데이터 탐색 가능
    • 🧪예시

      fig = px.scatter_3d(iris_df, x='sepal_length', y='sepal_width', z='petal_width',
                      color='species', size='petal_length')
      




Reflection · 느낀 점 & 도전 과제

  • 파이썬의 시각화 라이브러리 중 Plotly를 배웠는데, 짧은 코드로 다양한 그래프가 표현된다는 것에 놀랐다.
  • 간단한 그래프는 실습으로 이해가 되고 괜찮지만, 복잡한 그래프의 경우 좀 이해가 되지 않아서 학습이 더 필요하다고 느꼈다.
  • 작동 방식 등에 대한 이해가 끝나면 그래프 생성에 대한 연습을 해야할 것 같다.

Tomorrow’s Action — “One Small Step”

  • 실습 파일에 있는 연습문제 다시 풀어보기
  • 공공데이터 활용해서 시각화 연습해보기


※ 이 로그는 나만의 발자취를 남기기 위한 개인 학습 기록입니다. 공유 목적이 아닌 성장 추적에 집중하세요.

© 2025 회고 없는 성장은 없다

til-2025 카테고리 내 다른 글 보러가기

첫 번째 글입니다 가장 최근 글입니다

댓글 남기기