텍스트 및 다양한 출력 관련 핵심 함수를 살펴봅니다.
텍스트 계열 함수
파일명: 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)!}")
- 사용자의 간단한 텍스트 입력을 받을 수 있습니다.
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)
- 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)
- 다양한 방법으로 데이터를 시각화하는 방법을 살펴봅니다.
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