세 가지 도구(Matplotlib, Seaborn, Plotly)를 오가며 같은 개념을 구현해 봄
→ 라이브러리별 접근 방식의 차이를 비교
다중 축 차트(2중, 3중축)와 스펙 아웃 강조, 로그 스케일 변환 등을 직접 구현해보며 상황에 따라 어떤 시각화가 효과적인지 익힘
데이터 해석에 도움이 되는 시각화 기법(스펙아웃 강조, 로그 변환으로 기하급수적 증가 포착)을 접목한 점이 좋았다.
스트림릿 기본 문법 익힘
→ st.title, st.header, st.subheader, st.write, st.text, st.markdown 등을 써보면서 웹 UI에 다양한 텍스트와 스타일을 적용할 수 있다는 점이 재미있었다.
다양한 위젯
→ 버튼, 체크박스, 토글, 라디오, 멀티셀렉트, 슬라이더, 텍스트 입력 등 인터랙티브 요소를 다양하게 써보았다. 버튼 클릭 시 이벤트 핸들링(on_click)이나 세션 상태(st.session_state) 관리까지 해보니 실제 대시보드처럼 확장 가능성이 크게 느껴졌다.
데이터 시각화 연동
→ CSV 파일 업로드 → 데이터 테이블 출력 → Plotly 시각화까지 연결해서 데이터 분석 결과를 바로 시각적으로 확인할 수 있는 흐름을 봤다.
UI 구성 요소 연습
→ 사이드바, 컬럼, 탭, 익스팬더 등 레이아웃 기능을 연습하면서 진짜 서비스 UI처럼 구조를 잡을 수 있다는 걸 알게 되었다.
검색부터 투자 보고서까지 한 흐름을 처음부터 끝까지 연결해본 게 좋았음.
파일을 역할별로 나눠서(search.py, stock_info.py, report_service.py, app.py) 코드가 훨씬 깔끔하게 정리된 게 만족스러움.
.env 파일로 키를 관리해서 보안에도 조금 더 신경 쓸 수 있게 된 점이 좋았음.
검색창에 Select Here! 같은 기본값을 둬서 바로 불러오지 않게 한 것도 좋았음.
x축 시계열 라벨 제어:
ConciseDateFormatter, Plotly는 tickformat을 활용해야 라벨을 원하는 형식으로 깔끔하게 만들 수 있다.다중 축 구현:
ax.twinx()와 spine 위치 조정으로 확장.make_subplots(secondary_y=True) + yaxis 설정(overlaying, position)으로 확장 가능.범례 위치:
bbox_to_anchor, plotly는 legend=dict(x= , y= ).조건 강조:
map vs map_dataframe의 차이를 이해.spec_out=True)을 활용해 특정 점만 annotate, 그래프 테두리 강조 → 포인트를 시각적으로 직관화.로그 스케일:
색상 팔레트:
버튼과 key 충돌 문제
→ 동일한 버튼을 여러 개 만들 때 key를 반드시 지정해줘야 DuplicateWidgetID 오류가 발생하지 않는다는 걸 배움.
세션 상태 활용법
→ st.session_state를 활용하면 체크박스 상태나 사용자 입력을 저장해서 페이지 갱신 후에도 이어갈 수 있다는 개념을 이해했다. → 대시보드/설정 페이지 구현 시 핵심
시각화에서 옵션 처리
→ hue_option=None 같은 조건을 걸어야 색상 컬럼을 선택 안 해도 코드가 에러 없이 돌아가는 걸 확인함.
탭과 사이드바
→ 같은 페이지 안에서 탭으로 화면을 나눌 수도 있고 사이드바로 메뉴 이동을 구현할 수도 있는 앱 구조 설계 방법을 배웠다.
Meilisearch로 회사명을 검색하고 그걸 yfinance로 연결해서 실제 데이터(재무제표와 기본정보)를 가져오는 법을 배움.
LLM에 데이터를 넣어서 투자 보고서 같은 문서를 자동으로 만들어내는 방법을 배움.
코드를 기능별로 나누면 관리가 쉽다는 걸 다시 느낌.
Plotly에서 3중축 이상을 세팅할 때 overlaying, position 등 속성이 헷갈려서 몇 번 시행착오가 있었다. → 축 좌표 시스템을 조금 더 체계적으로 정리할 필요가 있을 듯…
seaborn FacetGrid의 map과 map_dataframe 차이 때문에 함수 인자 처리에서 에러를 많이 겪었다.
조건 강조 annotate 해볼 때 로직이 동작은 했지만 iterrows/itertuples/zip 등 여러 방식을 왔다갔다하며 구현해봤는데 아직 가장 깔끔한 패턴을 스스로 정리하지 못했다는 아쉬움이 있다.
UI 세부 꾸미기 부족
→ 기본 레이아웃과 위젯은 익혔지만 색상이나 스타일링 부분(멀티셀렉트 색상, 버튼 디자인 등)은 커스터마이징까지는 못해본 게 아쉬움.
실제 데이터셋 적용 미흡
→ tips, covid, 업로드한 csv 정도만 써봤는데, 내 프로젝트나 분석 데이터와 직접 연결해보진 못한게 살짝 아쉬움
시간이 많이 부족했던 것 같긴 한데 예외처리나 그런 것들을 꼼꼼히 생각해 봐야겠다고 느낌.
Streamlit에서 표를 그냥 st.write로 찍으니 예쁘게 안 보일 때가 있음 ㅜ
검색어를 잘못 넣거나 빈칸으로 두면 결과가 없을 때 안내가 없음.
투자 초보자한테는 설명이 여전히 어려울 수 있음 → 프롬프트 자체에 대한 고민이 더 필요할 듯 함.
시각화 기법들을 팀 프로젝트에 어떻게 녹여낼 수 있을지 고민해봐야겠다.
색상 팔레트도 상담 유형별이나 위험도별로 직관적인 색 체계를 정해 실무자가 빠르게 판단할 수 있게 만드는 게 필요하다는 생각이 든다.
팀플 툭툭 대시보드에 적용
→ 연습한 사이드바 메뉴 전환, 탭 구성, 파일 업로더 → 시각화 흐름을 툭툭 상담 대시보드에 맞게 적용해보고 싶다. 관리자용, 상담사용 페이지를 나눠서 실제 시나리오처럼 만들면 좋을 것 같다.
UI 커스터마이징
→ 버튼 색상, 멀티셀렉트 색상, 테마 적용 등 디자인을 조금 더 예쁘게 꾸며보고 싶다.
실시간/자동 업데이트
→ 슬라이더로 업데이트 주기(sec)만 넣아봤는데 진짜로 주기적으로 데이터가 갱신되는 대시보드도 구현해보고 싶다.
재무제표는 데이터프레임 형태로 더 깔끔하게 보여주기.
검색어가 비었을 때는 회사명을 입력해주세요 같은 안내 메시지 띄워주기.
보고서 프롬프트를 고쳐서 투자 초보자도 이해하기 쉽게 핵심 요약 같은 항목을 넣어보고 싶음.