데이터 취업 스쿨 스터디 노트 - EDA(인구 분석 1~3)

박재현·2024년 8월 20일

EDA

1. 배경

  • 목표
    - 인구 소멸 위기 지역 파악
    - 인구 소멸 위기 지역의 지도 표현
    - 지도 표현에 대한 카르토그램 표현

2. 데이터 읽고 인구 소멸 지역 계산하기

import

데이터 불러오기

  • fillna()함수 설명
    nan 값을 채움
    • method='pad' 바로 위의 값을 가져옴

데이터 프레임 정리

  • 컬럼 이름 변경

  • 소계 제거

  • 항목 컬럼을 구분으로 바꿈

  • 구분 컬럼의 값 변경

    • 총인구수 (명) => 합계
    • 남자인구수 (명) => 남자
    • 여자인구수 (명) => 여자
  • 소멸지역을 조사하기 위한 데이터 정리

    • '20 - 39세', '65세이상' 컬럼 추가
  • pivot_table로 인덱스 및 컬럼 재조합

    • 인덱스: '광역시도', '시도'
    • 컬럼: '구분'
    • 값: '인구수', '20-39세', '65세이상'
  • 소멸 비율 계산

    • 소멸비율 = 20-39세, 여자 데이터 / (65세이상, 합계 데이터 / 2)
  • 소멸위기지역 컬럼 생성

    • 소멸위기지역 = 소멸비율 < 1.0
  • 소멸위기지역 조회

    • '시도'는 멀티인덱스의 두 번째 인데스 이므로 접그하기 위해
      get_index_level_values(1)를 사용
  • '광역시도', '시도' 인덱스를 컬럼으로 변경

    • reset_index()
  • 멀티컬럼을 합쳐서 하나의 컬럼으로 만들기

    • for문 사용
    • tmp_columns라는 변수에 0번 컬럼행 + 1번 컬럼행을 더해서 저장

3. 지도 시각화를 위한 지역별 ID 만들기

  • 'si_name'이라는 변수에 데이터 수 만큼 none 값 생성

  • 구 이름 저장

  • 만들고자 하는 ID의 형태
    서울 중구
    서울 서초
    통영
    남양주
    포항 북구
    인천 남동
    안양 만안
    안양 동안
    안산 단원

(1) 일반 시 이름과 세종시, 광역시도 일반 구 정리

(2) 행정구

(3) 고성군

  • ID 컬럼 추가

  • 필요없는 컬럼 제거

지도 그리는 함수 만들어 보기

  • 한국 지도가 그려진 엑셀 파일 불러오기

  • 데이터가 있는 값만 불러와서 데이터 프레임으로 정리하기

    • stack() : 0번 index에 값이 있는 column만 표시
  • 인덱스를 새로 만든 후 컬럼이름 변경하기

  • 엑셀에 표시된 지역 곙계 좌표를 직접 리스트로 만들기

  • 지도를 그리는데 필요한 함수 만들기(sample)

    • 데이터프레임 'draw_korea'에 저장된 지역명을 주석으로 표시하는 함수
    • annotate() : 주석을 다는 기능
    • 경계선을 그리는 함수
    • 그리기

pop, draw_korea 합병하기

합병 전 검증

  • 데이터 확인

  • 차집합을 이용해서 확인

    • set(): 집합 기능
    • 교환법칙이 성립하지 않아, 순서를 변경했을 때 차집합이 발생하는 것을 확인
    • 차집합으로 발생한 데이터를 pop에서 제거
  • 합병(Merge)

미리 만들어둔 sample 함수를 이용해서 다양한 데이터 시각화 해보기

그림을 그리기 위한 데이터를 계산하는 함수

  • 색상을 만들 때, 최소값을 흰색
  • blockedMap: 인구현황(pop)
  • targetData: 그리고 싶은 컬럼
  • 함수1 : get_data_info(targetData, blockedMap):

    • blockedMap에는 pop이, targetData에는 분석하고 싶은 pop의 컬럼이 들어간다.
    • whitelabelmin, vmax, vmin, mapdata를 반환한다.
  • 함수2: get_data_info_zero_center(targetData, blockedMap):

    • 함수1과 같은 변수와 값을 반환한다.
  • 함수3: plot_text(targetData, blockedMap, whitelablemin):

    • 위에서 만들었던 지도 그리기 함수 sample을 이용해서 만듬
  • 함수4: drawKorea(targetData, blockedMap, cmapname, zeroCenter=False):

    • 위에서 만들었던 지도 그리기 함수 sample을 이용해서 만듬
    • zeroCenter가 True일때 함수2를 사용하여 변수 획득
    • zeroCenter가 False일때 함수1을 사용하여 변수 획득

데이터 시각화

  • '인구수 합계'로 나타낸 시각화

  • '소멸위기지역'을 1, 0으로 나타내어 컬럼에 추가한 후 시각화

  • '여성비'를 '인구수여자'/'인구수합계'로 계산한 후 시각화

  • '2030여성비'를 '20~39세여자' / '20~39세합계'로 계산한 후 시각화

folium으로 지도 시각화

  • ID 컬럼을 인덱스로하는 pop_folium 데이터 프레임 생성

인구수합계 지도 시각화


소멸위기지역 지도 시각화


  • 데이터 저장

이 글은 제로베이스 데이터 취업 스쿨 강의 자료를 발췌하여 작성되었습니다.

0개의 댓글