Streamlit 데이터프레임 수정하기

Streamlit 데이터프레임 수정하기

Streamlit
Streamlit 데이터프레임 수정하기
Author

gabriel yang

Published

September 19, 2024


Streamlit은 데이터 애플리케이션을 쉽게 만들 수 있게 해주는 파이썬 라이브러리입니다. 그중 st.data_editor는 사용자가 데이터를 직접 편집할 수 있도록 돕는 유용한 컴포넌트입니다. 이번 블로그 글에서는 st.data_editor의 기본적인 사용법과 간단한 예제를 소개하겠습니다.

st.data_editor란?

st.data_editor는 데이터프레임 형태의 데이터를 테이블로 보여주고, 사용자가 이를 인터랙티브하게 편집할 수 있도록 해주는 Streamlit의 기능입니다. 사용자는 데이터를 직접 수정, 추가 또는 삭제할 수 있으며, 이러한 변경 사항은 실시간으로 반영됩니다.

기본 사용법

st.data_editor의 기본 사용법은 다음과 같습니다:

import streamlit as st
import pandas as pd

# 초기 데이터 생성
data = {
    '이름': ['Alice', 'Bob', 'Charlie'],
    '나이': [24, 30, 22],
    '도시': ['서울', '부산', '대구']
}

df = pd.DataFrame(data)

# 데이터 편집기 생성
edited_df = st.data_editor("데이터 편집기", df)

위 코드를 실행하면 기본적인 데이터 편집기 UI가 나타납니다. 사용자는 이름, 나이, 도시 정보를 편집할 수 있습니다. 더 실용적인 예제로 학생 정보를 관리하는 웹 애플리케이션을 만들어보겠습니다.

1. 초기 데이터프레임 생성

import streamlit as st
import pandas as pd

# 초기 학생 데이터 생성
data = {
    '이름': ['Alice', 'Bob', 'Charlie'],
    '나이': [20, 22, 21],
    '전공': ['컴퓨터공학', '수학', '물리학']
}

df = pd.DataFrame(data)

2. 데이터 편집기 추가

# 데이터 편집기 생성
st.title("학생 정보 관리")

edited_df = st.data_editor("학생 정보 편집", df)

3. 변경된 데이터 처리

편집된 데이터를 처리하기 위해, 사용자가 ‘저장’ 버튼을 클릭하면 변경된 데이터프레임을 출력할 수 있습니다.

if st.button("저장"):
    st.success("데이터가 성공적으로 저장되었습니다!")
    st.write(edited_df)

전체 코드 예제

아래는 전체 코드를 통합한 예제입니다.

import streamlit as st
import pandas as pd

# 초기 학생 데이터 생성
data = {
    '이름': ['Alice', 'Bob', 'Charlie'],
    '나이': [20, 22, 21],
    '전공': ['컴퓨터공학', '수학', '물리학']
}

df = pd.DataFrame(data)

# 데이터 편집기 생성
st.title("학생 정보 관리")
edited_df = st.data_editor(df)

# 저장 버튼 및 데이터 출력
if st.button("저장"):
    st.success("데이터가 성공적으로 저장되었습니다!")
    st.write(edited_df)

  • st.data_editor(df): 데이터프레임 df를 편집할 수 있는 테이블을 생성합니다. 사용자는 이 테이블을 통해 데이터를 직접 수정할 수 있습니다. 수정된 데이터는 edited_df에 저장됩니다.
  • st.write(edited_df): 편집된 데이터프레임을 화면에 출력합니다. 사용자가 편집한 내용을 확인할 수 있습니다.
  • st.button(“저장”): “저장” 버튼을 생성합니다. 사용자가 이 버튼을 클릭하면 아래의 코드가 실행됩니다.
  • 데이터프레임의 수정 : 저장된 데이터 프레임이 변경되면 앱은 재 실행됩니다. 재 실행 시 button element는 false를 return하기 때문에 edited_df는 저장을 누를 때만 화면에 출력됩니다.