ETC

Streamlit - Column configuration

5사 2023. 7. 30. 02:02
 

Introducing column config ⚙️

Take st.dataframe and st.data_editor to the next level!

blog.streamlit.io


Streamlit 사용자들이 데이터프레임 커스터마이징 기능에 대한 요구사항들이 있었고 최근 해당 기능이 릴리즈 되었다! 🎉

사용자들이 요구했던 기능들은 다음과 같다.

Streamlit 1.23부터 해당 기능들을 사용할 수 있게 되었다.

이제 st.dataframe과 st.data_editor의 모든 열을 원하는 대로 커스터마이징 할 수 있다.

 

기능 예제

이번 기능의 메인 주인공은 column_config 매개변수이다. 해당 매개변수가 st.dataframe과 st.data_editor에 추가되었다. column_config는 칼럼 타입을 config에 매핑하는 딕셔너리이다.

st.data_editor(
    df,
    column_config={
        "column 1": "Name",  # change the title
        "column 3": st.column_config.ImageColumn("Avatar"),
        "column 4": st.column_config.NumberColumn(
            "Age", min_value=0, max_value=120, format="%d years"
        ),
        "column 8": st.column_config.LineChartColumn(
            "Activity (1 year)", y_min=0, y_max=100
        ),
    },
)

 

위와 같이 예시를 통해 알 수 있는 기능들

 

  • 멋진 차트가 생겼다! 📈
  • 링크를 더블 클릭해서 열 수 있다.
  • 셀을 더블 클릭하여 편집하고 입력 유효성 검사하는 기능이 작동한다.
    여기에서는 Age 칼럼에 max_value를 120으로 제한해 주었기 때문에 120 이상 입력하려고 할 때 입력이 반영되지 않는다.

뿐만 아니라 텍스트에서 이미지 및 스파크라인 차트까지 모든 것을 다루는 14가지 다른 칼럼 유형도 있다. 이러한 각 클래스는 열의 표시 및 편집 동작을 구성하는 추가 매개변수를 설정할 수 있게 해 준다.

 

parameter 살펴보기

column_config 설정을 건드리지 않고 인덱스 열을 숨길 수 있도록, column_config 매개변수 외에도 몇 가지 매개변수가 추가되었다.

  • 인덱스 열 숨기기 : hide_index=True
  • 열이 표시되는 순서를 설정 : column_order=["col 3", "col2"]
  • st.data_editor에서 개별 열의 편집을 비활성화하기 : disabled=["col1", "col2"]

 

수정된 데이터에 접근하기

때로는 편집된 전체 데이터 프레임을 다시 가져오는 것보다 어떤 셀이 변경되었는지 아는 것이 더 편리하다.

Streamlit은 세션 상태(session state)를 통해 이를 쉽게 할 수 있게 해 준다. 

만약 key 매개변수가 설정되면, Streamlit은 데이터프레임에 대한 변경 사항을 세션 상태에 저장한다.

 

st.data_editor(df, key="data_editor") # 👈 Set a key
st.write("Here's the session state:")
st.write(st.session_state["data_editor"]) # 👈 Access the edited data

 

 

위 코드에서 key는 "data_editor"로 설정되어 있다. st.data_editor 인스턴스에서 데이터에 가해지는 모든 변경사항은 Streamlit에 의해 추적되며 "data_editor"라는 키로 세션 상태에 저장된다.

 

데이터 편집기가 생성된 후, 세션 상태의 "data_editor" 키의 내용이 st.write(st.session_state["data_editor"])를 사용하여 화면에 출력된다.

 

이를 통해 데이터 편집기에서 전체 데이터프레임을 반환하지 않고도 원본 데이터프레임에 가해진 변경사항을 확인할 수 있다. 이는 큰 데이터프레임을 다룰 때 유용하며, 전체 수정된 데이터프레임이 아니라 어떤 셀들이 변경되었는지만 알고 싶을 때 유용하다.