Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
Tags
- 환경변수 설정
- DB 데이터
- #undef
- #endif
- bootstrap
- OpenCV
- 튜토리얼
- bootstrap4 패키지
- javascript
- flask
- 콘솔 가상환경 # 콘솔 #가상환경
- jinja2
- DB 데이터 저장
- VS Code
- 사이트 도메인
- href
- MySQL 세팅
- openweathermap
- 명령어
- 성능지표
- #else
- heroku
- Django
- 실시간 시계
- OpenCV + Flask
- #ifndef
- #if
- Action
- #ifdef
- PyQt5
Archives
- Today
- Total
PROGRAMMING
Python 10 본문
1. 10살 단위로 인구를 정리한다.¶
In [2]:
import numpy as np
import pandas as pd
#frame1 = pd.read_csv('files/180630_Daegu.csv', sep=',')
#frame2 = pd.read_csv('files/181231_Daegu.csv', sep=',')
#frame3 = pd.read_csv('files/190630_Daegu.csv', sep=',')
In [21]:
resident_01 = pd.read_csv('files/180630_Daegu.csv', sep=',')
resident_01.head(3)
Out[21]:
구분 | 총계 | 총계 남 | 총계 여 | 중구 계 | 중구 남 | 중구 여 | 동구 계 | 동구 남 | 동구 여 | ... | 북구 여 | 수성구 계 | 수성구 남 | 수성구 여 | 달서구 계 | 달서구 남 | 달서구 여 | 달성군 계 | 달성군 남 | 달성군 여 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0세 | 14568 | 7488 | 7080 | 511 | 275 | 236 | 2263 | 1161 | 1102 | ... | 1356 | 1784 | 911 | 873 | 3215 | 1719 | 1496 | 2724 | 1374 | 1350 |
1 | 1세 | 17475 | 8947 | 8528 | 609 | 309 | 300 | 2755 | 1410 | 1345 | ... | 1670 | 2264 | 1170 | 1094 | 3818 | 2017 | 1801 | 3063 | 1543 | 1520 |
2 | 2세 | 19562 | 9985 | 9577 | 612 | 308 | 304 | 3000 | 1467 | 1533 | ... | 1847 | 2684 | 1410 | 1274 | 4423 | 2317 | 2106 | 3327 | 1668 | 1659 |
3 rows × 28 columns
In [22]:
df = resident_01.copy()
In [23]:
drop_list = []
check_list = ['총계', '구분', ' 남', ' 여'] # 남구 삭제 방지를 위해 '남' 앞에 공백 추가
for chk in check_list:
for item in df.columns :
if chk in item:
drop_list.append(item)
drop_list = list(set(drop_list))
In [24]:
df1 = df.drop(drop_list, axis=1)
df1.head(3)
Out[24]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
0 | 511 | 2263 | 719 | 586 | 2766 | 1784 | 3215 | 2724 |
1 | 609 | 2755 | 887 | 718 | 3361 | 2264 | 3818 | 3063 |
2 | 612 | 3000 | 1010 | 776 | 3730 | 2684 | 4423 | 3327 |
In [25]:
df1['인구0'] = (pd.DataFrame(range(0,101))/10).astype(int)*10
df1 = df1.groupby('인구0')
df1 = df1.sum()
df1
Out[25]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
인구0 | ||||||||
0 | 5674 | 29075 | 9719 | 7797 | 37401 | 32508 | 46276 | 29751 |
10 | 5549 | 29903 | 14006 | 11162 | 48985 | 57880 | 63987 | 23382 |
20 | 11300 | 43608 | 25542 | 20608 | 61021 | 58097 | 82987 | 29853 |
30 | 11396 | 48971 | 21529 | 18912 | 57670 | 46528 | 72962 | 43404 |
40 | 11358 | 54564 | 27671 | 22502 | 77961 | 79395 | 98641 | 40726 |
50 | 12107 | 59064 | 38473 | 26615 | 75014 | 74095 | 104487 | 38816 |
60 | 10243 | 46790 | 29106 | 22642 | 45549 | 46530 | 61842 | 23984 |
70 | 7385 | 27835 | 16212 | 14612 | 25635 | 26830 | 30320 | 12057 |
80 | 2997 | 10725 | 5702 | 6239 | 9784 | 12104 | 12259 | 5235 |
90 | 433 | 1251 | 656 | 729 | 1054 | 1404 | 1291 | 636 |
100 | 88 | 106 | 89 | 72 | 68 | 97 | 68 | 26 |
2. 70대 이상은 하나로 합친다.¶
In [26]:
df1['인구'] = df1.index
df1['인구'] = np.where(df1['인구'] >= 70, 70, df1.인구)
df1 = df1.groupby('인구')
df1 = df1.sum()
df1
Out[26]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
인구 | ||||||||
0 | 5674 | 29075 | 9719 | 7797 | 37401 | 32508 | 46276 | 29751 |
10 | 5549 | 29903 | 14006 | 11162 | 48985 | 57880 | 63987 | 23382 |
20 | 11300 | 43608 | 25542 | 20608 | 61021 | 58097 | 82987 | 29853 |
30 | 11396 | 48971 | 21529 | 18912 | 57670 | 46528 | 72962 | 43404 |
40 | 11358 | 54564 | 27671 | 22502 | 77961 | 79395 | 98641 | 40726 |
50 | 12107 | 59064 | 38473 | 26615 | 75014 | 74095 | 104487 | 38816 |
60 | 10243 | 46790 | 29106 | 22642 | 45549 | 46530 | 61842 | 23984 |
70 | 10903 | 39917 | 22659 | 21652 | 36541 | 40435 | 43938 | 17954 |
In [27]:
resident_02 = pd.read_csv('files/181231_Daegu.csv', sep=',')
resident_02.head(3)
Out[27]:
구분 | 총계 | 총계 남 | 총계 여 | 중구 계 | 중구 남 | 중구 여 | 동구 계 | 동구 남 | 동구 여 | ... | 북구 여 | 수성구 계 | 수성구 남 | 수성구 여 | 달서구 계 | 달서구 남 | 달서구 여 | 달성군 계 | 달성군 남 | 달성군 여 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0세 | 13993 | 7075 | 6918 | 521 | 272 | 249 | 2173 | 1100 | 1073 | ... | 1318 | 1685 | 874 | 811 | 2954 | 1483 | 1471 | 2735 | 1362 | 1373 |
1 | 1세 | 16306 | 8442 | 7864 | 548 | 278 | 270 | 2569 | 1365 | 1204 | ... | 1550 | 2097 | 1060 | 1037 | 3627 | 1959 | 1668 | 2968 | 1521 | 1447 |
2 | 2세 | 18774 | 9576 | 9198 | 656 | 325 | 331 | 2875 | 1433 | 1442 | ... | 1791 | 2484 | 1313 | 1171 | 4160 | 2185 | 1975 | 3282 | 1624 | 1658 |
3 rows × 28 columns
In [28]:
df = resident_02.copy()
In [29]:
drop_list = []
check_list = ['총계', '구분', ' 남', ' 여'] # 남구 삭제 방지를 위해 '남' 앞에 공백 추가
for chk in check_list:
for item in df.columns :
if chk in item:
drop_list.append(item)
drop_list = list(set(drop_list))
In [30]:
df2 = df.drop(drop_list, axis=1)
df2
Out[30]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
0 | 521 | 2173 | 650 | 587 | 2688 | 1685 | 2954 | 2735 |
1 | 548 | 2569 | 784 | 628 | 3085 | 2097 | 3627 | 2968 |
2 | 656 | 2875 | 960 | 720 | 3637 | 2484 | 4160 | 3282 |
3 | 639 | 3055 | 965 | 779 | 3827 | 2858 | 4623 | 3264 |
4 | 594 | 3055 | 937 | 759 | 3790 | 3106 | 4571 | 3208 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
96 | 21 | 62 | 22 | 41 | 64 | 64 | 64 | 31 |
97 | 17 | 45 | 25 | 27 | 33 | 54 | 52 | 20 |
98 | 18 | 31 | 13 | 25 | 41 | 25 | 17 | 8 |
99 | 8 | 27 | 10 | 11 | 19 | 24 | 19 | 12 |
100 | 85 | 110 | 95 | 76 | 71 | 90 | 76 | 25 |
101 rows × 8 columns
In [31]:
df2['인구'] = (pd.DataFrame(range(0,101))/10).astype(int)*10
df2['인구'] = np.where(df2['인구'] >= 70, 70, df2.인구)
df2 = df2.groupby('인구')
df2 = df2.sum()
df2
Out[31]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
인구 | ||||||||
0 | 5744 | 28571 | 9287 | 7520 | 36774 | 31851 | 45262 | 29944 |
10 | 5583 | 29313 | 13294 | 10849 | 48006 | 56785 | 62415 | 23427 |
20 | 11670 | 43532 | 24698 | 20423 | 60735 | 57599 | 82364 | 29824 |
30 | 11653 | 48399 | 20686 | 18483 | 57192 | 45823 | 72346 | 43396 |
40 | 11368 | 53666 | 26316 | 21908 | 76298 | 77586 | 96358 | 40770 |
50 | 12107 | 59146 | 37819 | 26357 | 75980 | 74581 | 105563 | 39590 |
60 | 10215 | 47617 | 29113 | 22849 | 46874 | 47295 | 63772 | 25015 |
70 | 11061 | 41047 | 23159 | 22112 | 37630 | 41239 | 45333 | 18577 |
In [32]:
resident_03 = pd.read_csv('files/190630_Daegu.csv', thousands=',')
resident_03.head(3)
Out[32]:
행정구역 | 총계 | 총계 남 | 총계 여 | 중구 계 | 중구 남 | 중구 여 | 동구 계 | 동구 남 | 동구 여 | ... | 북구 여 | 수성구 계 | 수성구 남 | 수성구 여 | 달서구 계 | 달서구 남 | 달서구 여 | 달성군 계 | 달성군 남 | 달성군 여 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0세 | 13085 | 6754 | 6331 | 456 | 228 | 228 | 2019 | 1021 | 998 | ... | 1221 | 1565 | 839 | 726 | 2771 | 1413 | 1358 | 2660 | 1358 | 1302 |
1 | 1세 | 15384 | 7854 | 7530 | 524 | 273 | 251 | 2401 | 1235 | 1166 | ... | 1434 | 1964 | 986 | 978 | 3370 | 1780 | 1590 | 2885 | 1429 | 1456 |
2 | 2세 | 17580 | 9026 | 8554 | 588 | 293 | 295 | 2718 | 1429 | 1289 | ... | 1682 | 2387 | 1217 | 1170 | 3836 | 2028 | 1808 | 3138 | 1579 | 1559 |
3 rows × 28 columns
In [33]:
df = resident_03.copy()
In [34]:
drop_list = []
check_list = ['행정구역', '총계', ' 남', ' 여'] # 남구 삭제 방지를 위해 '남 '추가
for chk in check_list:
for item in df.columns :
if chk in item:
drop_list.append(item)
drop_list = list(set(drop_list))
In [35]:
df3 = df.drop(drop_list, axis=1)
df3
Out[35]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
0 | 456 | 2019 | 559 | 532 | 2523 | 1565 | 2771 | 2660 |
1 | 524 | 2401 | 688 | 598 | 2954 | 1964 | 3370 | 2885 |
2 | 588 | 2718 | 852 | 675 | 3386 | 2387 | 3836 | 3138 |
3 | 625 | 2947 | 947 | 742 | 3717 | 2839 | 4480 | 3362 |
4 | 628 | 3103 | 885 | 722 | 3853 | 3069 | 4710 | 3260 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
96 | 28 | 56 | 32 | 52 | 76 | 67 | 77 | 36 |
97 | 19 | 64 | 22 | 26 | 41 | 54 | 46 | 20 |
98 | 16 | 29 | 16 | 23 | 34 | 32 | 30 | 11 |
99 | 16 | 27 | 12 | 21 | 26 | 25 | 17 | 8 |
100 | 87 | 115 | 93 | 77 | 76 | 95 | 79 | 28 |
101 rows × 8 columns
In [36]:
df3.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 101 entries, 0 to 100 Data columns (total 8 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 중구 계 101 non-null int64 1 동구 계 101 non-null int64 2 서구 계 101 non-null int64 3 남구 계 101 non-null int64 4 북구 계 101 non-null int64 5 수성구 계 101 non-null int64 6 달서구 계 101 non-null int64 7 달성군 계 101 non-null int64 dtypes: int64(8) memory usage: 6.4 KB
In [37]:
df3 = df.drop(drop_list, axis=1)
df3
Out[37]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
0 | 456 | 2019 | 559 | 532 | 2523 | 1565 | 2771 | 2660 |
1 | 524 | 2401 | 688 | 598 | 2954 | 1964 | 3370 | 2885 |
2 | 588 | 2718 | 852 | 675 | 3386 | 2387 | 3836 | 3138 |
3 | 625 | 2947 | 947 | 742 | 3717 | 2839 | 4480 | 3362 |
4 | 628 | 3103 | 885 | 722 | 3853 | 3069 | 4710 | 3260 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
96 | 28 | 56 | 32 | 52 | 76 | 67 | 77 | 36 |
97 | 19 | 64 | 22 | 26 | 41 | 54 | 46 | 20 |
98 | 16 | 29 | 16 | 23 | 34 | 32 | 30 | 11 |
99 | 16 | 27 | 12 | 21 | 26 | 25 | 17 | 8 |
100 | 87 | 115 | 93 | 77 | 76 | 95 | 79 | 28 |
101 rows × 8 columns
In [38]:
df3['인구'] = (pd.DataFrame(range(0,101))/10).astype(int)*10
df3['인구'] = np.where(df3['인구'] >= 70, 70, df3.인구)
df3 = df3.groupby('인구')
df3 = df3.sum()
df3
Out[38]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
인구 | ||||||||
0 | 5572 | 27937 | 8765 | 7221 | 36116 | 31376 | 44236 | 30293 |
10 | 5370 | 28629 | 12665 | 10462 | 46834 | 55090 | 60556 | 23621 |
20 | 11620 | 42833 | 23711 | 20327 | 60691 | 56987 | 81862 | 29765 |
30 | 11311 | 47415 | 19635 | 17871 | 56384 | 45226 | 71171 | 43412 |
40 | 11108 | 52960 | 25199 | 21400 | 75095 | 76047 | 94565 | 41490 |
50 | 11798 | 58640 | 36882 | 26010 | 76729 | 74962 | 105716 | 40356 |
60 | 10069 | 48272 | 29378 | 22886 | 48297 | 48484 | 66056 | 26081 |
70 | 11087 | 42139 | 23685 | 22505 | 38947 | 42309 | 47141 | 19221 |
3. 3개의 기간동안 인구가 증가하는 곳을 찾는다.¶
인구증가 비교를 위해 총합 index 생성
In [39]:
# 전치
df1 = df1.T
df1['총합'] = df1.sum(axis='columns').astype(int)
df1
Out[39]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 |
---|---|---|---|---|---|---|---|---|---|
중구 계 | 5674 | 5549 | 11300 | 11396 | 11358 | 12107 | 10243 | 10903 | 78530 |
동구 계 | 29075 | 29903 | 43608 | 48971 | 54564 | 59064 | 46790 | 39917 | 351892 |
서구 계 | 9719 | 14006 | 25542 | 21529 | 27671 | 38473 | 29106 | 22659 | 188705 |
남구 계 | 7797 | 11162 | 20608 | 18912 | 22502 | 26615 | 22642 | 21652 | 151890 |
북구 계 | 37401 | 48985 | 61021 | 57670 | 77961 | 75014 | 45549 | 36541 | 440142 |
수성구 계 | 32508 | 57880 | 58097 | 46528 | 79395 | 74095 | 46530 | 40435 | 435468 |
달서구 계 | 46276 | 63987 | 82987 | 72962 | 98641 | 104487 | 61842 | 43938 | 575120 |
달성군 계 | 29751 | 23382 | 29853 | 43404 | 40726 | 38816 | 23984 | 17954 | 247870 |
In [40]:
df2 = df2.T
df2['총합'] = df2.sum(axis='columns').astype(int)
df2
Out[40]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 |
---|---|---|---|---|---|---|---|---|---|
중구 계 | 5744 | 5583 | 11670 | 11653 | 11368 | 12107 | 10215 | 11061 | 79401 |
동구 계 | 28571 | 29313 | 43532 | 48399 | 53666 | 59146 | 47617 | 41047 | 351291 |
서구 계 | 9287 | 13294 | 24698 | 20686 | 26316 | 37819 | 29113 | 23159 | 184372 |
남구 계 | 7520 | 10849 | 20423 | 18483 | 21908 | 26357 | 22849 | 22112 | 150501 |
북구 계 | 36774 | 48006 | 60735 | 57192 | 76298 | 75980 | 46874 | 37630 | 439489 |
수성구 계 | 31851 | 56785 | 57599 | 45823 | 77586 | 74581 | 47295 | 41239 | 432759 |
달서구 계 | 45262 | 62415 | 82364 | 72346 | 96358 | 105563 | 63772 | 45333 | 573413 |
달성군 계 | 29944 | 23427 | 29824 | 43396 | 40770 | 39590 | 25015 | 18577 | 250543 |
In [41]:
df3 = df3.T
df3['총합'] = df3.sum(axis='columns').astype(int)
df3
Out[41]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 |
---|---|---|---|---|---|---|---|---|---|
중구 계 | 5572 | 5370 | 11620 | 11311 | 11108 | 11798 | 10069 | 11087 | 77935 |
동구 계 | 27937 | 28629 | 42833 | 47415 | 52960 | 58640 | 48272 | 42139 | 348825 |
서구 계 | 8765 | 12665 | 23711 | 19635 | 25199 | 36882 | 29378 | 23685 | 179920 |
남구 계 | 7221 | 10462 | 20327 | 17871 | 21400 | 26010 | 22886 | 22505 | 148682 |
북구 계 | 36116 | 46834 | 60691 | 56384 | 75095 | 76729 | 48297 | 38947 | 439093 |
수성구 계 | 31376 | 55090 | 56987 | 45226 | 76047 | 74962 | 48484 | 42309 | 430481 |
달서구 계 | 44236 | 60556 | 81862 | 71171 | 94565 | 105716 | 66056 | 47141 | 571303 |
달성군 계 | 30293 | 23621 | 29765 | 43412 | 41490 | 40356 | 26081 | 19221 | 254239 |
In [42]:
pop1 = df2['총합'] > df1['총합']
pop2 = df3['총합'] > df2['총합']
df3['인구증가'] = pop1 & pop2
df3
Out[42]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 | 인구증가 |
---|---|---|---|---|---|---|---|---|---|---|
중구 계 | 5572 | 5370 | 11620 | 11311 | 11108 | 11798 | 10069 | 11087 | 77935 | False |
동구 계 | 27937 | 28629 | 42833 | 47415 | 52960 | 58640 | 48272 | 42139 | 348825 | False |
서구 계 | 8765 | 12665 | 23711 | 19635 | 25199 | 36882 | 29378 | 23685 | 179920 | False |
남구 계 | 7221 | 10462 | 20327 | 17871 | 21400 | 26010 | 22886 | 22505 | 148682 | False |
북구 계 | 36116 | 46834 | 60691 | 56384 | 75095 | 76729 | 48297 | 38947 | 439093 | False |
수성구 계 | 31376 | 55090 | 56987 | 45226 | 76047 | 74962 | 48484 | 42309 | 430481 | False |
달서구 계 | 44236 | 60556 | 81862 | 71171 | 94565 | 105716 | 66056 | 47141 | 571303 | False |
달성군 계 | 30293 | 23621 | 29765 | 43412 | 41490 | 40356 | 26081 | 19221 | 254239 | True |
In [43]:
df3[df3.인구증가 == True]
Out[43]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 | 인구증가 |
---|---|---|---|---|---|---|---|---|---|---|
달성군 계 | 30293 | 23621 | 29765 | 43412 | 41490 | 40356 | 26081 | 19221 | 254239 | True |
4. 다음조건 찾기¶
- 남성인구 > 여성인구
- 인구수 > 20만
In [53]:
df = resident_01.copy()
In [54]:
#공통제거
drop_list = []
check_list = ['총계', '구분']
for chk in check_list:
for item in df.columns :
if chk in item:
drop_list.append(item)
drop_list = list(set(drop_list))
In [55]:
df = df.drop(drop_list, axis=1)
In [56]:
df['인구'] = (pd.DataFrame(range(0,101))/10).astype(int)*10
df['인구'] = np.where(df['인구'] >= 70, 70, df.인구)
df = df.groupby('인구')
df = df.sum()
df = df.T
df['총합'] = df.sum(axis='columns').astype(int)
df = df.T
df
Out[56]:
중구 계 | 중구 남 | 중구 여 | 동구 계 | 동구 남 | 동구 여 | 서구 계 | 서구 남 | 서구 여 | 남구 계 | ... | 북구 여 | 수성구 계 | 수성구 남 | 수성구 여 | 달서구 계 | 달서구 남 | 달서구 여 | 달성군 계 | 달성군 남 | 달성군 여 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
인구 | |||||||||||||||||||||
0 | 5674 | 2952 | 2722 | 29075 | 14987 | 14088 | 9719 | 4936 | 4783 | 7797 | ... | 18260 | 32508 | 16713 | 15795 | 46276 | 23865 | 22411 | 29751 | 15132 | 14619 |
10 | 5549 | 2801 | 2748 | 29903 | 15815 | 14088 | 14006 | 7406 | 6600 | 11162 | ... | 23284 | 57880 | 30792 | 27088 | 63987 | 33506 | 30481 | 23382 | 12302 | 11080 |
20 | 11300 | 5611 | 5689 | 43608 | 23707 | 19901 | 25542 | 14240 | 11302 | 20608 | ... | 27737 | 58097 | 31464 | 26633 | 82987 | 45010 | 37977 | 29853 | 16533 | 13320 |
30 | 11396 | 5877 | 5519 | 48971 | 25221 | 23750 | 21529 | 11920 | 9609 | 18912 | ... | 28127 | 46528 | 22290 | 24238 | 72962 | 37075 | 35887 | 43404 | 22386 | 21018 |
40 | 11358 | 5868 | 5490 | 54564 | 28261 | 26303 | 27671 | 14669 | 13002 | 22502 | ... | 39635 | 79395 | 36264 | 43131 | 98641 | 47547 | 51094 | 40726 | 21246 | 19480 |
50 | 12107 | 6000 | 6107 | 59064 | 28461 | 30603 | 38473 | 19174 | 19299 | 26615 | ... | 37602 | 74095 | 36270 | 37825 | 104487 | 50800 | 53687 | 38816 | 19554 | 19262 |
60 | 10243 | 4642 | 5601 | 46790 | 21842 | 24948 | 29106 | 13749 | 15357 | 22642 | ... | 23545 | 46530 | 21938 | 24592 | 61842 | 30114 | 31728 | 23984 | 11985 | 11999 |
70 | 10903 | 4343 | 6560 | 39917 | 16048 | 23869 | 22659 | 9023 | 13636 | 21652 | ... | 22217 | 40435 | 16218 | 24217 | 43938 | 17326 | 26612 | 17954 | 7004 | 10950 |
총합 | 78530 | 38094 | 40436 | 351892 | 174342 | 177550 | 188705 | 95117 | 93588 | 151890 | ... | 220407 | 435468 | 211949 | 223519 | 575120 | 285243 | 289877 | 247870 | 126142 | 121728 |
9 rows × 24 columns
In [58]:
#남자만 뽑기
drop_list = []
check_list = [' 계', ' 여']
for chk in check_list:
for item in df.columns :
if chk in item:
drop_list.append(item)
drop_list = list(set(drop_list))
In [59]:
ex4_df1_M = df.drop(drop_list, axis=1)
ex4_df1_M = ex4_df1_M.T
ex4_df1_M
Out[59]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 |
---|---|---|---|---|---|---|---|---|---|
중구 남 | 2952 | 2801 | 5611 | 5877 | 5868 | 6000 | 4642 | 4343 | 38094 |
동구 남 | 14987 | 15815 | 23707 | 25221 | 28261 | 28461 | 21842 | 16048 | 174342 |
서구 남 | 4936 | 7406 | 14240 | 11920 | 14669 | 19174 | 13749 | 9023 | 95117 |
남구 남 | 3986 | 5829 | 10837 | 9790 | 11423 | 12691 | 10382 | 8566 | 73504 |
북구 남 | 19141 | 25701 | 33284 | 29543 | 38326 | 37412 | 22004 | 14324 | 219735 |
수성구 남 | 16713 | 30792 | 31464 | 22290 | 36264 | 36270 | 21938 | 16218 | 211949 |
달서구 남 | 23865 | 33506 | 45010 | 37075 | 47547 | 50800 | 30114 | 17326 | 285243 |
달성군 남 | 15132 | 12302 | 16533 | 22386 | 21246 | 19554 | 11985 | 7004 | 126142 |
In [60]:
#여자만 뽑기
drop_list = []
check_list = [' 계', ' 남']
for chk in check_list:
for item in df.columns :
if chk in item:
drop_list.append(item)
drop_list = list(set(drop_list))
In [61]:
ex4_df1_F = df.drop(drop_list, axis=1)
ex4_df1_F = ex4_df1_F.T
ex4_df1_F
Out[61]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 |
---|---|---|---|---|---|---|---|---|---|
중구 여 | 2722 | 2748 | 5689 | 5519 | 5490 | 6107 | 5601 | 6560 | 40436 |
동구 여 | 14088 | 14088 | 19901 | 23750 | 26303 | 30603 | 24948 | 23869 | 177550 |
서구 여 | 4783 | 6600 | 11302 | 9609 | 13002 | 19299 | 15357 | 13636 | 93588 |
남구 여 | 3811 | 5333 | 9771 | 9122 | 11079 | 13924 | 12260 | 13086 | 78386 |
북구 여 | 18260 | 23284 | 27737 | 28127 | 39635 | 37602 | 23545 | 22217 | 220407 |
수성구 여 | 15795 | 27088 | 26633 | 24238 | 43131 | 37825 | 24592 | 24217 | 223519 |
달서구 여 | 22411 | 30481 | 37977 | 35887 | 51094 | 53687 | 31728 | 26612 | 289877 |
달성군 여 | 14619 | 11080 | 13320 | 21018 | 19480 | 19262 | 11999 | 10950 | 121728 |
In [62]:
#합계만 뽑기
drop_list = []
check_list = [' 남', ' 여']
for chk in check_list:
for item in df.columns :
if chk in item:
drop_list.append(item)
drop_list = list(set(drop_list))
In [63]:
ex4_df1_T = df.drop(drop_list, axis=1)
ex4_df1_T = ex4_df1_T.T
ex4_df1_T
Out[63]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 |
---|---|---|---|---|---|---|---|---|---|
중구 계 | 5674 | 5549 | 11300 | 11396 | 11358 | 12107 | 10243 | 10903 | 78530 |
동구 계 | 29075 | 29903 | 43608 | 48971 | 54564 | 59064 | 46790 | 39917 | 351892 |
서구 계 | 9719 | 14006 | 25542 | 21529 | 27671 | 38473 | 29106 | 22659 | 188705 |
남구 계 | 7797 | 11162 | 20608 | 18912 | 22502 | 26615 | 22642 | 21652 | 151890 |
북구 계 | 37401 | 48985 | 61021 | 57670 | 77961 | 75014 | 45549 | 36541 | 440142 |
수성구 계 | 32508 | 57880 | 58097 | 46528 | 79395 | 74095 | 46530 | 40435 | 435468 |
달서구 계 | 46276 | 63987 | 82987 | 72962 | 98641 | 104487 | 61842 | 43938 | 575120 |
달성군 계 | 29751 | 23382 | 29853 | 43404 | 40726 | 38816 | 23984 | 17954 | 247870 |
In [64]:
ex4_df1_T['남초여부'] = (ex4_df1_M['총합'].values > ex4_df1_F['총합'].values)
# result = (ex4_df1_M['총합'].values > ex4_df1_F['총합'].values) > 0
# index = ex4_df1_T.index
# obj = pd.Series(result, index=index)
# ex4_df1_T['남초여부'] = obj
ex4_df1_T
Out[64]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 | 남초여부 |
---|---|---|---|---|---|---|---|---|---|---|
중구 계 | 5674 | 5549 | 11300 | 11396 | 11358 | 12107 | 10243 | 10903 | 78530 | False |
동구 계 | 29075 | 29903 | 43608 | 48971 | 54564 | 59064 | 46790 | 39917 | 351892 | False |
서구 계 | 9719 | 14006 | 25542 | 21529 | 27671 | 38473 | 29106 | 22659 | 188705 | True |
남구 계 | 7797 | 11162 | 20608 | 18912 | 22502 | 26615 | 22642 | 21652 | 151890 | False |
북구 계 | 37401 | 48985 | 61021 | 57670 | 77961 | 75014 | 45549 | 36541 | 440142 | False |
수성구 계 | 32508 | 57880 | 58097 | 46528 | 79395 | 74095 | 46530 | 40435 | 435468 | False |
달서구 계 | 46276 | 63987 | 82987 | 72962 | 98641 | 104487 | 61842 | 43938 | 575120 | False |
달성군 계 | 29751 | 23382 | 29853 | 43404 | 40726 | 38816 | 23984 | 17954 | 247870 | True |
In [65]:
case1 = ex4_df1_T['남초여부'] == True
case2 = ex4_df1_T['총합']> 200000
case = case1 & case2
ex4_df1_T['결과'] = case
ex4_df1_T
Out[65]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 | 남초여부 | 결과 |
---|---|---|---|---|---|---|---|---|---|---|---|
중구 계 | 5674 | 5549 | 11300 | 11396 | 11358 | 12107 | 10243 | 10903 | 78530 | False | False |
동구 계 | 29075 | 29903 | 43608 | 48971 | 54564 | 59064 | 46790 | 39917 | 351892 | False | False |
서구 계 | 9719 | 14006 | 25542 | 21529 | 27671 | 38473 | 29106 | 22659 | 188705 | True | False |
남구 계 | 7797 | 11162 | 20608 | 18912 | 22502 | 26615 | 22642 | 21652 | 151890 | False | False |
북구 계 | 37401 | 48985 | 61021 | 57670 | 77961 | 75014 | 45549 | 36541 | 440142 | False | False |
수성구 계 | 32508 | 57880 | 58097 | 46528 | 79395 | 74095 | 46530 | 40435 | 435468 | False | False |
달서구 계 | 46276 | 63987 | 82987 | 72962 | 98641 | 104487 | 61842 | 43938 | 575120 | False | False |
달성군 계 | 29751 | 23382 | 29853 | 43404 | 40726 | 38816 | 23984 | 17954 | 247870 | True | True |
In [66]:
ex4_df1_T[ex4_df1_T['결과'] == True]
Out[66]:
인구 | 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 총합 | 남초여부 | 결과 |
---|---|---|---|---|---|---|---|---|---|---|---|
달성군 계 | 29751 | 23382 | 29853 | 43404 | 40726 | 38816 | 23984 | 17954 | 247870 | True | True |
In [67]:
ex4_df1_T = ex4_df1_T.T
ex4_df1_T
Out[67]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 계 | |
---|---|---|---|---|---|---|---|---|
인구 | ||||||||
0 | 5674 | 29075 | 9719 | 7797 | 37401 | 32508 | 46276 | 29751 |
10 | 5549 | 29903 | 14006 | 11162 | 48985 | 57880 | 63987 | 23382 |
20 | 11300 | 43608 | 25542 | 20608 | 61021 | 58097 | 82987 | 29853 |
30 | 11396 | 48971 | 21529 | 18912 | 57670 | 46528 | 72962 | 43404 |
40 | 11358 | 54564 | 27671 | 22502 | 77961 | 79395 | 98641 | 40726 |
50 | 12107 | 59064 | 38473 | 26615 | 75014 | 74095 | 104487 | 38816 |
60 | 10243 | 46790 | 29106 | 22642 | 45549 | 46530 | 61842 | 23984 |
70 | 10903 | 39917 | 22659 | 21652 | 36541 | 40435 | 43938 | 17954 |
총합 | 78530 | 351892 | 188705 | 151890 | 440142 | 435468 | 575120 | 247870 |
남초여부 | False | False | True | False | False | False | False | True |
결과 | False | False | False | False | False | False | False | True |
컬럼 이름 변경¶
- 새로운 리스트로 덮어씀
In [68]:
ex4_df1_T.columns = ['중구','동구','서구','남구','북구','수성구','달서구','달성군']
ex4_df1_T
Out[68]:
중구 | 동구 | 서구 | 남구 | 북구 | 수성구 | 달서구 | 달성군 | |
---|---|---|---|---|---|---|---|---|
인구 | ||||||||
0 | 5674 | 29075 | 9719 | 7797 | 37401 | 32508 | 46276 | 29751 |
10 | 5549 | 29903 | 14006 | 11162 | 48985 | 57880 | 63987 | 23382 |
20 | 11300 | 43608 | 25542 | 20608 | 61021 | 58097 | 82987 | 29853 |
30 | 11396 | 48971 | 21529 | 18912 | 57670 | 46528 | 72962 | 43404 |
40 | 11358 | 54564 | 27671 | 22502 | 77961 | 79395 | 98641 | 40726 |
50 | 12107 | 59064 | 38473 | 26615 | 75014 | 74095 | 104487 | 38816 |
60 | 10243 | 46790 | 29106 | 22642 | 45549 | 46530 | 61842 | 23984 |
70 | 10903 | 39917 | 22659 | 21652 | 36541 | 40435 | 43938 | 17954 |
총합 | 78530 | 351892 | 188705 | 151890 | 440142 | 435468 | 575120 | 247870 |
남초여부 | False | False | True | False | False | False | False | True |
결과 | False | False | False | False | False | False | False | True |
- replace를 사용하여 이름 명 변경(대체)
In [70]:
ex4_df1_T.columns = ex4_df1_T.columns.str.replace("구","구 계")
ex4_df1_T
Out[70]:
중구 계 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 | |
---|---|---|---|---|---|---|---|---|
인구 | ||||||||
0 | 5674 | 29075 | 9719 | 7797 | 37401 | 32508 | 46276 | 29751 |
10 | 5549 | 29903 | 14006 | 11162 | 48985 | 57880 | 63987 | 23382 |
20 | 11300 | 43608 | 25542 | 20608 | 61021 | 58097 | 82987 | 29853 |
30 | 11396 | 48971 | 21529 | 18912 | 57670 | 46528 | 72962 | 43404 |
40 | 11358 | 54564 | 27671 | 22502 | 77961 | 79395 | 98641 | 40726 |
50 | 12107 | 59064 | 38473 | 26615 | 75014 | 74095 | 104487 | 38816 |
60 | 10243 | 46790 | 29106 | 22642 | 45549 | 46530 | 61842 | 23984 |
70 | 10903 | 39917 | 22659 | 21652 | 36541 | 40435 | 43938 | 17954 |
총합 | 78530 | 351892 | 188705 | 151890 | 440142 | 435468 | 575120 | 247870 |
남초여부 | False | False | True | False | False | False | False | True |
결과 | False | False | False | False | False | False | False | True |
- 각각 이름 변경시 rename을 사용
In [71]:
ex4_df1_T = ex4_df1_T.rename({'중구 계':'대구중구'}, axis='columns')
ex4_df1_T
Out[71]:
대구중구 | 동구 계 | 서구 계 | 남구 계 | 북구 계 | 수성구 계 | 달서구 계 | 달성군 | |
---|---|---|---|---|---|---|---|---|
인구 | ||||||||
0 | 5674 | 29075 | 9719 | 7797 | 37401 | 32508 | 46276 | 29751 |
10 | 5549 | 29903 | 14006 | 11162 | 48985 | 57880 | 63987 | 23382 |
20 | 11300 | 43608 | 25542 | 20608 | 61021 | 58097 | 82987 | 29853 |
30 | 11396 | 48971 | 21529 | 18912 | 57670 | 46528 | 72962 | 43404 |
40 | 11358 | 54564 | 27671 | 22502 | 77961 | 79395 | 98641 | 40726 |
50 | 12107 | 59064 | 38473 | 26615 | 75014 | 74095 | 104487 | 38816 |
60 | 10243 | 46790 | 29106 | 22642 | 45549 | 46530 | 61842 | 23984 |
70 | 10903 | 39917 | 22659 | 21652 | 36541 | 40435 | 43938 | 17954 |
총합 | 78530 | 351892 | 188705 | 151890 | 440142 | 435468 | 575120 | 247870 |
남초여부 | False | False | True | False | False | False | False | True |
결과 | False | False | False | False | False | False | False | True |
Comments