4. 두 데이터 합치기
CCTV_Seoul.head(1)
구별 | CCTV 수 | 2013년도 이전 | 2014년 | 2015년 | 2016년 | 최근 증가율 | |
---|---|---|---|---|---|---|---|
0 | 강남구 | 3238 | 1292 | 430 | 584 | 932 | 150.619195 |
pop_Seoul.head(1)
구별 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|
1 | 종로구 | 164257 | 154770 | 9487 | 26182 | 5.775705 | 15.939656 |
# 둘다 구별에 대해 중복되지 않은, 25개의 같은 구를 보유하고 있으므로, how는 문제가 되지 않는다.
data_result = pd.merge(CCTV_Seoul,pop_Seoul,how='inner',on='구별')
data_result.head(3)
구별 | CCTV 수 | 2013년도 이전 | 2014년 | 2015년 | 2016년 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 강남구 | 3238 | 1292 | 430 | 584 | 932 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 |
1 | 강동구 | 1010 | 379 | 99 | 155 | 377 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 |
2 | 강북구 | 831 | 369 | 120 | 138 | 204 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 |
data_result.tail(3)
구별 | 인구수_x | 2015년 | 2016년 | 최근 증가율 | 인구수_y | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|
22 | 종로구 | 1619 | 211 | 630 | 248.922414 | 164257 | 154770 | 9487 | 26182 | 5.775705 | 15.939656 |
23 | 중구 | 1023 | 72 | 348 | 147.699758 | 134593 | 125709 | 8884 | 21384 | 6.600640 | 15.887899 |
24 | 중랑구 | 916 | 177 | 109 | 79.960707 | 412780 | 408226 | 4554 | 59262 | 1.103251 | 14.356800 |
data_result.columns.unique()
Index(['구별', 'CCTV 수', '2013년도 이전', '2014년', '2015년', '2016년', '최근 증가율', '인구수',
'한국인', '외국인', '고령자', '외국인 비율', '고령자 비율'],
dtype='object')
년도별 데이터 컬럼 삭제
- del
- drop()
del data_result['2013년도 이전']
del data_result['2014년']
data_result.drop(['2015년','2016년'],axis=1,inplace=True)
data_result.head()
구별 | CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|---|
0 | 강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 |
1 | 강동구 | 1010 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 |
2 | 강북구 | 831 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 |
3 | 강서구 | 911 | 134.793814 | 608255 | 601691 | 6564 | 76032 | 1.079153 | 12.500021 |
4 | 관악구 | 2109 | 149.290780 | 520929 | 503297 | 17632 | 70046 | 3.384722 | 13.446362 |
인덱스 변경
- set_index()
- 선택한 컬럼을 데이터 프레임의 인덱스로 지정
data_result.set_index("구별",inplace=True)
data_result.head()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|
구별 | ||||||||
강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 |
강동구 | 1010 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 |
강북구 | 831 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 |
강서구 | 911 | 134.793814 | 608255 | 601691 | 6564 | 76032 | 1.079153 | 12.500021 |
관악구 | 2109 | 149.290780 | 520929 | 503297 | 17632 | 70046 | 3.384722 | 13.446362 |
상관계수
- corr()
- correlation의 약자이다.
- 상관계수가 0.2 이상의 데이터를 비교
data_result.corr()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|
CCTV 수 | 1.000000 | -0.264378 | 0.232555 | 0.227852 | 0.030421 | 0.163905 | -0.045956 | -0.267841 |
최근 증가율 | -0.264378 | 1.000000 | -0.097165 | -0.086341 | -0.156421 | -0.072251 | -0.047102 | 0.190396 |
인구수 | 0.232555 | -0.097165 | 1.000000 | 0.998151 | -0.167243 | 0.936737 | -0.601076 | -0.637414 |
한국인 | 0.227852 | -0.086341 | 0.998151 | 1.000000 | -0.226853 | 0.936155 | -0.645463 | -0.628360 |
외국인 | 0.030421 | -0.156421 | -0.167243 | -0.226853 | 1.000000 | -0.175318 | 0.838612 | -0.021147 |
고령자 | 0.163905 | -0.072251 | 0.936737 | 0.936155 | -0.175318 | 1.000000 | -0.620300 | -0.348840 |
외국인 비율 | -0.045956 | -0.047102 | -0.601076 | -0.645463 | 0.838612 | -0.620300 | 1.000000 | 0.242816 |
고령자 비율 | -0.267841 | 0.190396 | -0.637414 | -0.628360 | -0.021147 | -0.348840 | 0.242816 | 1.000000 |
# 데이터 타입을 확인 후 상관계수를 비교한다.
# object 타입이 있는 경우에는 corr 비교가 안되기 때문에
data_result.info()
<class 'pandas.core.frame.DataFrame'>
Index: 25 entries, 강남구 to 중랑구
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 CCTV 수 25 non-null int64
1 최근 증가율 25 non-null float64
2 인구수 25 non-null int64
3 한국인 25 non-null int64
4 외국인 25 non-null int64
5 고령자 25 non-null int64
6 외국인 비율 25 non-null float64
7 고령자 비율 25 non-null float64
dtypes: float64(3), int64(5)
memory usage: 1.8+ KB
data_result['CCTV비율'] = data_result['CCTV 수']/data_result['인구수'] *100
data_result.head()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | CCTV비율 | |
---|---|---|---|---|---|---|---|---|---|
구별 | |||||||||
강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 | 0.577130 |
강동구 | 1010 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 | 0.229358 |
강북구 | 831 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 | 0.253352 |
강서구 | 911 | 134.793814 | 608255 | 601691 | 6564 | 76032 | 1.079153 | 12.500021 | 0.149773 |
관악구 | 2109 | 149.290780 | 520929 | 503297 | 17632 | 70046 | 3.384722 | 13.446362 | 0.404854 |
data_result.sort_values(by='CCTV비율',ascending=False).head()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | CCTV비율 | |
---|---|---|---|---|---|---|---|---|---|
구별 | |||||||||
종로구 | 1619 | 248.922414 | 164257 | 154770 | 9487 | 26182 | 5.775705 | 15.939656 | 0.985651 |
용산구 | 2096 | 53.216374 | 244444 | 229161 | 15283 | 36882 | 6.252148 | 15.088118 | 0.857456 |
중구 | 1023 | 147.699758 | 134593 | 125709 | 8884 | 21384 | 6.600640 | 15.887899 | 0.760069 |
강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 | 0.577130 |
금천구 | 1348 | 100.000000 | 253491 | 235154 | 18337 | 34170 | 7.233787 | 13.479769 | 0.531774 |
'DS_Study > 서울시 CCTV 현황' 카테고리의 다른 글
[DS_study] pandas dataframe으로 plot 그리기 (0) | 2022.05.29 |
---|---|
[DS_study] Matploblib 기초 (0) | 2022.05.29 |
[DS_study] pandas 데이터 합치기 (0) | 2022.05.29 |
[DS_Study] 데이터 흝어보기 (0) | 2022.05.29 |
[DS_study] pandas dataframe 조건식, 칼럼 추가, 수정, isin(), 제거, 함수 적용 (0) | 2022.05.25 |
4. 두 데이터 합치기
CCTV_Seoul.head(1)
구별 | CCTV 수 | 2013년도 이전 | 2014년 | 2015년 | 2016년 | 최근 증가율 | |
---|---|---|---|---|---|---|---|
0 | 강남구 | 3238 | 1292 | 430 | 584 | 932 | 150.619195 |
pop_Seoul.head(1)
구별 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|
1 | 종로구 | 164257 | 154770 | 9487 | 26182 | 5.775705 | 15.939656 |
# 둘다 구별에 대해 중복되지 않은, 25개의 같은 구를 보유하고 있으므로, how는 문제가 되지 않는다.
data_result = pd.merge(CCTV_Seoul,pop_Seoul,how='inner',on='구별')
data_result.head(3)
구별 | CCTV 수 | 2013년도 이전 | 2014년 | 2015년 | 2016년 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 강남구 | 3238 | 1292 | 430 | 584 | 932 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 |
1 | 강동구 | 1010 | 379 | 99 | 155 | 377 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 |
2 | 강북구 | 831 | 369 | 120 | 138 | 204 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 |
data_result.tail(3)
구별 | 인구수_x | 2015년 | 2016년 | 최근 증가율 | 인구수_y | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|---|---|---|
22 | 종로구 | 1619 | 211 | 630 | 248.922414 | 164257 | 154770 | 9487 | 26182 | 5.775705 | 15.939656 |
23 | 중구 | 1023 | 72 | 348 | 147.699758 | 134593 | 125709 | 8884 | 21384 | 6.600640 | 15.887899 |
24 | 중랑구 | 916 | 177 | 109 | 79.960707 | 412780 | 408226 | 4554 | 59262 | 1.103251 | 14.356800 |
data_result.columns.unique()
Index(['구별', 'CCTV 수', '2013년도 이전', '2014년', '2015년', '2016년', '최근 증가율', '인구수',
'한국인', '외국인', '고령자', '외국인 비율', '고령자 비율'],
dtype='object')
년도별 데이터 컬럼 삭제
- del
- drop()
del data_result['2013년도 이전']
del data_result['2014년']
data_result.drop(['2015년','2016년'],axis=1,inplace=True)
data_result.head()
구별 | CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|---|
0 | 강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 |
1 | 강동구 | 1010 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 |
2 | 강북구 | 831 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 |
3 | 강서구 | 911 | 134.793814 | 608255 | 601691 | 6564 | 76032 | 1.079153 | 12.500021 |
4 | 관악구 | 2109 | 149.290780 | 520929 | 503297 | 17632 | 70046 | 3.384722 | 13.446362 |
인덱스 변경
- set_index()
- 선택한 컬럼을 데이터 프레임의 인덱스로 지정
data_result.set_index("구별",inplace=True)
data_result.head()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|
구별 | ||||||||
강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 |
강동구 | 1010 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 |
강북구 | 831 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 |
강서구 | 911 | 134.793814 | 608255 | 601691 | 6564 | 76032 | 1.079153 | 12.500021 |
관악구 | 2109 | 149.290780 | 520929 | 503297 | 17632 | 70046 | 3.384722 | 13.446362 |
상관계수
- corr()
- correlation의 약자이다.
- 상관계수가 0.2 이상의 데이터를 비교
data_result.corr()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | |
---|---|---|---|---|---|---|---|---|
CCTV 수 | 1.000000 | -0.264378 | 0.232555 | 0.227852 | 0.030421 | 0.163905 | -0.045956 | -0.267841 |
최근 증가율 | -0.264378 | 1.000000 | -0.097165 | -0.086341 | -0.156421 | -0.072251 | -0.047102 | 0.190396 |
인구수 | 0.232555 | -0.097165 | 1.000000 | 0.998151 | -0.167243 | 0.936737 | -0.601076 | -0.637414 |
한국인 | 0.227852 | -0.086341 | 0.998151 | 1.000000 | -0.226853 | 0.936155 | -0.645463 | -0.628360 |
외국인 | 0.030421 | -0.156421 | -0.167243 | -0.226853 | 1.000000 | -0.175318 | 0.838612 | -0.021147 |
고령자 | 0.163905 | -0.072251 | 0.936737 | 0.936155 | -0.175318 | 1.000000 | -0.620300 | -0.348840 |
외국인 비율 | -0.045956 | -0.047102 | -0.601076 | -0.645463 | 0.838612 | -0.620300 | 1.000000 | 0.242816 |
고령자 비율 | -0.267841 | 0.190396 | -0.637414 | -0.628360 | -0.021147 | -0.348840 | 0.242816 | 1.000000 |
# 데이터 타입을 확인 후 상관계수를 비교한다.
# object 타입이 있는 경우에는 corr 비교가 안되기 때문에
data_result.info()
<class 'pandas.core.frame.DataFrame'>
Index: 25 entries, 강남구 to 중랑구
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 CCTV 수 25 non-null int64
1 최근 증가율 25 non-null float64
2 인구수 25 non-null int64
3 한국인 25 non-null int64
4 외국인 25 non-null int64
5 고령자 25 non-null int64
6 외국인 비율 25 non-null float64
7 고령자 비율 25 non-null float64
dtypes: float64(3), int64(5)
memory usage: 1.8+ KB
data_result['CCTV비율'] = data_result['CCTV 수']/data_result['인구수'] *100
data_result.head()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | CCTV비율 | |
---|---|---|---|---|---|---|---|---|---|
구별 | |||||||||
강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 | 0.577130 |
강동구 | 1010 | 166.490765 | 440359 | 436223 | 4136 | 56161 | 0.939234 | 12.753458 | 0.229358 |
강북구 | 831 | 125.203252 | 328002 | 324479 | 3523 | 56530 | 1.074079 | 17.234651 | 0.253352 |
강서구 | 911 | 134.793814 | 608255 | 601691 | 6564 | 76032 | 1.079153 | 12.500021 | 0.149773 |
관악구 | 2109 | 149.290780 | 520929 | 503297 | 17632 | 70046 | 3.384722 | 13.446362 | 0.404854 |
data_result.sort_values(by='CCTV비율',ascending=False).head()
CCTV 수 | 최근 증가율 | 인구수 | 한국인 | 외국인 | 고령자 | 외국인 비율 | 고령자 비율 | CCTV비율 | |
---|---|---|---|---|---|---|---|---|---|
구별 | |||||||||
종로구 | 1619 | 248.922414 | 164257 | 154770 | 9487 | 26182 | 5.775705 | 15.939656 | 0.985651 |
용산구 | 2096 | 53.216374 | 244444 | 229161 | 15283 | 36882 | 6.252148 | 15.088118 | 0.857456 |
중구 | 1023 | 147.699758 | 134593 | 125709 | 8884 | 21384 | 6.600640 | 15.887899 | 0.760069 |
강남구 | 3238 | 150.619195 | 561052 | 556164 | 4888 | 65060 | 0.871220 | 11.596073 | 0.577130 |
금천구 | 1348 | 100.000000 | 253491 | 235154 | 18337 | 34170 | 7.233787 | 13.479769 | 0.531774 |
'DS_Study > 서울시 CCTV 현황' 카테고리의 다른 글
[DS_study] pandas dataframe으로 plot 그리기 (0) | 2022.05.29 |
---|---|
[DS_study] Matploblib 기초 (0) | 2022.05.29 |
[DS_study] pandas 데이터 합치기 (0) | 2022.05.29 |
[DS_Study] 데이터 흝어보기 (0) | 2022.05.29 |
[DS_study] pandas dataframe 조건식, 칼럼 추가, 수정, isin(), 제거, 함수 적용 (0) | 2022.05.25 |