st.dataframe — 데이터프레임을 인터랙티브한 표로
st.dataframe — 데이터프레임을 인터랙티브한 표로
파이썬에서 데이터프레임을 print로 찍어보면 터미널 텍스트가 전부예요. Streamlit의 st.dataframe은 그 데이터프레임을 인터랙티브한 표로 그려줘요. 사용자가 표를 정렬하고, 크기를 조절하고, 검색하고, 클립보드로 복사할 수 있어요. pandas·Polars·PyArrow 같은 데이터프레임 계열 객체를 다양하게 받을 수 있어요.
출처: https://docs.streamlit.io/develop/api-reference/data/st.dataframe
기본 사용
import pandas as pd
import streamlit as st
df = pd.DataFrame({'이름': ['김', '이', '박'], '점수': [90, 85, 95]})
st.dataframe(df)
st.dataframe은 st.table과 달리 정렬·검색 같은 상호작용이 가능한 게 차이예요. 데이터를 편집할 수 있는 st.data_editor와는 또 다르죠.
주요 파라미터
시그니처를 보면 이렇게 생겼어요. st.dataframe(data=None, width="stretch", height="auto", *, use_container_width=None, hide_index=None, column_order=None, column_config=None, key=None, on_select="ignore", selection_mode="multi-row", selection_default=None, row_height=None, placeholder=None, lazy=None)
- data: 표시할 데이터. 데이터프레임류 객체 외에 dict·list 같은 컬렉션도 받아요. 인식 못 하는 타입은
.to_pandas()나.to_arrow()로 변환돼요. - width / height:
"stretch"(부모 폭에 맞춤),"content"(내용에 맞춤), 또는 픽셀 정수.height="auto"(기본)는 최대 10행까지만 보여줘요. - column_config: 컬럼의 표시 이름, 타입, 너비, 포맷을 바꿔요. 달러 금액으로 보여주고 싶으면
st.column_config.NumberColumn("Dollar values", format="$ %d")처럼 쓸 수 있어요.
선택(on_select) 활성화하기
on_select="rerun"으로 설정하면 데이터프레임이 입력 위젯처럼 동작해요. 사용자가 행·열·셀을 선택하면 이벤트가 발생하고, .selection 딕셔너리로 선택 결과를 받을 수 있어요.
import pandas as pd
import streamlit as st
from numpy.random import default_rng as rng
df = pd.DataFrame(rng(0).standard_normal((12, 5)), columns=["a", "b", "c", "d", "e"])
event = st.dataframe(
df,
key="data",
on_select="rerun",
selection_mode=["multi-row", "multi-column", "multi-cell"],
)
event.selection
selection_mode로 어떤 선택을 허용할지 정해요 — "multi-row"(기본), "single-row", "multi-column", "single-cell" 등이 있어요. 행 정렬을 해도 선택 행은 원래 정수 위치를 유지해요.
더 알아보기
컬럼 표시·편집 동작을 세밀하게 다루는 Column configuration API는 st.column_config 문서에서 볼 수 있어요.