Streamlit 2일차

홍유택·2025년 2월 25일

1. Streamlit 주요 함수 살펴보기

텍스트 및 다양한 출력 관련 핵심 함수를 살펴봅니다.
텍스트 계열 함수
파일명: 1_streamlit_text.py
st.header()

  • 섹션이나 큰 제목을 표현할 때 사용합니다.
    st.header("이것은 헤더입니다.")
  • 헤더보다 한 단계 작은 제목입니다.
    st.subheader("이것은 서브헤더입니다.")
  • 마크다운 문법으로 텍스트 스타일링이 가능합니다.
    st.markdown("굵게 또는 기울임 같은 마크다운 문법을 사용할 수 있어요.")

    st.title("Markdown Demo")

st.markdown("# H1 헤더 (MarkDown)")
st.markdown("## H2 헤더 (MarkDown)")
st.markdown("### H3 헤더 (MarkDown)")
st.markdown("굵게 혹은 기울임 할 수도 있어요.")
st.markdown("Streamlit 공식 사이트로 이동하기")

st.markdown("""
- **:red[빨간색 텍스트]**와 **:blue[파란색 텍스트]**  
- 이모지 :sparkles:도 넣어보자! 
""")
st.markdown("""
| 이름     | 직업     | 나이 |
|----------|----------|------|
| 홍길동   | 도적     | 25   |
| 김철수   | 개발자   | 30   |
| 이영희   | 디자이너 | 28   |
""")
  • 작은 설명이나 캡션을 달 때 사용합니다.
    st.caption("이미지나 그래프의 주석을 달 때 유용합니다."
  • 단순 텍스트를 표시할 때 사용합니다.
    st.text("간단히 텍스트만 표시합니다.")
  • 텍스트, 데이터프레임, 차트 등 다양한 객체를 자동으로 적절히 표시합니다.
    st.write("이것은 write 함수입니다.")
    st.write({"key": "value"})
  • 코드 블록을 예쁘게 표시합니다.
    code_example = """
    def hello_world():
    print("Hello World")
    """
    st.code(code_example, language="python")
  • LaTeX 문법을 이용한 수식 표현이 가능합니다.
    st.latex(r"\frac{n!}{k!(n-k)!}")

02. 다양한 입력 위젯 사용

  • 사용자로부터 데이터를 입력받고, 이를 활용하는 다양한 방법을 배워봅니다.
    텍스트 입력
    파일명: 2_streamlit_input.py
    st.text_input()
    • 사용자의 간단한 텍스트 입력을 받을 수 있습니다.
      user_name = st.text_input("이름을 입력하세요", placeholder="홍길동")
      st.write(f"안녕하세요, {user_name} 님!")
  • 여러 줄의 텍스트를 입력받을 수 있는 공간입니다.
    user_memo = st.text_area("메모를 남겨주세요", height=100)
    st.write("메모 내용:", user_memo)
  • 숫자(정수, 실수)를 입력받거나 슬라이더 형태로 사용할 수 있습니다.
    age = st.number_input("나이를 입력하세요", min_value=1, max_value=120, value=20)
    st.write(f"당신의 나이는 {age}입니다.")
  • 날짜를 선택할 수 있는 캘린더 위젯입니다.
    selected_date = st.date_input("날짜 선택")
    st.write("선택한 날짜:", selected_date)
  • 여러 옵션 중 하나만 고를 수 있습니다.
    fruit = st.selectbox("어떤 과일을 좋아하세요?", ["사과", "바나나", "딸기"])
    st.write(f"선택한 과일은 {fruit}입니다.")
  • 여러 옵션을 복수로 선택할 수 있습니다.
    colors = st.multiselect("좋아하는 색을 골라보세요", ["빨강", "파랑", "초록", "노랑"], ["빨강"])
    st.write("선택한 색상:", colors)
  • st.radio()
    choice = st.radio(
    "어떤 동물을 좋아하세요?",
    ("고양이", "강아지", "코끼리")
    )
    st.write("당신이 선택한 동물은:", choice)

    if choice == "고양이":
    st.write("🐱 야옹~")
    elif choice == "강아지":
    st.write("🐶 멍멍!")
    else:
    st.write("🐘 뿌우~")
  • st.file_uploader()파일(이미지, CSV 등)을 업로드할 수 있는 위젯을 제공합니다.
    uploaded_file = st.file_uploader("CSV 파일을 업로드 해주세요", type=["csv"])
    if uploaded_file is not None:
    st.write("업로드한 파일 이름:", uploaded_file.name)
  • st.button()
    클릭 여부에 따라 True/False를 반환합니다.
    if st.button("클릭"):
    st.write("버튼이 클릭되었습니다!")

    import random
    st.title("🔮 오늘의 운세 뽑기")
    if st.button("운세 뽑기"):
    fortunes = [
    "대박! 오늘은 황금 같은 기회가 온다!",
    "조심조심~ 길을 가다가 복이 굴러들어올 수도?!",
    "평탄한 하루! 큰 일은 없으나 작은 행복이 있을 예정!",
    "약간의 우울함이 스칠 수 있지만, 친구와 수다로 극복 가능!",
    "캠프 끝나고 여자친구가 생겨요!"
    ]
    result = random.choice(fortunes)
    st.markdown(f"당신의 운세: {result}")
    else:
    st.markdown("💡 버튼을 눌러 당신의 오늘 운세를 확인해보세요!")

    import random
    st.title("📝 닉네임 랜덤 생성기")
    adj = ["멋진", "우아한", "화끈한", "엉뚱한", "귀여운"]
    noun = ["고양이", "강아지", "코알라", "원숭이", "도마뱀"]
    if st.button("닉네임 생성"):
    nickname = random.choice(adj) + " " + random.choice(noun)
    st.write(f"당신의 새로운 닉네임은: {nickname}")

    st.slider()
    숫자 범위를 시각적으로 조절할 수 있는 슬라이더입니다.
    val = st.slider("값을 선택하세요", 0, 100, 50)
    st.write("현재 값:", val)

03. 데이터 로딩 및 테이블 시각화

  • CSV/Excel 데이터를 불러와서 간단 전처리를 한 뒤, 테이블(데이터프레임)로 시각적으로 확인해봅니다
  • CSV/Excel 파일 업로드 및 읽기
    st.dataframe()
    import streamlit as st
    import pandas as pd
    st.title("데이터 로딩 & 간단 전처리 예제")
    파일 업로드 위젯 (csv, xlsx 등 허용)
    uploaded_file = st.file_uploader(
    "분석할 CSV 또는 Excel 파일을 업로드하세요",
    type=["csv", "xlsx"]
    )
    df = None
    if uploaded_file is not None:
    # 파일 확장자에 따라 다른 함수로 읽습니다.
    if uploaded_file.name.endswith(".csv"):
        df = pd.read_csv(uploaded_file)
    elif uploaded_file.name.endswith(".xlsx"):
        df = pd.read_excel(uploaded_file)
st.write("**원본 데이터 미리보기**")
st.dataframe(df.head(), use_container_width=True)

04. 그래프 시각화

  • 다양한 방법으로 데이터를 시각화하는 방법을 살펴봅니다.
    Streamlit 기본 차트 활용하기
    파일 명 : 3_streamlit_draw_chart.py
    import pandas as pd
    import numpy as np
    chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["a", "b", "c"]
    )
    st.line_chart(chart_data) # 라인 차트
    st.bar_chart(chart_data) # 바 차트
    st.area_chart(chart_data) # 영역 차트

    장점: 코드가 매우 간단하며, 즉시 차트를 표시할 수 있음
    단점: 차트 커스터마이징이 제한적
    Matplotlib & Seaborn
    잠깐 복습! matplotlib 사용 문법 2가지
    패키지 설치
    pip install matplotlib

    pip install seaborn
profile
안녕하세요

0개의 댓글