DS_Study/서울시 CCTV 현황

[DS_Study] 데이터 흝어보기

scone 2022. 5. 29. 14:26

데이터 흝어보기

  • CCTV 데이터와 인구 통계를 가져와 필요한 데이터로 정제하겠습니다.
import pandas as pd
import numpy as np
CCTV_Seoul = pd.read_csv('../data/01. Seoul_CCTV.csv', encoding = 'utf-8')
CCTV_Seoul.head()
  기관명 소계 2013년도 이전 2014년 2015년 2016년
0 강남구 3238 1292 430 584 932
1 강동구 1010 379 99 155 377
2 강북구 831 369 120 138 204
3 강서구 911 388 258 184 81
4 관악구 2109 846 260 390 613
CCTV_Seoul.tail()
  기관명 소계 2013년도 이전 2014년 2015년 2016년
20 용산구 2096 1368 218 112 398
21 은평구 2108 1138 224 278 468
22 종로구 1619 464 314 211 630
23 중구 1023 413 190 72 348
24 중랑구 916 509 121 177 109
CCTV_Seoul['최근 증가율'] = (
    (CCTV_Seoul['2014년']+CCTV_Seoul['2015년']+CCTV_Seoul['2016년'])/CCTV_Seoul['2013년도 이전'] *100
)
CCTV_Seoul.sort_values(by='최근 증가율', ascending = False).head()
  기관명 소계 2013년도 이전 2014년 2015년 2016년 최근 증가율
22 종로구 1619 464 314 211 630 248.922414
9 도봉구 825 238 159 42 386 246.638655
12 마포구 980 314 118 169 379 212.101911
8 노원구 1566 542 57 451 516 188.929889
1 강동구 1010 379 99 155 377 166.490765
# header을 통해 위에 두줄 제거할 수 있었다.
# usecols을 통해 필요한 열만 가져올 수 있었다.
# drop을 통해 행을 제거할 수 있는데, 인덱스로 접근할때는 대괄호를 쳐주어야한다.

pop_Seoul = pd.read_excel('../data/01. Seoul_Population.xls',header=2,usecols="B,D,G,J,N")
pop_Seoul.drop([0],axis=0, inplace=True)
pop_Seoul.head()
  자치구 계.1 계.2 65세이상고령자
1 종로구 164257 154770 9487 26182
2 중구 134593 125709 8884 21384
3 용산구 244444 229161 15283 36882
4 성동구 312711 304808 7903 41273
5 광진구 372298 357703 14595 43953
# 인덱스로 접근할 때는 다음과 같이 columns[숫자] 형태로 접근한다.
#  rename 쓸 때 앞에 인수 columns = 안넣어주면 반영 안된다.

pop_Seoul.rename(
    columns = {
        pop_Seoul.columns[0]:"구별",
        pop_Seoul.columns[1]:"인구수",
        pop_Seoul.columns[2]:"한국인",
        pop_Seoul.columns[3]:"외국인",
        pop_Seoul.columns[4]:"고령자",
    },
    inplace = True,
)
pop_Seoul.head()
  구별 인구수 한국인 외국인 고령자
1 종로구 164257 154770 9487 26182
2 중구 134593 125709 8884 21384
3 용산구 244444 229161 15283 36882
4 성동구 312711 304808 7903 41273
5 광진구 372298 357703 14595 43953
pop_Seoul.tail()
  구별 인구수 한국인 외국인 고령자
21 관악구 520929 503297 17632 70046
22 서초구 445401 441102 4299 53205
23 강남구 561052 556164 4888 65060
24 송파구 671173 664496 6677 76582
25 강동구 440359 436223 4136 56161
pop_Seoul['외국인 비율'] = (pop_Seoul['외국인']/pop_Seoul['인구수'] *100)
pop_Seoul['고령자 비율'] = (pop_Seoul['고령자']/pop_Seoul['인구수'] *100)
pop_Seoul.sort_values(by='외국인 비율', ascending=False).head()
  구별 인구수 한국인 외국인 고령자 외국인 비율 고령자 비율
19 영등포구 402024 368550 33474 53981 8.326369 13.427308
18 금천구 253491 235154 18337 34170 7.233787 13.479769
17 구로구 441559 410742 30817 58794 6.979135 13.315095
2 중구 134593 125709 8884 21384 6.600640 15.887899
3 용산구 244444 229161 15283 36882 6.252148 15.088118
pop_Seoul.sort_values(by='고령자 비율', ascending=False).head()
  구별 인구수 한국인 외국인 고령자 외국인 비율 고령자 비율
9 강북구 328002 324479 3523 56530 1.074079 17.234651
1 종로구 164257 154770 9487 26182 5.775705 15.939656
2 중구 134593 125709 8884 21384 6.600640 15.887899
10 도봉구 346234 344166 2068 53488 0.597284 15.448512
6 동대문구 366011 350647 15364 55718 4.197688 15.223040

 

 

  • 데이터가 너무 많은거 같으니 어떠한 요소들이 있는지만 대충 봅시다.

 

pop_Seoul["구별"].unique()
array(['종로구', '중구', '용산구', '성동구', '광진구', '동대문구', '중랑구', '성북구', '강북구',
       '도봉구', '노원구', '은평구', '서대문구', '마포구', '양천구', '강서구', '구로구', '금천구',
       '영등포구', '동작구', '관악구', '서초구', '강남구', '송파구', '강동구'], dtype=object)
len(pop_Seoul["구별"].unique())
25
CCTV_Seoul["기관명"].unique()
array(['강남구', '강동구', '강북구', '강서구', '관악구', '광진구', '구로구', '금천구', '노원구',
       '도봉구', '동대문구', '동작구', '마포구', '서대문구', '서초구', '성동구', '성북구', '송파구',
       '양천구', '영등포구', '용산구', '은평구', '종로구', '중구', '중랑구'], dtype=object)
len(CCTV_Seoul["기관명"].unique())
25