데이터분석/미니프로젝트 01. 서울시 CCTV 현황 분석

미니프로젝트 01-01-03. CCTV데이터와 인구현황 데이터 훑어보기

책다니엘 2024. 3. 20. 19:38

1. .head(), .sort_values(by='', ascending=True) 등으로 특정 컬럼 내의 값들의 순위에 따라 데이터를 정렬할 수 있다. 구분자를 삭제하는 부분의 코드에 주의! str메소드를 쓰지 않는다. regex=True는 정규표현식을 실행하기 위해 넣은 변수이다! 그리고 데이터의 형식을 바꿔주는 부분에도 주목하자. pd.to_numeric함수이다.

 

 

2. rename 등으로 컬럼명을 단순화하고, 컬럼 간 계산으로 보다 효과적으로 데이터를 활용할 수 있다.

 

 

sort_values 기능으로 가장 인구수가 많은 구, 고령자가 가장 많은 구 등을 볼 수는 있지만, 이것으로는 부족하다. 서로 다른 두 데이터들을 합쳐볼 때다!

 

3. merge기능으로 서로 다른 두 데이터를 병합할 수 있다. Pandas DataFrame 간의 병합은 빈번히 발생한다. 병합 후에 데이터가 엉망이 되지 않도록 지속적으로 익혀야 하는 기능이다.

'key'컬럼을 기준으로 두 데이터를 병합했다

 

4. merge 안에 how='left'를 넣으면 왼쪽 기준으로 병합(left outer join), how='right'를 넣으면 오른쪽 기준으로 병합(right outer join)할 수 있다.

 

5. how='outer'가 되면 full outer join을 수행한다.

 

6. how='inner'가 되면 inner join을 수행한다.

 

 

7. 위의 내용을 바탕으로 지금까지 사용한 데이터들을 합쳐보자. 두 데이터가 '구별'이라는 컬럼을 공유하므로, on='구별'키워드를 베이스로 두 데이터를 합친다. 

 

 

8. 합친 데이터의 index를 재지정한다. pandas에서는 데이터를 정리하면서 인덱스를 재지정할 수 있다. 현재 프로젝트의 경우 '구별' 데이터가 unique하므로, set_index('구별', inplace=True)명령을 사용해 데이터를 정리한다.

 

9. 그런데 데이터 간에 유의미한 상관관계가 있는지가 중요하다. 현재 인구데이터와 CCTV데이터를 이용해 인구별 CCTV가 적은 구를 찾고 있는데, 데이터 간에 관계가 없으면 이런 가정이 아무런 의미가 없다. 이 때 '상관관계'라는 개념이 중요하다.

r이 0에 가까울수록 상관관계가 약하다

 

10. 지금까지 서로 합치고 set_index()명령을 통해 인덱스까지 새로 설정한 데이터를 corr()명령어를 통해 서로의 상관관계를 발견한다. 상관계수가 절댓값 0.2 이상인 데이터부터 의미를 가진다.

구별 CCTV 갯수(총계)와 가장 상관관계가 있는 데이터는 '인구수'이다. 그러므로 구별 CCTV 현황을 분석해서 상대적으로 CCTV가 적거나 많은 구를 찾는 것은 의미를 가진다.

 

11. CCTV와 인구수가 서로 유의미한 관계를 갖는다는 것을 확인했으므로, 이번에는 'CCTV비율'컬럼을 만들어 CCTV 비율이 높은 구를 확인해본다.

성동구가 CCTV비율이 가장 높게 나타난다.
가장 비율이 낮게 나타나는 곳은 노원구이다.