[제로베이스] CH4. EDA - 서울 CCTV / 인구수 데이터 분석

정해성·2023년 7월 8일
0

제로베이스

목록 보기
24/36
post-thumbnail

프로젝트 개요 및 목표

개요

이번 프로젝트는 제로베이스에서 데이터 취업스쿨을 수강 중 진행한 프로젝트로 제로베이스에서 제공된 데이터를 사용했다.

제공된 데이터

  • 서울 CCTV 현황 데이터
  • 서울 인구 현황 데이터

목표

  1. 인구수와 CCTV의 관계 파악
  2. CCTV가 가장 많은 구, 가장 적은 구
  3. 인구수 대비 상대적으로 CCTV가 가장 많은 구, 가장 적은 구

1. 서울 CCTV 데이터 튜닝

먼저 파일을 불러온다.

import pandas as pd
CCTV_Seoul = pd.read_csv("../data/Seoul_CCTV.csv", encoding="utf-8") 
# 인코딩에러가 뜰 경우 (한글이 안불러와질 경우) "utf-8" or "euc-kr"

CCTV_Seoul.head(10)

여기서 지역 구를 나타내는 컬럼명이 "기관명"이다. 이를 "구별"로 바꾸자.

CCTV의 년도 별 개수 데이터를 토대로 2013년부터 2016까지의 개수 증가율을 보여주는 새로운 열을 만들어보자.

2. 서울 인구수 데이터 튜닝

그 다음, 인구수 데이터를 살펴보자.

여기서 컬럼명을 담고 있는 0행과 1행이 중복되어 보인다. 또한, 열 목록을 보면 인구수에서 남자합계, 여자합계, 외국인합계 데이터만 있으면 충분할 것 같으니 컬럼명이 담긴 0행과 1행은 제외하고 필요한 열만 불러오자.

컬럼명이 무엇을 뜻 하는지 컬럼명을 바꿔주자.

다시보니 합계 행도 필요가 없을 것 같으니 제거하자.

여기서 총 인구수에서 외국인 비율, 고령자 비율을 나타내는 컬럼을 추가하자.

3. 두 데이터 합치기

두 데이터를 구별 컬럼으로 합쳐보자.

년도 별 데이터는 지워 버리자.

구별 컬럼 자체를 인덱스로 바꿔버리자.

인구수에 따른 CCTV 비율 컬럼을 추가해보자.

4. 최종 데이터 시각화

4-1. 시각화 한글작업

matplotlib를 활용한 시각화에서 먼저 한글화 작업이 필요하다.

4-2. 막대그래프

이제 CCTV 개수를 막대그래프로 나타내보자.

그 다음 인구수 대비 CCTV 개수 비율을 막대그래프로 나타내 보자.

  • 막대그래프 분석
    • 단순 CCTV 개수 vs 인구 대비 CCTV 개수 파악
      • 단순 CCTV 수 많은 구는 강남, 양천, 서초, 관악....
      • CCTV 비율이 높은 구는 종로, 용산, 중구, 강남구 ....
    • 아직 뚜렷한 경향을 볼 수 없다. 산점도 및 경향 작업을 해보자.

4-3. 산점도

인구수 대비 CCTV 개수를 산점도로 나타내보자.

  • 산점도 분석.
    • 아직 뚜렷한 경향을 볼 수 없다.
    • 인구수와 CCTV의 선형상관관계를 파악할 필요가 있다.

5. 데이터 경향(Trend) 파악

5-1. 인구수와 CCTV 개수 - 상관계수

인구수와 CCTV 개수의 상관관계를 파악하기 위해 상관계수를 구해보자.

  • 소계와 인구수의 상관관계계수를 보면 0.2 이상이다.
  • 통계학에 따르면 상관계수가 0.2 ~ 0.4 이면 상관관계가 있지만 낮은 상관관계임을 의미한다고 한다.

5-2. 인구수와 CCTV 개수 - 선형회귀

  • 두 데이터 변수 x와 y 사이에 상관관계식으로 직선 그래프를 그려본다.
  • numpy 기능을 활용해 상관관계식 1차 함수를 만들자.
    • np.polyfit(a,b,1) : a와 b의 선형관계를 계산해 기울기와 절편을 반환해줌.
    • np.poly1d(): polyfit으로 찾은 관계식을 사용

이제 인구수 와 CCTV 개수를 산점도로 나타내고 위에서 구한 선형관계식을 그 위에 나타내보자.

경향선을 만들었지만 아직 부족한 것 같다. 좀 더 데이터를 강조하여 눈에 들어오게 만들어 보자.

6. 시각화 강조 작업

6-1. 경향과 점간의 오차 데이터 추가

  • 위에서 만든 경향선과 점들 간의 오차를 만들어 보자.
  • 기울기와 절편 : fp1
  • 선형관계식 : f1

6-2. 오차 데이터 그래프에 추가

  • 오차가 큰 상위 5개 구와 오차가 작은 하위 5개 구를 산점도에 같이 표시를 하자.
  • 즉, 산점도 + 선형관계식 + 오차 데이터 를 한번에 보겠다.

데이터 및 칼라맵을 먼저 셋팅한다.
그래프에 오차 데이터 추가 작업.

  • 이제 경향, 오차, 그에 대한 그래프가 있어 데이터 분석을 설명할 충분한 자료인 것 같다.

7. 최종 결과 분석

  • 인구수 대비 CCTV가 많은 구
    • 종로, 용산, 중구 ...
  • 인구수 대비 CCTV가 적은 구
    • 강서구, 송파구, 중랑구 ...
  • 경향에 비해 오차가 가장 큰 구
    • 강남구 : CCTV가 경향보다 너무 많다.
    • 강서구 : CCTV가 경향보다 너무 많다.
  • 인구수와 CCTV 개수의 상관계수가 0.233임 과 선형회귀 직선이 우상향을 보임
    • 상관관계는 있지만 약한 상관관계임을 도출해 낼수 있다.
profile
코린이 공부중

0개의 댓글