Today I Learned

[내일배움캠프 QA/QC 6기] TIL #051

JiJi0406 2026. 7. 24. 20:56

[ 오늘 학습한 것 ]

 

 

※ 중간중간 py파일 수정하고 나서, 파일 저장 → Streamlit 페이지 새로고침 순서를 지켜야 코드 수정한 게 바로 반영!

 

+ 사용할 수 있는 함수는 https://docs.streamlit.io/ 공식 문서에 잘 정리되어 있다.

 

1. 텍스트 계열 함수 

st.header() st.header("이것은 헤더입니다.") 섹션 제목 크기의 굵은 텍스트로 표시됨
st.subheader() st.subheader("이것은 서브헤더입니다.") 헤더보다 한 단계 작은 제목으로 표시됨
st.markdown() st.markdown("**굵게** 또는 *기울임*") 마크다운 문법이 그대로 스타일 적용돼서 렌더링됨 (표, 색상, 이모지도 가능)
st.caption() st.caption("주석 텍스트") 작은 회색 글씨로 캡션처럼 표시됨
st.text() st.text("간단 텍스트") 스타일 없는 순수 텍스트로 표시됨
st.write() st.write("텍스트") / st.write({"key":"value"}) 입력한 객체 종류(텍스트, 딕셔너리, 데이터프레임 등)에 맞게 자동으로 적절한 형태로 표시됨

 

 

2. 코드 및 수식 표현

st.code() st.code(code_example, language="python") 코드 블록이 예쁘게 표시되고 복사 버튼도 자동 생성
st.latex() st.latex(r"\frac{n!}{k!(n-k)!}") LaTeX 문법으로 수식이 렌더링됨
  • 만약 프론트엔드 코드로 직접 이런 걸 구현하려면 회색 배경 음영 처리하고, 복사 버튼도 하나하나 만들고, 함수/텍스트 색깔도 일일이 지정하고... 참 귀찮은데 Streamlit은 이미 만들어진 기능을 그냥 갖다 쓸 수 있어서 훨씬 편하다
  • 데이터분석가들이 많이 쓰는 도구라서 그런지 수식이나 텍스트 표현 기능을 잘 지원하는 느낌

 

3. 입력 위젯

st.text_input() user_name = st.text_input("이름을 입력하세요", placeholder="홍길동") 한 줄 텍스트 입력창이 생기고, 입력값이 user_name 변수에 저장됨
st.text_area() user_memo = st.text_area("메모를 남겨주세요", height=100) 여러 줄 입력 가능한 텍스트 박스 생성
st.number_input() age = st.number_input("나이를 입력하세요", min_value=1, max_value=120, value=20) 숫자 입력창(증감 버튼 포함) 생성
st.date_input() selected_date = st.date_input("날짜 선택") 캘린더 형태의 날짜 선택 위젯 생성
st.selectbox() fruit = st.selectbox("어떤 과일을 좋아하세요?", ["사과", "바나나", "딸기"]) 드롭다운으로 하나만 선택 가능한 위젯 생성
st.multiselect() colors = st.multiselect("좋아하는 색을 골라보세요", ["빨강", "파랑", "초록", "노랑"], ["빨강"]) 여러 개 복수 선택 가능한 위젯 생성
st.radio() choice = st.radio("어떤 동물을 좋아하세요?", ("고양이", "강아지", "코끼리")) 라디오 버튼 형태로 하나 선택
st.file_uploader() uploaded_file = st.file_uploader("CSV 파일을 업로드 해주세요", type=["csv"]) 파일 업로드 창 생성, 업로드하면 uploaded_file.name으로 파일명 확인 가능
st.button() if st.button("클릭"): st.write("클릭됨!") 클릭하면 True를 반환하는 버튼 생성 (Boolean 타입)
st.slider() val = st.slider("값을 선택하세요", 0, 100, 50) 범위 안에서 값 조절 가능한 슬라이더 생성
  • user_name = st.text_input(...)처럼, 위젯이 반환하는 값을 변수에 저장해서 바로 아래에서 활용하는 패턴이 계속 반복됨 → 이 구조가 Streamlit의 기본 흐름인 듯
  • 텍스트 표현 방법이 이렇게 다양한 건, 절대 다 외울 필요 없고 프로젝트할 때 다시 와서 구글링하거나 GPT한테 물어보면서 그때그때 찾아 쓰면 됨!

이런 식으로 구현!

 

4. 그래프 시각화

1) Streamlit 기본 차트

  • st.line_chart(), st.bar_chart(), st.area_chart()로 데이터프레임 넣으면 바로 차트가 그려짐
  • 장점: 코드가 매우 간단함 / 단점: 커스터마이징이 제한적
  • 근데 기본 제공 차트는 너무 단순해서 실제로는 거의 안 쓰는 편이라고,..

2) Matplotlib & Seaborn

  • st.pyplot(fig)로 matplotlib Figure 객체를 그대로 렌더링 가능
  • matplotlib은 pyplot 인터페이스(자동 카메라처럼 간단, 초보자용)와 객체 지향 인터페이스(수동 카메라처럼 세밀한 제어 가능, fig, ax = plt.subplots()로 시작) 두 방식이 있음
  • 한글 깨질 때는 pip install koreanize-matplotlib 설치하고 import koreanize_matplotlib 해주면 해결됨

3) Plotly

  • st.plotly_chart(fig)로 렌더링하면 마우스 오버 시 툴팁, 드래그로 확대·축소까지 인터랙티브하게 가능

 

5. 프로젝트 때 Streamlit 활용 꿀팁

  • GPT한테 물어볼 때는 그냥 질문하지 말고, Streamlit 공식 홈페이지 내용을 복사해서 붙여넣은 다음 "이걸 참고해서 답변해줘"라고 하는 게 훨씬 낫다! (Streamlit이 업데이트가 빨라서 GPT가 최신 정보를 못 따라갈 수 있음)
  • 공식 문서를 자주 확인하는 게 중요한 이유: st.header() 같은 함수 안에도 다양한 파라미터가 있어서, 내가 필요한 기능을 문서에서 찾을 수 있음
  • 공식 홈페이지가 전부 영어라서, GPT한테 번역 부탁하면서 보는 것도 좋음

 

 

 

 

오늘의 운세는...

대박~