티스토리 뷰

1) AARRR

  • Acquisition(사용자 획득)
  • Activation(활성화)
  • Retension(유지/재방문)
  • Revenue(수익화)
  • Refferal(추천)

(1) Acquisition(사용자 획득)

-핵심 지표

  • Active User: 활성 유저수(DAU - Daily, WAU - Weekly, MAU - Monthly)
  • CAC(Customer Acquisition Cost): 유저 획득 비용 - 한명의 사용자를 데려오기 위해 지출하는 평균 비용

- 측정 방법: 웹 - UTM 파라미터, 앱 - 어트리뷰션(Attribution)

 

(2) Activation(활성화)

STEP 1. 사용자가 서비스의 핵심 기능을 사용 (신규 유저를 아하 모먼트로, 유저에게 비즈니스 가치를 되돌려 받는)

- 행동 중심 온보딩(모바일 게임의 튜토리얼)/혜택 중심 온보딩(굿노트, Adobe)/계정 중심 온보딩(SNS)

 

STEP 2. 아하 모먼트: 유저가 처음으로 가치를 발견하도록 만드는 순간 or 과정

STEP 3. 첫번째 가치 교환: 유저가 돈을 쓰거나, 회사가 돈을 벌게 해주는 단계

 

(3) Retension(유지/재방문)

- 리텐션: 지속적으로 제품을 사용하는 활성 유저의 비율

- Revenue

- 바이럴 계수(K): 1명이 몇명을 데려오는지


1) Streamlit이란? — Tableau와의 차이

  • Streamlit: 웹 개발 지식 없이 Python 코드만으로 대시보드 및 웹앱 제작 가능
  • Tableau와 비교했을 때 Streamlit의 강점:
    • 분석·전처리·시각화 코드를 그대로 대시보드에 활용 가능
    • 머신러닝·AI 모델을 쉽게 웹앱으로 배포 가능
    • Tableau는 ML 적용 시 TabPy 통신이 필요해 복잡함
Tableau는 기업 현장의 중심 기술로 유지하되, Streamlit은 AI/ML 친화적 사이드 기술로 익혀두면 강력한 무기가 된다

 

2) 개발 환경 설정

  • Python 3.10 ~ 3.14 버전만 지원 (Jupyter Notebook 사용 불가)
  • VS Code에서 Python Interpreter 설정 필수
  • 실행 방법: 터미널에서 streamlit run [파일경로]
    • 파일 경로는 마우스 우클릭 → Copy Relative Path 로 복사
  • UV 사용자: uv sync 실행 후 패키지 자동 설치
Streamlit은 파일 단위 실행이므로 인터프리터 설정과 실행 명령어 방식이 일반 Python 스크립트와 다르다는 것을 꼭 기억할 것

 

3) 핵심 출력 함수

  • 제목류: st.title() → st.header() → st.subheader() 순으로 크기 감소
  • 텍스트: st.markdown(), st.text(), st.caption() (작은 글씨)
  • 만능 함수: st.write() — 텍스트, 데이터프레임, 차트 등 거의 모든 것 출력 가능. 단, 옵션 설정 불가
  • 데이터프레임: st.dataframe() — 너비·높이 지정 가능, 정렬·검색 자동 지원
  • 메트릭 카드: st.metric(label, value, delta) — 변화량(delta)이 양수면 초록, 음수면 빨간색 자동 적용
  • 상태 메시지: st.success() / st.warning() / st.error() / st.info()
st.write()는 만능이지만 세밀한 제어가 필요하면 전용 함수를 써야 한다. 함수 이름이 직관적이므로 외우기보단 감각을 갖고 검색하는 습관이 중요하다

 

4) 입력 위젯

위젯 함수 용도
텍스트 입력 st.text_input() 짧은 텍스트
텍스트 영역 st.text_area() 여러 줄 텍스트
숫자 입력 st.number_input() 정수·실수, step 지정
슬라이더 st.slider() 숫자 범위 시각적 선택
선택 슬라이더 st.select_slider() 순서형 범주 선택
드롭다운 st.selectbox() 명목형 단일 선택
다중 선택 st.multiselect() 명목형 복수 선택
라디오 버튼 st.radio() 명목형 단일 선택 (UI 다름)
체크박스 st.checkbox() True/False
토글 st.toggle() On/Off 상태 표현
버튼 st.button() 클릭 시 True 반환, if문과 조합
날짜 st.date_input() 날짜 또는 날짜 범위
시간 st.time_input() 시간 선택
색상 st.color_picker() 16진수 색상코드 반환
파일 업로드 st.file_uploader() 확장자 제한, 다중 선택 가능
파일 다운로드 st.download_button() 데이터프레임 CSV 다운로드 등
데이터 타입(명목형 vs 순서형 vs 수치형)에 따라 적합한 위젯이 다르다. 위젯을 선택하는 것 자체가 설계의 영역이다

 

5) 알림 및 피드백

  • st.toast(): 잠시 나타났다 사라지는 토스트 팝업
  • st.spinner(): 로딩 중 표시 (with 문 사용)
  • st.progress(): 진행률 바 (0 → 100%)
  • st.status(): 단계별 진행 상황 표시
  • st.balloons() / st.snow(): 애니메이션 효과
작업 시간이 걸리는 경우 로딩 표시가 없으면 UX가 매우 나빠진다. 꼭 넣는 습관을 들이자

 

6) 데이터 시각화

  • st.map(): 위도/경도 데이터만 있으면 지도 바로 출력
  • st.pyplot(): Matplotlib / Seaborn 차트 출력
  • st.plotly_chart(): Plotly 인터랙티브 차트 — Streamlit과 가장 궁합이 좋은 라이브러리
Streamlit + Plotly 조합을 우선적으로 익혀두면 인터랙티브 대시보드를 빠르게 만들 수 있다

 

7) @st.cache_data — 성능 최적화의 핵심

  • Streamlit은 위젯 동작 시마다 코드를 처음부터 끝까지 재실행한다
  • 데이터 로드·전처리 같은 무거운 작업은 @st.cache_data 데코레이터로 캐싱 필수
  • 동일 입력 → 결과를 메모리에 저장 → 재실행 없이 즉시 반환
캐시를 안 쓰면 위젯 클릭할 때마다 데이터를 다시 불러오는 참사가 생긴다. 데이터 로드 함수엔 항상 @st.cache_data를 붙이자

 

8) Streamlit Extras — 확장 컴포넌트

  • pip install streamlit-extras (UV: uv add streamlit-extras)
  • 기본 제공 위젯 외 더 예쁜 메트릭 카드, 다양한 레이아웃 컴포넌트 등 제공
  • Tableau의 확장 프로그램과 유사한 개념
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함