AI/Pandas

시각화 + Streamlit 대시보드 + 운영

jumemory 2025. 6. 13. 09:46

분석 결과를 “내가 이해하는 것”에서 “다른 사람이 바로 쓰고 해석할 수 있게 만드는 단계”

데이터 분석은 숫자를 계산하는 것에서 끝나지 않습니다.
실제로 중요한 것은 분석 결과를 사람이 이해할 수 있는 형태로 보여주고, 필요하면 직접 탐색할 수 있게 만드는 것입니다.

이때 핵심이 되는 것이 바로:

  • 데이터 시각화(Data Visualization)
  • 대시보드(Dashboard)
  • 웹 앱 인터페이스
  • 운영과 갱신 흐름

입니다.

즉, 이 파트의 핵심은 단순합니다.

“분석 결과를 눈에 보이게 만들고, 사용자가 직접 조건을 바꿔 보며 활용할 수 있도록 만드는 것”

많은 초보자는 이렇게 생각하기 쉽습니다.

  • 그래프만 그리면 끝 아닌가?
  • 시각화는 예쁘게만 만들면 되지 않나?
  • Streamlit은 그냥 차트 띄우는 도구 아닌가?

하지만 실제로는 그렇지 않습니다.
좋은 시각화와 좋은 대시보드는 단순 출력이 아니라:

  • 어떤 질문에 답하는 그래프인지
  • 어떤 차트가 가장 적절한지
  • 사용자가 무엇을 선택할 수 있어야 하는지
  • 데이터가 바뀌면 어떻게 갱신되는지
  • 서비스처럼 쓸 수 있도록 어떻게 구성할지

까지 포함합니다.

즉, 이 단계는 단순 마무리 작업이 아니라
데이터 분석 결과를 실제 사용 가능한 형태로 바꾸는 핵심 단계입니다.


1. 왜 시각화가 중요한가?

숫자만으로도 많은 정보를 얻을 수 있지만,
사람은 패턴을 눈으로 볼 때 훨씬 빠르게 이해하는 경우가 많습니다.

예를 들어:

  • 가격 평균만 보는 것보다 브랜드별 막대그래프를 보는 것이 더 직관적이고
  • 상관계수 숫자 하나보다 산점도를 보는 것이 관계를 이해하기 쉽고
  • 분포 통계보다 히스토그램을 보면 데이터가 어디에 몰려 있는지 더 빠르게 보입니다

즉, 시각화는 데이터를 “꾸미는 것”이 아니라
패턴을 빠르게 파악하게 해주는 해석 도구입니다.


2. 좋은 시각화란 무엇인가?

좋은 시각화는 단순히 화려한 그래프가 아닙니다.
핵심은 질문에 맞는 그래프를 선택하고, 해석이 쉬운 형태로 보여주는 것입니다.

좋은 시각화는 보통 다음 특징을 가집니다.

  • 목적이 분명하다
  • 어떤 비교를 보여주는지 명확하다
  • 불필요하게 복잡하지 않다
  • 축, 단위, 라벨이 분명하다
  • 색과 요소가 과하지 않다
  • 사용자가 보고 바로 해석할 수 있다

즉, 시각화는 예술보다
정보 전달 설계에 가깝습니다.


3. 차트를 고르는 기준

시각화에서 가장 중요한 것 중 하나는
어떤 데이터를 어떤 차트로 볼 것인가 입니다.

차트는 아무거나 고르면 안 되고,
보여주고 싶은 관계에 따라 달라집니다.


3-1. 비교가 목적일 때

예:

  • 브랜드별 평균 가격
  • 사이트별 매물 수
  • 연료 타입별 비율

이럴 때는 보통:

  • 막대그래프(bar chart)
  • 가로 막대그래프(horizontal bar chart)

가 잘 맞습니다.


3-2. 분포를 보고 싶을 때

예:

  • 가격이 어디 구간에 몰려 있는가
  • 주행거리가 어떻게 퍼져 있는가
  • 연식 분포가 어떤가

이럴 때는:

  • 히스토그램(histogram)
  • 커널 밀도 그래프(KDE)
  • 박스플롯(box plot)

이 유용합니다.


3-3. 변수 간 관계를 보고 싶을 때

예:

  • 주행거리와 가격 관계
  • 연식과 가격 관계
  • 배기량과 연비 관계

이럴 때는:

  • 산점도(scatter plot)

가 대표적입니다.


3-4. 시간 흐름을 보고 싶을 때

예:

  • 월별 매물 수 변화
  • 기간별 평균 가격 변화
  • 시계열 데이터 추이

이럴 때는:

  • 선 그래프(line chart)

가 자연스럽습니다.


3-5. 범위와 이상치를 보고 싶을 때

예:

  • 브랜드별 가격 분포
  • 카테고리별 주행거리 범위
  • 그룹별 이상치 확인

이럴 때는:

  • 박스플롯(box plot)

이 매우 강력합니다.


4. Matplotlib란 무엇인가?

Matplotlib는 파이썬의 가장 대표적인 기본 시각화 라이브러리입니다.

특징

  • 가장 전통적이고 범용적
  • 거의 모든 기본 차트를 그릴 수 있음
  • 세밀한 조정이 가능함
  • 다른 라이브러리의 기반 역할을 자주 함

즉, Matplotlib는
파이썬 시각화의 기본 엔진 같은 역할을 합니다.


언제 유용한가?

  • 기본 차트를 직접 그릴 때
  • 세밀한 커스터마이징이 필요할 때
  • 논문, 보고서, 저장용 이미지 그래프를 만들 때

즉, Matplotlib는 범용성과 제어력이 강합니다.


5. Seaborn이란 무엇인가?

Seaborn은 Matplotlib 위에서 더 쉽게 통계적 시각화를 할 수 있도록 만든 라이브러리입니다.

특징

  • 통계 시각화에 강함
  • 기본 스타일이 비교적 보기 좋음
  • 범주형 비교, 분포 확인이 쉬움
  • EDA용 그래프를 빠르게 만들기 좋음

즉, Seaborn은
EDA 친화적인 시각화 도구라고 보면 됩니다.


언제 유용한가?

  • 히스토그램
  • 박스플롯
  • 바이올린플롯
  • 카테고리별 비교
  • 상관관계 히트맵

같은 그래프를 빠르게 보고 싶을 때 좋습니다.


6. Plotly란 무엇인가?

Plotly는 인터랙티브(상호작용 가능한) 시각화에 강한 라이브러리입니다.

특징

  • 마우스를 올리면 값이 보임
  • 확대/축소 가능
  • 범례 토글 가능
  • 웹 앱과 잘 맞음
  • Streamlit과 연결이 좋음

즉, Plotly는
사용자가 직접 만져볼 수 있는 그래프를 만드는 데 강합니다.


언제 유용한가?

  • 대시보드용 시각화
  • 웹 앱에서 보여줄 그래프
  • 탐색형 차트
  • 마우스 오버 정보가 중요한 경우

즉, 분석용 정적 이미지보다
사용자 인터페이스와 연결된 시각화에 특히 강합니다.


7. 막대그래프(Bar Chart)

7-1. 무엇을 보여주나?

범주형 그룹 간 크기 비교에 가장 적합합니다.

예:

  • 브랜드별 평균 가격
  • 사이트별 매물 수
  • 연료 타입별 차량 수

7-2. 왜 좋은가?

사람은 막대 길이 비교를 매우 빠르게 이해합니다.
그래서 그룹 간 차이를 직관적으로 보여주기에 좋습니다.


7-3. 주의할 점

  • 범주가 너무 많으면 복잡해집니다
  • 정렬 없이 보여주면 비교가 어려울 수 있습니다
  • 단위와 축 이름이 분명해야 합니다

즉, 막대그래프는 단순하지만 매우 강력한 기본 도구입니다.


8. 히스토그램(Histogram)

8-1. 무엇을 보여주나?

수치형 데이터가 어느 구간에 얼마나 몰려 있는지 보여줍니다.

예:

  • 가격 분포
  • 주행거리 분포
  • 연식 분포

8-2. 왜 중요한가?

평균만으로는 데이터의 모양을 알기 어렵습니다.
히스토그램을 보면:

  • 특정 구간 집중
  • 치우침(skewness)
  • 긴 꼬리
  • 여러 봉우리

같은 분포 특징을 볼 수 있습니다.


8-3. 주의할 점

구간(bin)을 어떻게 나누느냐에 따라 그래프 인상이 달라질 수 있습니다.

즉, 히스토그램은 단순해 보여도
구간 설정에 따라 해석이 달라질 수 있다는 점을 알아야 합니다.


9. 산점도(Scatter Plot)

9-1. 무엇을 보여주나?

두 수치형 변수 사이 관계를 점으로 보여줍니다.

예:

  • 주행거리 vs 가격
  • 연식 vs 가격
  • 배기량 vs 연비

9-2. 왜 중요한가?

상관계수 숫자만 보는 것보다,
점들이 어떤 형태로 퍼져 있는지 직접 보면 훨씬 많은 정보를 얻을 수 있습니다.

예:

  • 대체로 우하향인지
  • 군집이 있는지
  • 이상치가 있는지
  • 비선형 관계인지

즉, 산점도는
변수 간 관계를 시각적으로 이해하는 핵심 도구입니다.


9-3. 주의할 점

점이 너무 많으면 겹쳐서 해석이 어려울 수 있습니다.
이럴 때는:

  • 투명도(alpha) 조절
  • 샘플링
  • hexbin 같은 대안

을 생각할 수도 있습니다.


10. 박스플롯(Box Plot)

10-1. 무엇을 보여주나?

분포의 중심, 퍼짐, 사분위수, 이상치 후보를 함께 보여줍니다.

예:

  • 브랜드별 가격 분포
  • 연료별 주행거리 분포
  • 지역별 가격 차이

10-2. 왜 중요한가?

박스플롯은 단순 평균 비교보다 더 많은 정보를 담습니다.

예:

  • 중앙값
  • 분포 폭
  • 이상치 후보
  • 그룹 간 변동성 차이

즉, 그룹별 비교와 이상치 탐색에 매우 유용합니다.


10-3. 언제 특히 좋은가?

같은 수치형 변수를 여러 범주별로 비교할 때 좋습니다.

예:

  • 브랜드별 가격 분포
  • 차종별 주행거리 분포

즉, EDA에서 매우 자주 쓰입니다.


11. 라인 차트(Line Chart)

11-1. 무엇을 보여주나?

시간 흐름에 따른 변화를 보여줍니다.

예:

  • 월별 평균 가격 변화
  • 기간별 거래량 변화
  • 날짜별 사용자 수 변화

11-2. 왜 중요한가?

시계열 패턴을 볼 때는 막대보다 선 그래프가 더 자연스럽습니다.

예:

  • 상승 추세
  • 하락 추세
  • 계절성
  • 급격한 변화 시점

을 보기 좋습니다.


12. 차트는 “정답”이 아니라 “질문에 맞는 선택”이다

같은 데이터라도 질문에 따라 적절한 차트가 달라집니다.

예:

  • 브랜드별 평균 가격 → 막대그래프
  • 브랜드별 가격 분포 → 박스플롯
  • 가격 자체의 전체 분포 → 히스토그램
  • 주행거리와 가격 관계 → 산점도

즉, 차트 선택은 디자인 문제가 아니라
분석 질문과 데이터 구조의 매칭 문제입니다.


13. 좋은 차트를 만들기 위한 기본 원칙

13-1. 제목이 있어야 한다

그래프가 무엇을 보여주는지 분명히 써야 합니다.


13-2. 축 라벨이 명확해야 한다

  • x축이 무엇인지
  • y축이 무엇인지
  • 단위가 무엇인지

를 분명히 해야 합니다.


13-3. 불필요한 장식을 줄인다

색이 너무 많거나 요소가 너무 많으면 해석이 어려워집니다.


13-4. 정렬이 필요할 때는 정렬한다

예:

  • 브랜드별 매물 수
  • 가격 순 비교

정렬하면 훨씬 읽기 쉽습니다.


13-5. 시각화는 숫자를 숨기는 게 아니라 보강해야 한다

때로는 차트만으로 부족할 수 있습니다.
요약 숫자, 평균값, 표본 수 등을 함께 보여주면 해석이 더 좋아집니다.

즉, 좋은 시각화는
차트와 설명이 함께 가는 구조입니다.


14. 대시보드란 무엇인가?

대시보드는 여러 시각화와 핵심 지표를
한 화면 또는 여러 화면에 정리해 보여주는 인터페이스입니다.

쉽게 말하면:

  • 차트
  • 필터
  • 요약 숫자
  • 선택 옵션
  • 설명

이 함께 들어간 데이터 탐색 화면입니다.

즉, 대시보드는 단순 그래프 모음이 아니라
사용자가 직접 데이터를 탐색할 수 있게 만든 분석 인터페이스입니다.


15. Streamlit이란 무엇인가?

Streamlit은 파이썬 코드만으로
데이터 앱, 대시보드, 분석용 웹 화면을 빠르게 만들 수 있는 프레임워크입니다.

특징

  • HTML/CSS/JS를 깊게 몰라도 시작 가능
  • Pandas, Plotly, Matplotlib와 연결 쉬움
  • 버튼, 선택박스, 슬라이더 같은 UI 구성 가능
  • 빠르게 프로토타입 제작 가능

즉, Streamlit은
분석 결과를 웹 앱 형태로 바로 보여주기 좋은 도구입니다.


16. 왜 Streamlit이 중요한가?

분석 결과를 노트북에서만 보면
분석한 사람만 이해하는 경우가 많습니다.

하지만 Streamlit으로 대시보드를 만들면:

  • 다른 사람도 쉽게 볼 수 있고
  • 필터를 바꿔볼 수 있고
  • 그래프를 직접 탐색할 수 있고
  • 분석 결과를 공유하기 쉬워집니다

즉, Streamlit은
분석을 개인 작업에서 사용자 중심 도구로 바꾸는 역할을 합니다.


17. Streamlit의 기본 구성 요소

17-1. 텍스트 출력

예:

  • 제목
  • 설명
  • 섹션 헤더
  • 안내 문구

이건 앱의 구조와 해석을 돕습니다.


17-2. 데이터 출력

예:

  • 표(DataFrame)
  • 요약 숫자
  • 샘플 데이터

17-3. 차트 출력

예:

  • Plotly 차트
  • Matplotlib 차트
  • 기본 차트

17-4. 입력 컴포넌트

예:

  • selectbox
  • multiselect
  • slider
  • checkbox
  • button

이런 것들이 사용자 상호작용의 핵심입니다.

즉, Streamlit은
데이터 출력 + 사용자 입력을 결합한 앱 구조입니다.


18. 인터랙티브 컴포넌트가 왜 중요한가?

대시보드가 일반 보고서와 다른 점은
사용자가 조건을 직접 바꿔볼 수 있다는 것입니다.

예:

  • 브랜드 선택
  • 연식 범위 선택
  • 가격 범위 필터
  • 연료 종류 선택
  • 사이트 선택

이렇게 하면 사용자가
자기 관심 조건에 맞는 데이터만 볼 수 있습니다.

즉, 인터랙티브 컴포넌트는
정적인 보고서를 탐색 가능한 분석 도구로 바꾸는 핵심 요소입니다.


19. 사이드바(Sidebar)는 왜 자주 쓰일까?

Streamlit에서는 사이드바를 자주 활용합니다.

왜냐하면 필터나 설정 옵션을
메인 차트와 분리해 배치할 수 있기 때문입니다.

예:

  • 브랜드 선택
  • 연식 범위 슬라이더
  • 가격 범위 필터
  • 차트 종류 선택

이런 옵션을 사이드바에 두면 화면이 더 깔끔해집니다.

즉, 사이드바는
제어판 역할을 합니다.


20. 멀티 페이지 구조는 왜 필요한가?

대시보드가 커지면 한 화면에 모든 것을 다 넣기 어렵습니다.

예:

  • 메인 소개 페이지
  • 브랜드 비교 페이지
  • 가격 분석 페이지
  • FAQ 페이지
  • 데이터 설명 페이지

이렇게 나누면 사용성이 좋아집니다.

즉, 멀티 페이지 구조는
정보를 역할별로 분리해 사용자가 덜 헷갈리게 만드는 구조화 전략입니다.


21. 캐시(cache)는 왜 중요한가?

데이터 앱에서는 같은 데이터를 여러 번 다시 계산하면 느려질 수 있습니다.

예:

  • CSV를 매번 다시 읽기
  • 같은 전처리를 매번 다시 수행
  • 큰 차트를 계속 재생성

이럴 때 캐시를 사용하면
한 번 계산한 결과를 재사용해서 속도를 개선할 수 있습니다.

즉, 캐시는
대시보드 성능 최적화의 핵심 요소 중 하나입니다.


22. 운영 관점에서 대시보드는 끝이 아니라 시작이다

많은 초보자가 앱이 뜨면 프로젝트가 끝났다고 생각합니다.
하지만 실제로는 그 이후가 중요할 수 있습니다.

예:

  • 데이터가 새로 들어오면 어떻게 갱신할까?
  • CSV 구조가 바뀌면 앱은 괜찮을까?
  • 컬럼 누락이 생기면 어떻게 대응할까?
  • 사용자가 이상한 조건을 선택하면 어떻게 될까?
  • 차트가 너무 느려지면 어떻게 할까?

즉, 대시보드는 단순 전시물이 아니라
운영 대상 시스템이 될 수 있습니다.


23. 데이터 갱신 흐름을 생각해야 한다

실전에서는 보통 이런 흐름이 필요합니다.

  1. 새 데이터 수집
  2. 전처리
  3. 통합
  4. 최종 파일 생성
  5. 대시보드가 그 파일을 읽음

즉, 대시보드는 항상
어떤 최종 데이터 소스를 기준으로 움직일 것인지가 명확해야 합니다.

이걸 정하지 않으면:

  • 데이터가 언제 갱신되는지 모호하고
  • 결과가 일관되지 않고
  • 디버깅이 어려워집니다

24. 사용자 관점 개선은 왜 중요한가?

좋은 대시보드는 개발자만 이해하는 도구가 아닙니다.
사용자가 쉽게 사용할 수 있어야 합니다.

예:

  • 필터 이름이 직관적인가
  • 차트 제목이 이해하기 쉬운가
  • 데이터 단위가 명확한가
  • 너무 많은 옵션으로 복잡하지 않은가
  • 첫 화면에서 무엇을 해야 할지 알 수 있는가

즉, 대시보드는 기술 결과물인 동시에
사용자 경험(UX) 설계 대상입니다.


25. 범용적으로 시각화와 대시보드가 중요한 이유

이 단계는 특정 프로젝트에만 필요한 것이 아닙니다.
거의 모든 데이터 실무와 연결됩니다.

예:

  • 매출 분석 대시보드
  • 고객 행동 분석 화면
  • 공공데이터 시각화 포털
  • 모니터링 대시보드
  • ML 결과 리포트 앱
  • 실험 결과 탐색 화면
  • 운영 현황판

즉, 시각화와 대시보드는
분석 결과를 실제로 활용 가능한 형태로 바꾸는 범용적인 마지막 단계입니다.


26. 좋은 시각화 / 대시보드를 만들기 위해 꼭 필요한 사고방식

26-1. 차트는 예쁘게가 아니라 질문에 맞게

가장 중요한 것은 “무엇을 보여주고 싶은가”입니다.


26-2. 사용자는 코드를 모른다

즉, 설명 없이도 어느 정도 이해할 수 있도록 만들어야 합니다.


26-3. 그래프 하나보다 흐름이 중요하다

사용자가:

  • 무엇을 선택하고
  • 무엇을 보고
  • 무엇을 이해해야 하는지

흐름이 중요합니다.


26-4. 데이터가 바뀌어도 유지될 구조를 생각한다

운영까지 생각하면:

  • 파일 구조
  • 캐시
  • 예외 처리
  • 갱신 흐름

도 함께 설계해야 합니다.


26-5. 대시보드는 “결과 보여주기”이자 “탐색하게 만들기”다

좋은 대시보드는 사용자가 직접 조건을 바꾸며 새로운 인사이트를 찾게 도와줍니다.

즉, 정답을 보여주는 화면이 아니라
질문을 계속 던질 수 있게 해주는 인터페이스라고 볼 수도 있습니다.

 

 

 

 

 

 

 

 

 

matplotlib는 한글 들어가면 꺠짐

한글 폰트 설정

sudo apt update

sudo apt install fonts-nanum*

 

[f.fname for f in matplotlib.font_manager.fontManager.ttflist if "Nanum" in f.name]

다운받은 폰트 목록확인

import matplotlib.font_manager as fm #matplotlib는 한글 들어가면 꺠짐
path = '/usr/share/fonts/truetype/nanum/NanumGothicEcoBold.ttf'
fontprop = fm.FontProperties(fname=path)


x = np.array([1,2,3,4,5])
y  = x + 5
plt.plot(x,y)
plt.title("한글 테스트", fontproperties=fontprop)
plt.show()

 

plt.rcParams['font.family'] = 'NanumGothic'

매번 경로 설정하고 폰트 가져오기 귀찮으므로 반영구적으로 환경설정해준다.

import seaborn as sns
통계 특화된 시각화 + 맴플로 보다 깔끔 맵플로가 설치되어있어야 설치가능

 

plt.figure(figsize=(20,20))
sns.boxplot(data=df, x='team', y='연봉(만원)')
plt.show()

 

plt.style.use('ggplot') # R스타일
plt.figure(figsize=(50,20))
sns.violinplot(data=df, y='연봉(만원)')
plt.show()
from scipy.stats import norm, t #정규분포 T분포
x = np.linspace(-5, 5, 400)
y = t.pdf(x, 100)#자율도 t분포 데이터가 많아지면 정규분포로 수렴함함
plt.plot(x,y, label= 't-dist')
plt.plot(x, norm.pdf(x), label= 'norm')
plt.legend()
plt.show()

 

머신러닝에서 "값을 구하거나 최적의 파라미터를 찾을 때 쓰이는 수학적 방법

->역행렬, 경사하강법(보폭:런닝메이트)

 

.dropna() 사용시 주의

 

EDA 탐색적 데이터분석

 

'AI > Pandas' 카테고리의 다른 글

정리필요  (0) 2025.06.16
EDA와 기초 통계 분석  (0) 2025.06.12
데이터 통합과 구조화  (0) 2025.06.12
데이터 전처리와 정제  (0) 2025.06.11
Pandas 기초  (0) 2025.06.04