Skip to Content

01. Streamlit ์‹œ์ž‘ํ•˜๊ธฐ (Setup)

์ดˆ๊ธ‰20๋ถ„

1. Streamlit์ด๋ž€?

Streamlit์€ ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€๋ฅผ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์•ฑ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์›น ํ”„๋ก ํŠธ์—”๋“œ(HTML, CSS, JS) ์ง€์‹ ์—†์ด๋„, ์ˆœ์ˆ˜ Python ์ฝ”๋“œ๋งŒ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ง•

  • Python Only: ํŒŒ์ด์ฌ ๋ฌธ๋ฒ•๋งŒ ์•Œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • Interactive: ๋ฒ„ํŠผ, ์Šฌ๋ผ์ด๋”, ์ž…๋ ฅ์ฐฝ ๋“ฑ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Fast: ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•˜๋ฉด ์›นํŽ˜์ด์ง€๊ฐ€ ์ฆ‰์‹œ ์ƒˆ๋กœ๊ณ ์นจ๋ฉ๋‹ˆ๋‹ค.

2. ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •

๋จผ์ € Streamlit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โ“ ๋ฌธ์ œ 1: Streamlit ์„ค์น˜

Q. ํ„ฐ๋ฏธ๋„(Terminal)์„ ์—ด๊ณ  pip๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ streamlit์„ ์„ค์น˜ํ•˜์„ธ์š”.

pip install streamlit

์„ค์น˜๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”.

streamlit hello

3. Hello World!

์ฒซ ๋ฒˆ์งธ ์•ฑ์„ ๋งŒ๋“ค์–ด๋ด…์‹œ๋‹ค.

โ“ ๋ฌธ์ œ 2: ์ฒซ ๋ฒˆ์งธ ์•ฑ ์‹คํ–‰

Q. app.py๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ํ™”๋ฉด์— โ€œHello, Analyst!โ€๋ผ๋Š” ํฐ ์ œ๋ชฉ์„ ๋„์›Œ๋ณด์„ธ์š”.

1๋‹จ๊ณ„: Python ํŒŒ์ผ ์ƒ์„ฑ

์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— app.py ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: ์ฝ”๋“œ ์ž‘์„ฑ

๋‹ค์Œ ์ฝ”๋“œ๋ฅผ app.py์— ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.

import streamlit as st import pandas as pd # ์ œ๋ชฉ ์ž‘์„ฑ st.title("My First Dashboard ๐Ÿ“Š") # ํ…์ŠคํŠธ ์ž‘์„ฑ st.write("Hello, Analyst! ๋ฐ์ดํ„ฐ ๋ถ„์„์˜ ์„ธ๊ณ„์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.")

3๋‹จ๊ณ„: ์•ฑ ์‹คํ–‰

ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

streamlit run app.py

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋™์œผ๋กœ ์—ด๋ฆฌ๋ฉด์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.


4. ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ถœ๋ ฅํ•˜๊ธฐ

๋ถ„์„์˜ ๊ฒฐ๊ณผ๋ฌผ์ธ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„(DataFrame)์„ ์˜ˆ์˜๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

โ“ ๋ฌธ์ œ 3: ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์‹œ๊ฐํ™”

Q. app.py์— ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ CSV ํŒŒ์ผ์„ ์ฝ์–ด์˜ค๊ฑฐ๋‚˜ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ๋งŒ๋“ค์–ด์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜์„ธ์š”.

๐Ÿ’ก

Hint: st.dataframe() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ ฌ๊ณผ ํ•„ํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•œ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

# (app.py์— ์ด์–ด์„œ ์ž‘์„ฑ) st.header("1. Data Overview") # ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ data = { 'Product': ['Shirt', 'Pants', 'Hat'], 'Price': [25, 40, 15], 'Stock': [100, 50, 200] } df = pd.DataFrame(data) # ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ถœ๋ ฅ st.dataframe(df) # ํŒ: ์ž‘์€ ํ‘œ๋Š” st.table()์ด ๋” ๊น”๋”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. st.subheader("Static Table") st.table(df)

๐Ÿ’ก ์š”์•ฝ

  • pip install streamlit: ์„ค์น˜๋Š” ํ•œ ๋ฒˆ์ด๋ฉด ๋๋‚ฉ๋‹ˆ๋‹ค.
  • streamlit run app.py: ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.
  • st.title(), st.write(), st.dataframe(): ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” 3๋Œ€์žฅ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฑ•ํ„ฐ์—์„œ๋Š” **์‚ฌ์ด๋“œ๋ฐ”(Sidebar)**์™€ **์ปฌ๋Ÿผ(Columns)**์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง„์งœ ๋Œ€์‹œ๋ณด๋“œ์ฒ˜๋Ÿผ ๋ ˆ์ด์•„์›ƒ์„ ๊พธ๋ฉฐ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Last updated on

๐Ÿค–AI Mock InterviewPractice with real questions