유동인구분석:순위
유동인구 관련 분석
- 유동인구(행정동별 평균, 나이대고려:행정동별 제일 많이 나온 나이대) :2021년 10월 만
- 각 행정동별 나이대 순위구하기
1. 데이터
import pandas as pd
people=pd.read_csv('LOCAL_PEOPLE_DONG_202110.csv',engine='python', encoding='euc-kr')
people
기준일ID | 시간대구분 | 행정동코드 | 총생활인구수 | 남자0세부터9세생활인구수 | 남자10세부터14세생활인구수 | 남자15세부터19세생활인구수 | 남자20세부터24세생활인구수 | 남자25세부터29세생활인구수 | 남자30세부터34세생활인구수 | ... | 여자25세부터29세생활인구수 | 여자30세부터34세생활인구수 | 여자35세부터39세생활인구수 | 여자40세부터44세생활인구수 | 여자45세부터49세생활인구수 | 여자50세부터54세생활인구수 | 여자55세부터59세생활인구수 | 여자60세부터64세생활인구수 | 여자65세부터69세생활인구수 | 여자70세이상생활인구수 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 20211001 | 0 | 11500550 | 14235.2719 | 677.9083 | 307.5833 | 302.4226 | 340.4496 | 512.9114 | 526.7665 | ... | 574.5701 | 511.1651 | 619.6140 | 608.3882 | 658.8701 | 460.4023 | 548.1657 | 571.3773 | 442.0823 | 1020.2156 |
1 | 20211001 | 0 | 11650580 | 19030.2106 | 835.5190 | 616.6510 | 726.6034 | 468.8152 | 415.6875 | 432.9448 | ... | 394.7077 | 457.2903 | 770.4217 | 962.1563 | 1200.6410 | 743.1393 | 587.3082 | 517.9607 | 409.1231 | 1243.8078 |
2 | 20211001 | 0 | 11560650 | 15500.9823 | 495.4932 | 232.5452 | 345.5708 | 348.8626 | 604.8602 | 608.3597 | ... | 669.6094 | 664.0441 | 598.1471 | 525.5730 | 645.8569 | 589.3231 | 833.4194 | 643.0477 | 449.3879 | 1046.4871 |
3 | 20211001 | 0 | 11140570 | 7338.3524 | 179.1488 | 59.7162 | 246.3065 | 419.2554 | 412.5466 | 375.7084 | ... | 311.4558 | 305.1289 | 272.2215 | 191.8767 | 185.8954 | 183.6736 | 166.3003 | 201.4220 | 94.7262 | 385.0645 |
4 | 20211001 | 0 | 11200560 | 16180.9931 | 347.0175 | 199.4538 | 306.5052 | 591.6085 | 697.1087 | 665.0602 | ... | 742.6981 | 807.3914 | 947.1588 | 671.7726 | 651.7558 | 515.6408 | 616.6335 | 487.2112 | 320.8738 | 925.3486 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
315451 | 20211031 | 23 | 11650600 | 17478.4904 | 714.1254 | 299.4715 | 453.6923 | 493.4247 | 574.7405 | 606.6867 | ... | 703.1150 | 766.5846 | 897.7361 | 740.0324 | 746.0500 | 635.1522 | 612.5224 | 614.9323 | 512.0810 | 1090.7791 |
315452 | 20211031 | 23 | 11500615 | 32460.6023 | 1837.3040 | 1071.3764 | 1092.1734 | 741.0566 | 1040.5055 | 961.6468 | ... | 1161.5092 | 1100.7893 | 1327.8705 | 1578.7395 | 1590.2784 | 1020.4864 | 1061.3069 | 915.4145 | 804.8437 | 1750.1258 |
315453 | 20211031 | 23 | 11500550 | 13687.5952 | 678.8032 | 307.9898 | 296.3808 | 320.4280 | 456.3872 | 514.8138 | ... | 544.6161 | 469.5416 | 590.1995 | 595.4880 | 632.0972 | 435.8399 | 502.1215 | 531.8227 | 408.1603 | 1020.4507 |
315454 | 20211031 | 23 | 11170685 | 25708.8859 | 627.0877 | 269.1795 | 381.0943 | 784.8365 | 1166.8808 | 1359.7283 | ... | 1123.1349 | 1510.6559 | 1732.9463 | 1111.6756 | 1070.1019 | 819.6220 | 835.5903 | 739.6944 | 531.0385 | 1472.6105 |
315455 | 20211031 | 23 | 11350670 | 19975.0783 | 616.9828 | 428.6838 | 633.5190 | 637.5429 | 577.8528 | 535.0696 | ... | 617.2234 | 579.1297 | 606.5020 | 546.3732 | 864.8004 | 887.2383 | 1033.1701 | 794.3919 | 652.8658 | 1966.1422 |
315456 rows × 32 columns
pd.options.display.float_format = '{:,.0f}'.format
2. 행정동 이름 불러오기
- 주민등록 행정기관(행정동) 및 관할 법정동 현황
hang=pd.read_csv('행정동코드_매핑정보_20200325.csv',encoding='CP949')
hang=hang[1:]
hang
통계청행정동코드 | 행자부행정동코드 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|
1 | 1101053 | 11110530 | 서울 | 종로구 | 사직동 |
2 | 1101054 | 11110540 | 서울 | 종로구 | 삼청동 |
3 | 1101055 | 11110550 | 서울 | 종로구 | 부암동 |
4 | 1101056 | 11110560 | 서울 | 종로구 | 평창동 |
5 | 1101057 | 11110570 | 서울 | 종로구 | 무악동 |
... | ... | ... | ... | ... | ... |
420 | 1125070 | 11740690 | 서울 | 강동구 | 둔촌1동 |
421 | 1125071 | 11740700 | 서울 | 강동구 | 둔촌2동 |
422 | 1125072 | 11740570 | 서울 | 강동구 | 암사1동 |
423 | 1125073 | 11740610 | 서울 | 강동구 | 천호2동 |
424 | 1125074 | 11740685 | 서울 | 강동구 | 길동 |
424 rows × 5 columns
hang['행자부행정동코드']=hang['행자부행정동코드'].astype(str)
people['행정동코드']=people['행정동코드'].astype(str)
local_people = pd.merge(people,hang , how='inner',left_on='행정동코드', right_on='행자부행정동코드')
local_people
기준일ID | 시간대구분 | 행정동코드 | 총생활인구수 | 남자0세부터9세생활인구수 | 남자10세부터14세생활인구수 | 남자15세부터19세생활인구수 | 남자20세부터24세생활인구수 | 남자25세부터29세생활인구수 | 남자30세부터34세생활인구수 | ... | 여자50세부터54세생활인구수 | 여자55세부터59세생활인구수 | 여자60세부터64세생활인구수 | 여자65세부터69세생활인구수 | 여자70세이상생활인구수 | 통계청행정동코드 | 행자부행정동코드 | 시도명 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 20211001 | 0 | 11500550 | 14,235 | 678 | 308 | 302 | 340 | 513 | 527 | ... | 460 | 548 | 571 | 442 | 1,020 | 1116057 | 11500550 | 서울 | 강서구 | 화곡2동 |
1 | 20211001 | 1 | 11500550 | 15,882 | 790 | 359 | 339 | 385 | 623 | 567 | ... | 502 | 592 | 640 | 491 | 1,074 | 1116057 | 11500550 | 서울 | 강서구 | 화곡2동 |
2 | 20211001 | 2 | 11500550 | 16,227 | 734 | 333 | 399 | 398 | 646 | 589 | ... | 518 | 603 | 622 | 489 | 1,094 | 1116057 | 11500550 | 서울 | 강서구 | 화곡2동 |
3 | 20211001 | 3 | 11500550 | 16,296 | 745 | 338 | 404 | 398 | 645 | 589 | ... | 507 | 616 | 637 | 499 | 1,073 | 1116057 | 11500550 | 서울 | 강서구 | 화곡2동 |
4 | 20211001 | 4 | 11500550 | 16,650 | 742 | 337 | 436 | 403 | 634 | 614 | ... | 531 | 609 | 617 | 474 | 1,117 | 1116057 | 11500550 | 서울 | 강서구 | 화곡2동 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
315451 | 20211031 | 19 | 11530595 | 11,107 | 108 | 55 | 89 | 262 | 640 | 609 | ... | 425 | 436 | 353 | 252 | 587 | 1117070 | 11530595 | 서울 | 구로구 | 가리봉동 |
315452 | 20211031 | 20 | 11530595 | 11,200 | 84 | 43 | 93 | 247 | 665 | 608 | ... | 441 | 436 | 375 | 257 | 610 | 1117070 | 11530595 | 서울 | 구로구 | 가리봉동 |
315453 | 20211031 | 21 | 11530595 | 11,486 | 88 | 45 | 97 | 267 | 738 | 628 | ... | 434 | 471 | 384 | 246 | 580 | 1117070 | 11530595 | 서울 | 구로구 | 가리봉동 |
315454 | 20211031 | 22 | 11530595 | 11,559 | 64 | 33 | 105 | 291 | 789 | 650 | ... | 455 | 498 | 380 | 236 | 574 | 1117070 | 11530595 | 서울 | 구로구 | 가리봉동 |
315455 | 20211031 | 23 | 11530595 | 11,348 | 91 | 47 | 62 | 276 | 825 | 639 | ... | 411 | 455 | 323 | 252 | 595 | 1117070 | 11530595 | 서울 | 구로구 | 가리봉동 |
315456 rows × 37 columns
3. 총생활인구 분석
- 총생활인구 많은 곳 : 역삼1동, 여의도, 서초3동, 서교동, 진관동
local_people.pivot_table("총생활인구수", index=["시군구명","행정동명"],aggfunc = 'sum').sort_values(by=["총생활인구수"],ascending=False)
총생활인구수 | ||
---|---|---|
시군구명 | 행정동명 | |
강남구 | 역삼1동 | 71,345,464 |
영등포구 | 여의동 | 61,345,535 |
서초구 | 서초3동 | 48,717,916 |
마포구 | 서교동 | 47,042,072 |
은평구 | 진관동 | 46,549,791 |
... | ... | ... |
종로구 | 삼청동 | 4,093,912 |
창신3동 | 3,739,527 | |
양천구 | 신월6동 | 3,689,072 |
강동구 | 둔촌1동 | 3,665,295 |
서초구 | 반포본동 | 3,274,845 |
424 rows × 1 columns
4. 순위 분석 : 각 평균에 따른 합 비교
1) 성별에 따른 순위 (남)
sex_lp=local_people.filter(regex='남자|시군구명|행정동명')
boy=sex_lp.groupby(["시군구명","행정동명"]).mean().sum(axis=1).sort_values(ascending=False)
pd.concat([boy],axis=1)
0 | ||
---|---|---|
시군구명 | 행정동명 | |
강남구 | 역삼1동 | 50,095 |
영등포구 | 여의동 | 44,343 |
서초구 | 서초3동 | 33,468 |
금천구 | 가산동 | 33,036 |
종로구 | 종로1.2.3.4가동 | 30,693 |
... | ... | |
삼청동 | 2,805 | |
강동구 | 둔촌1동 | 2,665 |
양천구 | 신월6동 | 2,381 |
종로구 | 창신3동 | 2,259 |
서초구 | 반포본동 | 2,136 |
424 rows × 1 columns
2) 성별에 따른 순위(여)
sex_lp=local_people.filter(regex='여자|시군구명|행정동명')
girl=sex_lp.groupby(["시군구명","행정동명"]).mean().sum(axis=1).sort_values(ascending=False)
pd.concat([girl],axis=1)
0 | ||
---|---|---|
시군구명 | 행정동명 | |
강남구 | 역삼1동 | 45,800 |
영등포구 | 여의동 | 38,110 |
마포구 | 서교동 | 34,276 |
은평구 | 진관동 | 34,142 |
서초구 | 서초3동 | 32,013 |
... | ... | ... |
종로구 | 창신3동 | 2,767 |
삼청동 | 2,698 | |
양천구 | 신월6동 | 2,578 |
서초구 | 반포본동 | 2,266 |
강동구 | 둔촌1동 | 2,262 |
424 rows × 1 columns
3) 행정동 별 나이대 순위 : 1위
age_lp=local_people.filter(regex='\d|시군구명|행정동명')
age_lp_1=pd.DataFrame()
age_lp_1["0세부터9세"]=age_lp.apply(lambda x: x["남자0세부터9세생활인구수"]+x["여자0세부터9세생활인구수"], axis=1)
age_lp_1["10세부터14세"]=age_lp.apply(lambda x: x["남자10세부터14세생활인구수"]+x["여자10세부터14세생활인구수"], axis=1)
age_lp_1["15세부터19세"]=age_lp.apply(lambda x: x["남자15세부터19세생활인구수"]+x["여자15세부터19세생활인구수"], axis=1)
age_lp_1["20세부터24세"]=age_lp.apply(lambda x: x["남자20세부터24세생활인구수"]+x["여자20세부터24세생활인구수"], axis=1)
age_lp_1["25세부터29세"]=age_lp.apply(lambda x: x["남자25세부터29세생활인구수"]+x["여자25세부터29세생활인구수"], axis=1)
age_lp_1["30세부터34세"]=age_lp.apply(lambda x: x["남자30세부터34세생활인구수"]+x["여자30세부터34세생활인구수"], axis=1)
age_lp_1["35세부터39세"]=age_lp.apply(lambda x: x["남자35세부터39세생활인구수"]+x["여자35세부터39세생활인구수"], axis=1)
age_lp_1["40세부터44세"]=age_lp.apply(lambda x: x["남자40세부터44세생활인구수"]+x["여자40세부터44세생활인구수"], axis=1)
age_lp_1["45세부터49세"]=age_lp.apply(lambda x: x["남자45세부터49세생활인구수"]+x["여자45세부터49세생활인구수"], axis=1)
age_lp_1["50세부터54세"]=age_lp.apply(lambda x: x["남자50세부터54세생활인구수"]+x["여자50세부터54세생활인구수"], axis=1)
age_lp_1["55세부터59세"]=age_lp.apply(lambda x: x["남자55세부터59세생활인구수"]+x["여자55세부터59세생활인구수"], axis=1)
age_lp_1["60세부터64세"]=age_lp.apply(lambda x: x["남자60세부터64세생활인구수"]+x["여자60세부터64세생활인구수"], axis=1)
age_lp_1["65세부터69세"]=age_lp.apply(lambda x: x["남자65세부터69세생활인구수"]+x["여자65세부터69세생활인구수"], axis=1)
age_lp_1["70세이상"]=age_lp.apply(lambda x: x["남자70세이상생활인구수"]+x["여자70세이상생활인구수"], axis=1)
age_lp_1
0세부터9세 | 10세부터14세 | 15세부터19세 | 20세부터24세 | 25세부터29세 | 30세부터34세 | 35세부터39세 | 40세부터44세 | 45세부터49세 | 50세부터54세 | 55세부터59세 | 60세부터64세 | 65세부터69세 | 70세이상 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1,181 | 551 | 630 | 795 | 1,087 | 1,038 | 1,352 | 1,214 | 1,257 | 888 | 1,050 | 898 | 734 | 1,559 |
1 | 1,344 | 627 | 694 | 877 | 1,290 | 1,135 | 1,554 | 1,355 | 1,395 | 973 | 1,147 | 1,011 | 800 | 1,678 |
2 | 1,262 | 589 | 799 | 918 | 1,296 | 1,161 | 1,604 | 1,447 | 1,430 | 1,024 | 1,167 | 1,000 | 826 | 1,705 |
3 | 1,312 | 613 | 778 | 941 | 1,302 | 1,185 | 1,600 | 1,390 | 1,457 | 1,006 | 1,187 | 1,004 | 821 | 1,701 |
4 | 1,352 | 632 | 841 | 945 | 1,328 | 1,212 | 1,666 | 1,431 | 1,476 | 1,057 | 1,182 | 988 | 802 | 1,737 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
315451 | 205 | 106 | 181 | 598 | 1,191 | 1,074 | 1,117 | 956 | 1,040 | 1,056 | 1,221 | 821 | 542 | 998 |
315452 | 166 | 86 | 208 | 639 | 1,251 | 1,090 | 1,103 | 939 | 1,008 | 1,083 | 1,198 | 848 | 547 | 1,034 |
315453 | 142 | 74 | 191 | 685 | 1,383 | 1,153 | 1,208 | 917 | 1,018 | 1,089 | 1,224 | 883 | 538 | 981 |
315454 | 121 | 63 | 194 | 707 | 1,479 | 1,178 | 1,167 | 923 | 1,008 | 1,089 | 1,246 | 868 | 535 | 981 |
315455 | 159 | 82 | 144 | 686 | 1,473 | 1,110 | 1,230 | 899 | 1,045 | 983 | 1,191 | 818 | 550 | 978 |
315456 rows × 14 columns
age_lp_1['시군구명']=age_lp['시군구명']
age_lp_1['행정동명']=age_lp['행정동명']
age_lp_1
0세부터9세 | 10세부터14세 | 15세부터19세 | 20세부터24세 | 25세부터29세 | 30세부터34세 | 35세부터39세 | 40세부터44세 | 45세부터49세 | 50세부터54세 | 55세부터59세 | 60세부터64세 | 65세부터69세 | 70세이상 | 시군구명 | 행정동명 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1,181 | 551 | 630 | 795 | 1,087 | 1,038 | 1,352 | 1,214 | 1,257 | 888 | 1,050 | 898 | 734 | 1,559 | 강서구 | 화곡2동 |
1 | 1,344 | 627 | 694 | 877 | 1,290 | 1,135 | 1,554 | 1,355 | 1,395 | 973 | 1,147 | 1,011 | 800 | 1,678 | 강서구 | 화곡2동 |
2 | 1,262 | 589 | 799 | 918 | 1,296 | 1,161 | 1,604 | 1,447 | 1,430 | 1,024 | 1,167 | 1,000 | 826 | 1,705 | 강서구 | 화곡2동 |
3 | 1,312 | 613 | 778 | 941 | 1,302 | 1,185 | 1,600 | 1,390 | 1,457 | 1,006 | 1,187 | 1,004 | 821 | 1,701 | 강서구 | 화곡2동 |
4 | 1,352 | 632 | 841 | 945 | 1,328 | 1,212 | 1,666 | 1,431 | 1,476 | 1,057 | 1,182 | 988 | 802 | 1,737 | 강서구 | 화곡2동 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
315451 | 205 | 106 | 181 | 598 | 1,191 | 1,074 | 1,117 | 956 | 1,040 | 1,056 | 1,221 | 821 | 542 | 998 | 구로구 | 가리봉동 |
315452 | 166 | 86 | 208 | 639 | 1,251 | 1,090 | 1,103 | 939 | 1,008 | 1,083 | 1,198 | 848 | 547 | 1,034 | 구로구 | 가리봉동 |
315453 | 142 | 74 | 191 | 685 | 1,383 | 1,153 | 1,208 | 917 | 1,018 | 1,089 | 1,224 | 883 | 538 | 981 | 구로구 | 가리봉동 |
315454 | 121 | 63 | 194 | 707 | 1,479 | 1,178 | 1,167 | 923 | 1,008 | 1,089 | 1,246 | 868 | 535 | 981 | 구로구 | 가리봉동 |
315455 | 159 | 82 | 144 | 686 | 1,473 | 1,110 | 1,230 | 899 | 1,045 | 983 | 1,191 | 818 | 550 | 978 | 구로구 | 가리봉동 |
315456 rows × 16 columns
a=age_lp_1.groupby(["시군구명","행정동명"]).mean()
a
0세부터9세 | 10세부터14세 | 15세부터19세 | 20세부터24세 | 25세부터29세 | 30세부터34세 | 35세부터39세 | 40세부터44세 | 45세부터49세 | 50세부터54세 | 55세부터59세 | 60세부터64세 | 65세부터69세 | 70세이상 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
시군구명 | 행정동명 | ||||||||||||||
강남구 | 개포1동 | 666 | 426 | 431 | 314 | 376 | 506 | 723 | 788 | 830 | 647 | 660 | 560 | 497 | 913 |
개포2동 | 1,710 | 1,456 | 2,109 | 1,211 | 1,098 | 1,183 | 1,600 | 1,961 | 2,446 | 1,825 | 1,852 | 1,534 | 1,285 | 2,674 | |
개포4동 | 1,083 | 684 | 987 | 823 | 1,065 | 1,146 | 1,413 | 1,321 | 1,453 | 1,333 | 1,186 | 1,059 | 805 | 1,372 | |
논현1동 | 938 | 403 | 1,157 | 3,684 | 5,674 | 5,552 | 5,448 | 4,180 | 3,629 | 2,600 | 2,220 | 1,650 | 1,351 | 2,508 | |
논현2동 | 1,690 | 662 | 1,118 | 2,807 | 4,965 | 5,134 | 5,292 | 4,539 | 3,860 | 2,628 | 2,185 | 1,619 | 1,265 | 2,734 | |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
중랑구 | 상봉2동 | 934 | 385 | 751 | 1,889 | 2,803 | 2,511 | 2,361 | 1,790 | 1,952 | 1,887 | 2,193 | 1,678 | 1,217 | 2,552 |
신내1동 | 3,828 | 1,567 | 1,753 | 1,708 | 2,091 | 2,002 | 2,702 | 2,728 | 2,699 | 2,675 | 2,874 | 2,536 | 1,715 | 4,140 | |
신내2동 | 1,314 | 754 | 1,005 | 930 | 1,058 | 1,061 | 1,432 | 1,240 | 1,334 | 1,361 | 1,557 | 1,307 | 977 | 2,475 | |
중화1동 | 1,699 | 699 | 846 | 970 | 1,197 | 1,191 | 1,365 | 1,140 | 1,242 | 1,178 | 1,382 | 1,183 | 929 | 2,287 | |
중화2동 | 1,445 | 621 | 909 | 1,537 | 1,724 | 1,738 | 1,940 | 1,673 | 1,896 | 1,994 | 2,422 | 1,998 | 1,543 | 3,718 |
424 rows × 14 columns
a["1위"]=a.idxmax(axis=1)
a
0세부터9세 | 10세부터14세 | 15세부터19세 | 20세부터24세 | 25세부터29세 | 30세부터34세 | 35세부터39세 | 40세부터44세 | 45세부터49세 | 50세부터54세 | 55세부터59세 | 60세부터64세 | 65세부터69세 | 70세이상 | 1위 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
시군구명 | 행정동명 | |||||||||||||||
강남구 | 개포1동 | 666 | 426 | 431 | 314 | 376 | 506 | 723 | 788 | 830 | 647 | 660 | 560 | 497 | 913 | 70세이상 |
개포2동 | 1,710 | 1,456 | 2,109 | 1,211 | 1,098 | 1,183 | 1,600 | 1,961 | 2,446 | 1,825 | 1,852 | 1,534 | 1,285 | 2,674 | 70세이상 | |
개포4동 | 1,083 | 684 | 987 | 823 | 1,065 | 1,146 | 1,413 | 1,321 | 1,453 | 1,333 | 1,186 | 1,059 | 805 | 1,372 | 45세부터49세 | |
논현1동 | 938 | 403 | 1,157 | 3,684 | 5,674 | 5,552 | 5,448 | 4,180 | 3,629 | 2,600 | 2,220 | 1,650 | 1,351 | 2,508 | 25세부터29세 | |
논현2동 | 1,690 | 662 | 1,118 | 2,807 | 4,965 | 5,134 | 5,292 | 4,539 | 3,860 | 2,628 | 2,185 | 1,619 | 1,265 | 2,734 | 35세부터39세 | |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
중랑구 | 상봉2동 | 934 | 385 | 751 | 1,889 | 2,803 | 2,511 | 2,361 | 1,790 | 1,952 | 1,887 | 2,193 | 1,678 | 1,217 | 2,552 | 25세부터29세 |
신내1동 | 3,828 | 1,567 | 1,753 | 1,708 | 2,091 | 2,002 | 2,702 | 2,728 | 2,699 | 2,675 | 2,874 | 2,536 | 1,715 | 4,140 | 70세이상 | |
신내2동 | 1,314 | 754 | 1,005 | 930 | 1,058 | 1,061 | 1,432 | 1,240 | 1,334 | 1,361 | 1,557 | 1,307 | 977 | 2,475 | 70세이상 | |
중화1동 | 1,699 | 699 | 846 | 970 | 1,197 | 1,191 | 1,365 | 1,140 | 1,242 | 1,178 | 1,382 | 1,183 | 929 | 2,287 | 70세이상 | |
중화2동 | 1,445 | 621 | 909 | 1,537 | 1,724 | 1,738 | 1,940 | 1,673 | 1,896 | 1,994 | 2,422 | 1,998 | 1,543 | 3,718 | 70세이상 |
424 rows × 15 columns
4# 5) 행정동 별 나이대 순위 : 모든순위(1위~14위)
-종로구 삼청동에는 20대가 유동을 많이한다. 등의 결과를 얻을 수 있다.
import numpy as np
a_list=a.apply(np.argsort,axis=1)
a_list.values
array([[ 3, 4, 1, ..., 7, 8, 13],
[ 4, 5, 3, ..., 2, 8, 13],
[ 1, 12, 3, ..., 13, 6, 8],
...,
[ 1, 3, 12, ..., 6, 10, 13],
[ 1, 2, 12, ..., 10, 0, 13],
[ 1, 2, 0, ..., 11, 10, 13]], dtype=int64)
a_cols=a.columns.to_numpy()[a_list.values[:,::-1]]
a_cols
array([['70세이상', '45세부터49세', '40세부터44세', ..., '10세부터14세', '25세부터29세',
'20세부터24세'],
['70세이상', '45세부터49세', '15세부터19세', ..., '20세부터24세', '30세부터34세',
'25세부터29세'],
['45세부터49세', '35세부터39세', '70세이상', ..., '20세부터24세', '65세부터69세',
'10세부터14세'],
...,
['70세이상', '55세부터59세', '35세부터39세', ..., '65세부터69세', '20세부터24세',
'10세부터14세'],
['70세이상', '0세부터9세', '55세부터59세', ..., '65세부터69세', '15세부터19세',
'10세부터14세'],
['70세이상', '55세부터59세', '60세부터64세', ..., '0세부터9세', '15세부터19세',
'10세부터14세']], dtype=object)
a[['1위','2위','3위','4위','5위','6위','7위','8위','9위','10위','11위','12위','13위','14위']]=pd.DataFrame(a_cols, index=a.index)
a
0세부터9세 | 10세부터14세 | 15세부터19세 | 20세부터24세 | 25세부터29세 | 30세부터34세 | 35세부터39세 | 40세부터44세 | 45세부터49세 | 50세부터54세 | ... | 5위 | 6위 | 7위 | 8위 | 9위 | 10위 | 11위 | 12위 | 13위 | 14위 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
시군구명 | 행정동명 | |||||||||||||||||||||
강남구 | 개포1동 | 666 | 426 | 431 | 314 | 376 | 506 | 723 | 788 | 830 | 647 | ... | 0세부터9세 | 55세부터59세 | 50세부터54세 | 60세부터64세 | 30세부터34세 | 65세부터69세 | 15세부터19세 | 10세부터14세 | 25세부터29세 | 20세부터24세 |
개포2동 | 1,710 | 1,456 | 2,109 | 1,211 | 1,098 | 1,183 | 1,600 | 1,961 | 2,446 | 1,825 | ... | 55세부터59세 | 50세부터54세 | 0세부터9세 | 35세부터39세 | 60세부터64세 | 10세부터14세 | 65세부터69세 | 20세부터24세 | 30세부터34세 | 25세부터29세 | |
개포4동 | 1,083 | 684 | 987 | 823 | 1,065 | 1,146 | 1,413 | 1,321 | 1,453 | 1,333 | ... | 40세부터44세 | 55세부터59세 | 30세부터34세 | 0세부터9세 | 25세부터29세 | 60세부터64세 | 15세부터19세 | 20세부터24세 | 65세부터69세 | 10세부터14세 | |
논현1동 | 938 | 403 | 1,157 | 3,684 | 5,674 | 5,552 | 5,448 | 4,180 | 3,629 | 2,600 | ... | 20세부터24세 | 45세부터49세 | 50세부터54세 | 70세이상 | 55세부터59세 | 60세부터64세 | 65세부터69세 | 15세부터19세 | 0세부터9세 | 10세부터14세 | |
논현2동 | 1,690 | 662 | 1,118 | 2,807 | 4,965 | 5,134 | 5,292 | 4,539 | 3,860 | 2,628 | ... | 45세부터49세 | 20세부터24세 | 70세이상 | 50세부터54세 | 55세부터59세 | 0세부터9세 | 60세부터64세 | 65세부터69세 | 15세부터19세 | 10세부터14세 | |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
중랑구 | 상봉2동 | 934 | 385 | 751 | 1,889 | 2,803 | 2,511 | 2,361 | 1,790 | 1,952 | 1,887 | ... | 55세부터59세 | 45세부터49세 | 20세부터24세 | 50세부터54세 | 40세부터44세 | 60세부터64세 | 65세부터69세 | 0세부터9세 | 15세부터19세 | 10세부터14세 |
신내1동 | 3,828 | 1,567 | 1,753 | 1,708 | 2,091 | 2,002 | 2,702 | 2,728 | 2,699 | 2,675 | ... | 35세부터39세 | 45세부터49세 | 50세부터54세 | 60세부터64세 | 25세부터29세 | 30세부터34세 | 15세부터19세 | 65세부터69세 | 20세부터24세 | 10세부터14세 | |
신내2동 | 1,314 | 754 | 1,005 | 930 | 1,058 | 1,061 | 1,432 | 1,240 | 1,334 | 1,361 | ... | 45세부터49세 | 0세부터9세 | 60세부터64세 | 40세부터44세 | 30세부터34세 | 25세부터29세 | 15세부터19세 | 65세부터69세 | 20세부터24세 | 10세부터14세 | |
중화1동 | 1,699 | 699 | 846 | 970 | 1,197 | 1,191 | 1,365 | 1,140 | 1,242 | 1,178 | ... | 45세부터49세 | 25세부터29세 | 30세부터34세 | 60세부터64세 | 50세부터54세 | 40세부터44세 | 20세부터24세 | 65세부터69세 | 15세부터19세 | 10세부터14세 | |
중화2동 | 1,445 | 621 | 909 | 1,537 | 1,724 | 1,738 | 1,940 | 1,673 | 1,896 | 1,994 | ... | 35세부터39세 | 45세부터49세 | 30세부터34세 | 25세부터29세 | 40세부터44세 | 65세부터69세 | 20세부터24세 | 0세부터9세 | 15세부터19세 | 10세부터14세 |
424 rows × 28 columns
5# 6) 각 행정동별 성별 나이대 모두 고려한 순위
sex_age=age_lp.groupby(["시군구명","행정동명"]).mean()
sex_age_list=sex_age.apply(np.argsort,axis=1)
sex_age_list.values
array([[ 3, 17, 18, ..., 22, 8, 27],
[18, 5, 12, ..., 8, 22, 27],
[15, 12, 1, ..., 22, 8, 27],
...,
[15, 1, 3, ..., 24, 13, 27],
[15, 1, 12, ..., 13, 0, 27],
[15, 1, 16, ..., 10, 13, 27]], dtype=int64)
sex_age_cols=sex_age.columns.to_numpy()[sex_age_list.values[:,::-1]]
sex_age_cols
array([['여자70세이상생활인구수', '남자45세부터49세생활인구수', '여자45세부터49세생활인구수', ...,
'여자25세부터29세생활인구수', '여자20세부터24세생활인구수', '남자20세부터24세생활인구수'],
['여자70세이상생활인구수', '여자45세부터49세생활인구수', '남자45세부터49세생활인구수', ...,
'남자65세부터69세생활인구수', '남자30세부터34세생활인구수', '여자25세부터29세생활인구수'],
['여자70세이상생활인구수', '남자45세부터49세생활인구수', '여자45세부터49세생활인구수', ...,
'남자10세부터14세생활인구수', '남자65세부터69세생활인구수', '여자10세부터14세생활인구수'],
...,
['여자70세이상생활인구수', '남자70세이상생활인구수', '여자55세부터59세생활인구수', ...,
'남자20세부터24세생활인구수', '남자10세부터14세생활인구수', '여자10세부터14세생활인구수'],
['여자70세이상생활인구수', '남자0세부터9세생활인구수', '남자70세이상생활인구수', ...,
'남자65세부터69세생활인구수', '남자10세부터14세생활인구수', '여자10세부터14세생활인구수'],
['여자70세이상생활인구수', '남자70세이상생활인구수', '남자55세부터59세생활인구수', ...,
'여자15세부터19세생활인구수', '남자10세부터14세생활인구수', '여자10세부터14세생활인구수']],
dtype=object)
sex_age[['1위','2위','3위','4위','5위','6위','7위','8위','9위','10위','11위','12위','13위','14위',
'15위','16위','17위','18위','19위','20위','21위','22위','23위','24위','25위','26위','27위','28위']]=pd.DataFrame(sex_age_cols, index=a.index)
sex_age
남자0세부터9세생활인구수 | 남자10세부터14세생활인구수 | 남자15세부터19세생활인구수 | 남자20세부터24세생활인구수 | 남자25세부터29세생활인구수 | 남자30세부터34세생활인구수 | 남자35세부터39세생활인구수 | 남자40세부터44세생활인구수 | 남자45세부터49세생활인구수 | 남자50세부터54세생활인구수 | ... | 19위 | 20위 | 21위 | 22위 | 23위 | 24위 | 25위 | 26위 | 27위 | 28위 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
시군구명 | 행정동명 | |||||||||||||||||||||
강남구 | 개포1동 | 346 | 219 | 214 | 147 | 197 | 214 | 363 | 389 | 421 | 352 | ... | 남자65세부터69세생활인구수 | 남자10세부터14세생활인구수 | 여자15세부터19세생활인구수 | 남자30세부터34세생활인구수 | 남자15세부터19세생활인구수 | 여자10세부터14세생활인구수 | 남자25세부터29세생활인구수 | 여자25세부터29세생활인구수 | 여자20세부터24세생활인구수 | 남자20세부터24세생활인구수 |
개포2동 | 966 | 813 | 1,122 | 599 | 591 | 544 | 683 | 855 | 1,157 | 900 | ... | 남자35세부터39세생활인구수 | 남자60세부터64세생활인구수 | 여자10세부터14세생활인구수 | 여자30세부터34세생활인구수 | 여자20세부터24세생활인구수 | 남자20세부터24세생활인구수 | 남자25세부터29세생활인구수 | 남자65세부터69세생활인구수 | 남자30세부터34세생활인구수 | 여자25세부터29세생활인구수 | |
개포4동 | 570 | 361 | 440 | 397 | 544 | 553 | 713 | 637 | 728 | 661 | ... | 여자25세부터29세생활인구수 | 여자0세부터9세생활인구수 | 남자60세부터64세생활인구수 | 여자65세부터69세생활인구수 | 남자15세부터19세생활인구수 | 여자20세부터24세생활인구수 | 남자20세부터24세생활인구수 | 남자10세부터14세생활인구수 | 남자65세부터69세생활인구수 | 여자10세부터14세생활인구수 | |
논현1동 | 513 | 209 | 505 | 1,369 | 2,479 | 2,675 | 2,931 | 2,366 | 2,156 | 1,445 | ... | 여자60세부터64세생활인구수 | 남자60세부터64세생활인구수 | 여자65세부터69세생활인구수 | 여자15세부터19세생활인구수 | 남자65세부터69세생활인구수 | 남자0세부터9세생활인구수 | 남자15세부터19세생활인구수 | 여자0세부터9세생활인구수 | 남자10세부터14세생활인구수 | 여자10세부터14세생활인구수 | |
논현2동 | 967 | 360 | 579 | 1,003 | 2,097 | 2,441 | 2,891 | 2,613 | 2,302 | 1,545 | ... | 남자0세부터9세생활인구수 | 여자60세부터64세생활인구수 | 남자60세부터64세생활인구수 | 여자65세부터69세생활인구수 | 여자0세부터9세생활인구수 | 남자15세부터19세생활인구수 | 남자65세부터69세생활인구수 | 여자15세부터19세생활인구수 | 남자10세부터14세생활인구수 | 여자10세부터14세생활인구수 | |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
중랑구 | 상봉2동 | 468 | 198 | 374 | 770 | 1,238 | 1,187 | 1,121 | 930 | 975 | 949 | ... | 남자20세부터24세생활인구수 | 남자60세부터64세생활인구수 | 여자65세부터69세생활인구수 | 남자65세부터69세생활인구수 | 남자0세부터9세생활인구수 | 여자0세부터9세생활인구수 | 여자15세부터19세생활인구수 | 남자15세부터19세생활인구수 | 남자10세부터14세생활인구수 | 여자10세부터14세생활인구수 |
신내1동 | 1,868 | 768 | 794 | 853 | 1,001 | 888 | 1,263 | 1,386 | 1,400 | 1,204 | ... | 남자25세부터29세생활인구수 | 여자15세부터19세생활인구수 | 여자65세부터69세생활인구수 | 남자30세부터34세생활인구수 | 여자20세부터24세생활인구수 | 남자20세부터24세생활인구수 | 남자65세부터69세생활인구수 | 여자10세부터14세생활인구수 | 남자15세부터19세생활인구수 | 남자10세부터14세생활인구수 | |
신내2동 | 684 | 399 | 522 | 423 | 477 | 505 | 701 | 588 | 601 | 606 | ... | 남자15세부터19세생활인구수 | 여자20세부터24세생활인구수 | 남자30세부터34세생활인구수 | 여자65세부터69세생활인구수 | 여자15세부터19세생활인구수 | 남자25세부터29세생활인구수 | 남자65세부터69세생활인구수 | 남자20세부터24세생활인구수 | 남자10세부터14세생활인구수 | 여자10세부터14세생활인구수 | |
중화1동 | 962 | 382 | 420 | 454 | 560 | 560 | 709 | 571 | 535 | 538 | ... | 남자45세부터49세생활인구수 | 여자65세부터69세생활인구수 | 여자20세부터24세생활인구수 | 남자60세부터64세생활인구수 | 남자20세부터24세생활인구수 | 여자15세부터19세생활인구수 | 남자15세부터19세생활인구수 | 남자65세부터69세생활인구수 | 남자10세부터14세생활인구수 | 여자10세부터14세생활인구수 | |
중화2동 | 745 | 335 | 468 | 744 | 785 | 888 | 984 | 826 | 913 | 1,008 | ... | 여자20세부터24세생활인구수 | 남자25세부터29세생활인구수 | 남자0세부터9세생활인구수 | 남자20세부터24세생활인구수 | 여자0세부터9세생활인구수 | 남자65세부터69세생활인구수 | 남자15세부터19세생활인구수 | 여자15세부터19세생활인구수 | 남자10세부터14세생활인구수 | 여자10세부터14세생활인구수 |
424 rows × 56 columns
댓글남기기