ASAC-SK플래닛 T아카데미 데이터 엔지니어

25.12.01 38일차 [ 데이터 분석 시각화 | heatmap, 산포행렬, DataFrame & Series, 바차트, 파이차트, 히스토그램, Folium(GIS)]

Datadesigner 2025. 12. 1. 17:21

오늘은 데이터 분석 시각화 파트에서

  • heatmap
  • 산포행렬
  • DataFrame & Series
  • 바차트
  • 파이차트
  • 히스토그램
  • Folium (GIS)

에 대해서 배웠다.

오늘 내용 내일 최종적으로 체크하고

내일부턴 머신러닝 수업이 예정되어있다.

 


heatmap

 

 
  • 밀도 중심의 시각화
    • 진해지거나, 흐려졌을때 좀 더 성향(경향)이 강해진다 표현할 수 있음.
    • 데이터간 상관관계 시각화에 주로 사용.

 

피벗 테이블을 이용해서 인덱스와 컬럼값을 세팅하였다.

 

위 데이터를 히트맵으로 시각화하여 표현한 자료이다.

색이 연해질 수록 값이 증가한다는 직관적 정보를 제공한다.

코드를 추가해서 칸 별로 passenger 수를 기입할 수 있다.

 

산포행렬

 

 
  • 여러개의 변수간 n개의 변수간 비교시 -> 행렬로 배치
  • 한 눈에 (한개의 차트 내에서 여러개의 변수간의 관계를 확인)

아이리스 데이터 내용 체크
결과

DataFrame & Series

 

바차트

 

  • 특징
    • 트렌드 파악
    • 순위 비교(수직형)
    • 달성도 확인(수평형)
    • 노출되는 항목에 대한 조절

다른 스타벅스 데이터 제공받음
자치구와 매장수만 출력한다.

바 차트를 만드는 matplotlib를 사용해서 바 차트로 표현했다. 강남구가 제일 많이 직관적으로 보인다.

 

이제 사업체수와 매장수로 그 비율을 보려고 했다, 그런데 두 값의 단위가 다르기 때문에 덮여버린다, 그래서 비율로 조정한다.

비율로 수정해서 두 값의 상관관계를 한 이미지에 한번에 담는다.

파이차트

 

 
  • 비율 중심 시각화
    • 원데이터 사용 or 비율값 사용
    • 상대적 크기 비교

아이리스 데이터의 꽃잎 길이를 종 별로 측정했다. 

 

히스토그램

 

 
  • 데이터 분포를 구간화하여 표시
    • 아이리스 기준에서는 종 별로 겹치는 구간이 보임
    • 만약 동떨어져있는 분포가 보이면 -> 구분이 잘 된다로 판단할 수 있음

 

결과값

결과값을 통해서 setosa 종의 너비값이 다른 종들과 많이 차이가 나서 떨어져있는 모습이다.

이러한 유형의 데이터는 추후 머신러닝 /딥러닝 학습시에 도움이 된다고 한다.

학습 시 가중치 조절에 의해서 비중을 조절하여 학습할 예정이다.

Folium(GIS)**

 

 
  • 지도 기반 시각화
  • 지도 기반 위에서 행정구역, 존, 영역표기

지도 가져오는 라이브러리다

지도상에 서울시 스타벅스매장의 데이터를 불러오기 위해서 다양한 데이터를 세팅할 예정이다.

먼저 csv파일을 불러와서 체크한 후, 자치구 별 인구 통계 데이터도 불러온다.

그 다음 데이터들을 전처리해준다, 필요한 데이터만 담은 다른 그릇을 사용한다.

컬럼을 체크한 후 자치구, 계만 추출하고 이름 바꾸고 데이터 삭제하고 타입 변경하고 많이많이 한다.

컬럼이 엄청 많던 데이터에서 자치구, 총계만 담은 데이터를 만들었다.

\

그 다음 서울시 산업체 현황 파일또한 로드해온다.

이 곳에도 자치구가 있는것으로 보아 추후 데이터를 merge할때 자치구를 key로 사용하면 되겠지?

서울시 산업체 데이터 또한 필요한 데이터만 가져오도록 전처리해준다,

필요한 컬럼만 가져온 후 문자열타입의 데이터를 수치로 바꿔준다.

 

수정된 데이터 모습
인덱스값이 뒤죽박죽이라서 reset_index를 통해서 정리해준다.

데이터 중 서울특별시가 아닌 다른 시/도 인 데이터가 있었다.

그래서 코드를 이용하여서 addr.str 값에 서울특별시가 있는 데이터만 골라서 다시 이름을 부여했다.

addr값에서 공백으로 값을 나눠준 후 인덱스0번이 서울특별시인 값만 가져왔다, 이 때 인덱스 앞에 str을 붙여서 한번 더 처리해줘야한다.

순서가 조금 섞였당

원래 자치구 지금 추가했다.

이 데이터상에는 자치구 컬럼이 없었어서 서울특별시 값을 추출해온 코드에서 인덱스만 1번으로 바꿔주고 

그 값을 '자치구'컬럼에 새로 추가해서 컬럼을 만들었다. 그래야 다른 데이터들이랑 merge할 수 있기 때문에

자치구와 매장수만 있는 데이터 만들어준다, groupby도 되고 pivot_table도 된다,

이 사진의 설명은 현재 강남구에 약 88개의 매장이 있다, 그런데 자치구로 groupby했으니 그 좌표값들이 다 합쳐져서 평균이 될것 아닌가?

피벗테이블은 값을 묶어주면 자동으로 그 좌표들을 평균값으로 묶어서 저장해준다. 그리고 지도에서 저 좌표를 찍으면 

각 매장 주소들의 평균의치니까 매장들의 가장 가운데 부분이 나오게 된다. 거기 매장은 없을거다 아마 

이 세개의 데이터들을 묶어준다.

두번의 merge를 이용해서 묶어줬다.

강사님께 제공받은 json 파일을 로드해온다. 

이 파일이 가지고 있는 데이터는 행정구역의 경계를 표기하는 데이터이다.

얘도 마찬가지로 SIG_KOR_NM : 컬럼에 자치구 이름을 가지고 있어서 묶을 수 있을것같다.

데이터를 확인한 결과 서울시내 자치구의 개수는 25로 같다.

그리고 자치구명을 추출해본다.

 

지도 출력

 

현재 코드 실행결과, 아직은 지도에 아무것도 안뜬다. 오히려 서울만 더 어둡게 나온ek

데이터를 담기 쉽게 하기 위해서 다른 변수에 데이터를 담았다.

그 다음 지도에 담을 데이터들을 추가해줬다. 

데이터는 아까 지정한 임시변수 tmp안에 있고,

'자치구, '매장수' 컬럼을 기준으로 데이터를 시각화하라고 명시해뒀다.

그리고 화면 너무 어두워서 나는 5번코드의 지도 배경 색도 변경했다.

서울의 자치구별 매장 수에 따라 색이 변해서 출력되는 모습이다.

강남구가 압도적으로 1등이고 나머지들은 번화가 중심으로 매장이 많은것을 볼 수 있다.

원형 마커를 추가하기 위한 밑작업이다.

서울시 자치구의 평균 매장 수를 구하고 변수에 평균값을 담는다.

그리고 매장 수를 1차원으로 출력하기위해서 코드를 만든다.

예시로는 강남구의 매장 정보만 가져왔다.

그리고 이전의 코드에서 마커 코드를 추가했다 20~39 코드

강남구에 원형 마커가 생겼다. 저 마커가 있는 위치가 아까 매장 좌표들을 모두 평균값을 낸 그 위치이다.

오늘의 수업은 여기까지


시각화 재밌다. 근데 다른사람들은 재미없다고 한다

 

난 재밌는뎅