import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
df1 = pd.read_excel('data/mp2011.xlsx') #population in Moutain region in 2011
df1 = df1.set_index('age')
df1
male_m | female_m | |
---|---|---|
age | ||
00-04 | 102314 | 99825 |
05 -- 09 | 117662 | 117591 |
10 -- 14 | 121934 | 121729 |
15-19 | 93061 | 100093 |
20-24 | 61507 | 78811 |
25-29 | 55099 | 66047 |
30-34 | 45378 | 54371 |
35-39 | 44887 | 51227 |
40-44 | 41656 | 46001 |
45-49 | 38556 | 39807 |
50-54 | 35511 | 34837 |
55-59 | 29530 | 27519 |
60-64 | 26327 | 29466 |
65-69 | 19141 | 19999 |
70-74 | 13859 | 14847 |
75-79 | 8655 | 8986 |
80-84 | 4854 | 5087 |
85-89 | 1942 | 1941 |
90-94 | 519 | 635 |
95+ | 200 | 381 |
group=np.arange(1,21)
bar_width=0.3
fig,ax = plt.subplots(figsize = [8,6])
ax.bar(group, df1['male_m'],bar_width, facecolor='pink', edgecolor='k',label='Male')
ax.bar(group+bar_width, df1['female_m'],bar_width, facecolor='orange', edgecolor='k',label='Female')
plt.xlabel('Age')
ax.set_xticks(group+bar_width/2)
ax.set_xticklabels(df1.index)
ax.set_ylabel('Population')
ax.tick_params(axis='x', rotation= 45)
plt.title('Population in Himalay region in 2011')
plt.savefig("image/himal.png", dpi = 600) # dpi dot per inch
plt.legend()
plt.show()
df2 = pd.read_excel('data/hp2011.xlsx')#population in Hill region in 2011
df2 = df2.set_index('age')
df2
male_h | female_h | |
---|---|---|
age | ||
00-04 | 540032 | 509291 |
05 -- 09 | 657185 | 634246 |
10 -- 14 | 742164 | 729226 |
15-19 | 632209 | 682581 |
20-24 | 464312 | 600570 |
25-29 | 389744 | 510156 |
30-34 | 324358 | 410277 |
35-39 | 300292 | 371696 |
40-44 | 277900 | 320467 |
45-49 | 240867 | 266272 |
50-54 | 222600 | 229230 |
55-59 | 177381 | 179586 |
60-64 | 154254 | 172310 |
65-69 | 118494 | 125661 |
70-74 | 87716 | 91604 |
75-79 | 58420 | 61765 |
80-84 | 32382 | 35651 |
85-89 | 14056 | 14920 |
90-94 | 4293 | 5706 |
95+ | 1408 | 2725 |
fig,ax = plt.subplots(figsize = [8,6])
ax.bar(group, df2['male_h'],bar_width, facecolor='c', edgecolor='k',label='Male')
ax.bar(group+bar_width, df2['female_h'],bar_width, facecolor='y', edgecolor='k',label='Female')
plt.xlabel('Age')
ax.set_xticks(group+bar_width/2)
ax.set_xticklabels(df1.index)
ax.set_ylabel('Population')
ax.tick_params(axis='x', rotation= 45)
plt.title('Population in Hill region in 2011')
plt.savefig("image/Hill.png", dpi = 600) # dpi dot per inch
plt.legend()
plt.show()
df3 = pd.read_excel('data/tp2011.xlsx') #population in Tarai region in 2011
df3 = df3.set_index('age')
df3
male_t | female_t | |
---|---|---|
age | ||
00-04 | 672611 | 643890 |
05 -- 09 | 860329 | 817846 |
10 -- 14 | 900532 | 859839 |
15-19 | 717921 | 706115 |
20-24 | 518162 | 634709 |
25-29 | 472400 | 585908 |
30-34 | 400841 | 500080 |
35-39 | 395021 | 441196 |
40-44 | 340734 | 359363 |
45-49 | 295678 | 291779 |
50-54 | 247753 | 235545 |
55-59 | 205981 | 198266 |
60-64 | 187870 | 186600 |
65-69 | 140147 | 131007 |
70-74 | 98035 | 89092 |
75-79 | 50283 | 47026 |
80-84 | 25551 | 25252 |
85-89 | 9812 | 9855 |
90-94 | 4128 | 5054 |
95+ | 2593 | 3901 |
fig,ax = plt.subplots(figsize = [8,6])
ax.bar(group, df3['male_t'],bar_width, facecolor='b', edgecolor='k',label='Male')
ax.bar(group+bar_width, df3['female_t'],bar_width, facecolor='g', edgecolor='k',label='Female')
plt.xlabel('Age')
ax.set_xticks(group+bar_width/2)
ax.set_xticklabels(df1.index)
ax.set_ylabel('Population')
ax.tick_params(axis='x', rotation= 45)
plt.title('Population in Tarai region in 2011')
plt.savefig("image/Tarai.png", dpi = 600) # dpi dot per inch
plt.legend()
plt.show()
frames = [df1, df2, df3]
result1 = pd.concat(frames,axis=0, sort=False)
result1
male_m | female_m | male_h | female_h | male_t | female_t | |
---|---|---|---|---|---|---|
age | ||||||
00-04 | 102314.0 | 99825.0 | NaN | NaN | NaN | NaN |
05 -- 09 | 117662.0 | 117591.0 | NaN | NaN | NaN | NaN |
10 -- 14 | 121934.0 | 121729.0 | NaN | NaN | NaN | NaN |
15-19 | 93061.0 | 100093.0 | NaN | NaN | NaN | NaN |
20-24 | 61507.0 | 78811.0 | NaN | NaN | NaN | NaN |
25-29 | 55099.0 | 66047.0 | NaN | NaN | NaN | NaN |
30-34 | 45378.0 | 54371.0 | NaN | NaN | NaN | NaN |
35-39 | 44887.0 | 51227.0 | NaN | NaN | NaN | NaN |
40-44 | 41656.0 | 46001.0 | NaN | NaN | NaN | NaN |
45-49 | 38556.0 | 39807.0 | NaN | NaN | NaN | NaN |
50-54 | 35511.0 | 34837.0 | NaN | NaN | NaN | NaN |
55-59 | 29530.0 | 27519.0 | NaN | NaN | NaN | NaN |
60-64 | 26327.0 | 29466.0 | NaN | NaN | NaN | NaN |
65-69 | 19141.0 | 19999.0 | NaN | NaN | NaN | NaN |
70-74 | 13859.0 | 14847.0 | NaN | NaN | NaN | NaN |
75-79 | 8655.0 | 8986.0 | NaN | NaN | NaN | NaN |
80-84 | 4854.0 | 5087.0 | NaN | NaN | NaN | NaN |
85-89 | 1942.0 | 1941.0 | NaN | NaN | NaN | NaN |
90-94 | 519.0 | 635.0 | NaN | NaN | NaN | NaN |
95+ | 200.0 | 381.0 | NaN | NaN | NaN | NaN |
00-04 | NaN | NaN | 540032.0 | 509291.0 | NaN | NaN |
05 -- 09 | NaN | NaN | 657185.0 | 634246.0 | NaN | NaN |
10 -- 14 | NaN | NaN | 742164.0 | 729226.0 | NaN | NaN |
15-19 | NaN | NaN | 632209.0 | 682581.0 | NaN | NaN |
20-24 | NaN | NaN | 464312.0 | 600570.0 | NaN | NaN |
25-29 | NaN | NaN | 389744.0 | 510156.0 | NaN | NaN |
30-34 | NaN | NaN | 324358.0 | 410277.0 | NaN | NaN |
35-39 | NaN | NaN | 300292.0 | 371696.0 | NaN | NaN |
40-44 | NaN | NaN | 277900.0 | 320467.0 | NaN | NaN |
45-49 | NaN | NaN | 240867.0 | 266272.0 | NaN | NaN |
50-54 | NaN | NaN | 222600.0 | 229230.0 | NaN | NaN |
55-59 | NaN | NaN | 177381.0 | 179586.0 | NaN | NaN |
60-64 | NaN | NaN | 154254.0 | 172310.0 | NaN | NaN |
65-69 | NaN | NaN | 118494.0 | 125661.0 | NaN | NaN |
70-74 | NaN | NaN | 87716.0 | 91604.0 | NaN | NaN |
75-79 | NaN | NaN | 58420.0 | 61765.0 | NaN | NaN |
80-84 | NaN | NaN | 32382.0 | 35651.0 | NaN | NaN |
85-89 | NaN | NaN | 14056.0 | 14920.0 | NaN | NaN |
90-94 | NaN | NaN | 4293.0 | 5706.0 | NaN | NaN |
95+ | NaN | NaN | 1408.0 | 2725.0 | NaN | NaN |
00-04 | NaN | NaN | NaN | NaN | 672611.0 | 643890.0 |
05 -- 09 | NaN | NaN | NaN | NaN | 860329.0 | 817846.0 |
10 -- 14 | NaN | NaN | NaN | NaN | 900532.0 | 859839.0 |
15-19 | NaN | NaN | NaN | NaN | 717921.0 | 706115.0 |
20-24 | NaN | NaN | NaN | NaN | 518162.0 | 634709.0 |
25-29 | NaN | NaN | NaN | NaN | 472400.0 | 585908.0 |
30-34 | NaN | NaN | NaN | NaN | 400841.0 | 500080.0 |
35-39 | NaN | NaN | NaN | NaN | 395021.0 | 441196.0 |
40-44 | NaN | NaN | NaN | NaN | 340734.0 | 359363.0 |
45-49 | NaN | NaN | NaN | NaN | 295678.0 | 291779.0 |
50-54 | NaN | NaN | NaN | NaN | 247753.0 | 235545.0 |
55-59 | NaN | NaN | NaN | NaN | 205981.0 | 198266.0 |
60-64 | NaN | NaN | NaN | NaN | 187870.0 | 186600.0 |
65-69 | NaN | NaN | NaN | NaN | 140147.0 | 131007.0 |
70-74 | NaN | NaN | NaN | NaN | 98035.0 | 89092.0 |
75-79 | NaN | NaN | NaN | NaN | 50283.0 | 47026.0 |
80-84 | NaN | NaN | NaN | NaN | 25551.0 | 25252.0 |
85-89 | NaN | NaN | NaN | NaN | 9812.0 | 9855.0 |
90-94 | NaN | NaN | NaN | NaN | 4128.0 | 5054.0 |
95+ | NaN | NaN | NaN | NaN | 2593.0 | 3901.0 |
result2 = pd.concat(frames, axis=1,sort=False)
result2
male_m | female_m | male_h | female_h | male_t | female_t | |
---|---|---|---|---|---|---|
age | ||||||
00-04 | 102314 | 99825 | 540032 | 509291 | 672611 | 643890 |
05 -- 09 | 117662 | 117591 | 657185 | 634246 | 860329 | 817846 |
10 -- 14 | 121934 | 121729 | 742164 | 729226 | 900532 | 859839 |
15-19 | 93061 | 100093 | 632209 | 682581 | 717921 | 706115 |
20-24 | 61507 | 78811 | 464312 | 600570 | 518162 | 634709 |
25-29 | 55099 | 66047 | 389744 | 510156 | 472400 | 585908 |
30-34 | 45378 | 54371 | 324358 | 410277 | 400841 | 500080 |
35-39 | 44887 | 51227 | 300292 | 371696 | 395021 | 441196 |
40-44 | 41656 | 46001 | 277900 | 320467 | 340734 | 359363 |
45-49 | 38556 | 39807 | 240867 | 266272 | 295678 | 291779 |
50-54 | 35511 | 34837 | 222600 | 229230 | 247753 | 235545 |
55-59 | 29530 | 27519 | 177381 | 179586 | 205981 | 198266 |
60-64 | 26327 | 29466 | 154254 | 172310 | 187870 | 186600 |
65-69 | 19141 | 19999 | 118494 | 125661 | 140147 | 131007 |
70-74 | 13859 | 14847 | 87716 | 91604 | 98035 | 89092 |
75-79 | 8655 | 8986 | 58420 | 61765 | 50283 | 47026 |
80-84 | 4854 | 5087 | 32382 | 35651 | 25551 | 25252 |
85-89 | 1942 | 1941 | 14056 | 14920 | 9812 | 9855 |
90-94 | 519 | 635 | 4293 | 5706 | 4128 | 5054 |
95+ | 200 | 381 | 1408 | 2725 | 2593 | 3901 |
result3 = pd.concat(frames, sort=False, join = "inner")
result3
age |
---|
00-04 |
05 -- 09 |
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-74 |
75-79 |
80-84 |
85-89 |
90-94 |
95+ |
00-04 |
05 -- 09 |
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-74 |
75-79 |
80-84 |
85-89 |
90-94 |
95+ |
00-04 |
05 -- 09 |
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-74 |
75-79 |
80-84 |
85-89 |
90-94 |
95+ |
result4 = pd.concat(frames, sort=True, join = "outer")
result4
female_h | female_m | female_t | male_h | male_m | male_t | |
---|---|---|---|---|---|---|
age | ||||||
00-04 | NaN | 99825.0 | NaN | NaN | 102314.0 | NaN |
05 -- 09 | NaN | 117591.0 | NaN | NaN | 117662.0 | NaN |
10 -- 14 | NaN | 121729.0 | NaN | NaN | 121934.0 | NaN |
15-19 | NaN | 100093.0 | NaN | NaN | 93061.0 | NaN |
20-24 | NaN | 78811.0 | NaN | NaN | 61507.0 | NaN |
25-29 | NaN | 66047.0 | NaN | NaN | 55099.0 | NaN |
30-34 | NaN | 54371.0 | NaN | NaN | 45378.0 | NaN |
35-39 | NaN | 51227.0 | NaN | NaN | 44887.0 | NaN |
40-44 | NaN | 46001.0 | NaN | NaN | 41656.0 | NaN |
45-49 | NaN | 39807.0 | NaN | NaN | 38556.0 | NaN |
50-54 | NaN | 34837.0 | NaN | NaN | 35511.0 | NaN |
55-59 | NaN | 27519.0 | NaN | NaN | 29530.0 | NaN |
60-64 | NaN | 29466.0 | NaN | NaN | 26327.0 | NaN |
65-69 | NaN | 19999.0 | NaN | NaN | 19141.0 | NaN |
70-74 | NaN | 14847.0 | NaN | NaN | 13859.0 | NaN |
75-79 | NaN | 8986.0 | NaN | NaN | 8655.0 | NaN |
80-84 | NaN | 5087.0 | NaN | NaN | 4854.0 | NaN |
85-89 | NaN | 1941.0 | NaN | NaN | 1942.0 | NaN |
90-94 | NaN | 635.0 | NaN | NaN | 519.0 | NaN |
95+ | NaN | 381.0 | NaN | NaN | 200.0 | NaN |
00-04 | 509291.0 | NaN | NaN | 540032.0 | NaN | NaN |
05 -- 09 | 634246.0 | NaN | NaN | 657185.0 | NaN | NaN |
10 -- 14 | 729226.0 | NaN | NaN | 742164.0 | NaN | NaN |
15-19 | 682581.0 | NaN | NaN | 632209.0 | NaN | NaN |
20-24 | 600570.0 | NaN | NaN | 464312.0 | NaN | NaN |
25-29 | 510156.0 | NaN | NaN | 389744.0 | NaN | NaN |
30-34 | 410277.0 | NaN | NaN | 324358.0 | NaN | NaN |
35-39 | 371696.0 | NaN | NaN | 300292.0 | NaN | NaN |
40-44 | 320467.0 | NaN | NaN | 277900.0 | NaN | NaN |
45-49 | 266272.0 | NaN | NaN | 240867.0 | NaN | NaN |
50-54 | 229230.0 | NaN | NaN | 222600.0 | NaN | NaN |
55-59 | 179586.0 | NaN | NaN | 177381.0 | NaN | NaN |
60-64 | 172310.0 | NaN | NaN | 154254.0 | NaN | NaN |
65-69 | 125661.0 | NaN | NaN | 118494.0 | NaN | NaN |
70-74 | 91604.0 | NaN | NaN | 87716.0 | NaN | NaN |
75-79 | 61765.0 | NaN | NaN | 58420.0 | NaN | NaN |
80-84 | 35651.0 | NaN | NaN | 32382.0 | NaN | NaN |
85-89 | 14920.0 | NaN | NaN | 14056.0 | NaN | NaN |
90-94 | 5706.0 | NaN | NaN | 4293.0 | NaN | NaN |
95+ | 2725.0 | NaN | NaN | 1408.0 | NaN | NaN |
00-04 | NaN | NaN | 643890.0 | NaN | NaN | 672611.0 |
05 -- 09 | NaN | NaN | 817846.0 | NaN | NaN | 860329.0 |
10 -- 14 | NaN | NaN | 859839.0 | NaN | NaN | 900532.0 |
15-19 | NaN | NaN | 706115.0 | NaN | NaN | 717921.0 |
20-24 | NaN | NaN | 634709.0 | NaN | NaN | 518162.0 |
25-29 | NaN | NaN | 585908.0 | NaN | NaN | 472400.0 |
30-34 | NaN | NaN | 500080.0 | NaN | NaN | 400841.0 |
35-39 | NaN | NaN | 441196.0 | NaN | NaN | 395021.0 |
40-44 | NaN | NaN | 359363.0 | NaN | NaN | 340734.0 |
45-49 | NaN | NaN | 291779.0 | NaN | NaN | 295678.0 |
50-54 | NaN | NaN | 235545.0 | NaN | NaN | 247753.0 |
55-59 | NaN | NaN | 198266.0 | NaN | NaN | 205981.0 |
60-64 | NaN | NaN | 186600.0 | NaN | NaN | 187870.0 |
65-69 | NaN | NaN | 131007.0 | NaN | NaN | 140147.0 |
70-74 | NaN | NaN | 89092.0 | NaN | NaN | 98035.0 |
75-79 | NaN | NaN | 47026.0 | NaN | NaN | 50283.0 |
80-84 | NaN | NaN | 25252.0 | NaN | NaN | 25551.0 |
85-89 | NaN | NaN | 9855.0 | NaN | NaN | 9812.0 |
90-94 | NaN | NaN | 5054.0 | NaN | NaN | 4128.0 |
95+ | NaN | NaN | 3901.0 | NaN | NaN | 2593.0 |
area=147181 # area of Nepal sq.km
result2['male']=result2['male_m']+result2['male_h']+result2['male_t'] # sum of male
result2['female']=result2['female_m']+result2['female_h']+result2['female_t'] # sum of female
result2['ratio']=result2['male']/result2['female'] # male to female ratio
result2['total']=result2['male']+result2['female']
result2['density(per sq.km)'] = result2['total'].apply(lambda x: x/area) # population density
result2
male_m | female_m | male_h | female_h | male_t | female_t | male | female | ratio | total | density(per sq.km) | |
---|---|---|---|---|---|---|---|---|---|---|---|
age | |||||||||||
00-04 | 102314 | 99825 | 540032 | 509291 | 672611 | 643890 | 1314957 | 1253006 | 1.049442 | 2567963 | 17.447653 |
05 -- 09 | 117662 | 117591 | 657185 | 634246 | 860329 | 817846 | 1635176 | 1569683 | 1.041724 | 3204859 | 21.774951 |
10 -- 14 | 121934 | 121729 | 742164 | 729226 | 900532 | 859839 | 1764630 | 1710794 | 1.031468 | 3475424 | 23.613265 |
15-19 | 93061 | 100093 | 632209 | 682581 | 717921 | 706115 | 1443191 | 1488789 | 0.969372 | 2931980 | 19.920914 |
20-24 | 61507 | 78811 | 464312 | 600570 | 518162 | 634709 | 1043981 | 1314090 | 0.794452 | 2358071 | 16.021572 |
25-29 | 55099 | 66047 | 389744 | 510156 | 472400 | 585908 | 917243 | 1162111 | 0.789290 | 2079354 | 14.127870 |
30-34 | 45378 | 54371 | 324358 | 410277 | 400841 | 500080 | 770577 | 964728 | 0.798751 | 1735305 | 11.790279 |
35-39 | 44887 | 51227 | 300292 | 371696 | 395021 | 441196 | 740200 | 864119 | 0.856595 | 1604319 | 10.900313 |
40-44 | 41656 | 46001 | 277900 | 320467 | 340734 | 359363 | 660290 | 725831 | 0.909702 | 1386121 | 9.417798 |
45-49 | 38556 | 39807 | 240867 | 266272 | 295678 | 291779 | 575101 | 597858 | 0.961936 | 1172959 | 7.969500 |
50-54 | 35511 | 34837 | 222600 | 229230 | 247753 | 235545 | 505864 | 499612 | 1.012514 | 1005476 | 6.831561 |
55-59 | 29530 | 27519 | 177381 | 179586 | 205981 | 198266 | 412892 | 405371 | 1.018553 | 818263 | 5.559570 |
60-64 | 26327 | 29466 | 154254 | 172310 | 187870 | 186600 | 368451 | 388376 | 0.948697 | 756827 | 5.142152 |
65-69 | 19141 | 19999 | 118494 | 125661 | 140147 | 131007 | 277782 | 276667 | 1.004030 | 554449 | 3.767123 |
70-74 | 13859 | 14847 | 87716 | 91604 | 98035 | 89092 | 199610 | 195543 | 1.020798 | 395153 | 2.684810 |
75-79 | 8655 | 8986 | 58420 | 61765 | 50283 | 47026 | 117358 | 117777 | 0.996442 | 235135 | 1.597591 |
80-84 | 4854 | 5087 | 32382 | 35651 | 25551 | 25252 | 62787 | 65990 | 0.951462 | 128777 | 0.874957 |
85-89 | 1942 | 1941 | 14056 | 14920 | 9812 | 9855 | 25810 | 26716 | 0.966088 | 52526 | 0.356880 |
90-94 | 519 | 635 | 4293 | 5706 | 4128 | 5054 | 8940 | 11395 | 0.784555 | 20335 | 0.138163 |
95+ | 200 | 381 | 1408 | 2725 | 2593 | 3901 | 4201 | 7007 | 0.599543 | 11208 | 0.076151 |
x=result2.total.sum()
x
26494504
fig,ax = plt.subplots(figsize = [8,6])
ax.bar(group, result2['male'],bar_width, facecolor='g', edgecolor='k',label='Male')
ax.bar(group+bar_width, result2['female'],bar_width, facecolor='r', edgecolor='k',label='Female')
plt.xlabel('Age')
ax.set_xticks(group+bar_width/2)
ax.set_xticklabels(result2.index)
ax.set_ylabel('Population')
ax.tick_params(axis='x', rotation= 45)
plt.title('Population in Nepal in 2011')
plt.savefig("image/Nepal.png", dpi = 600) # dpi dot per inch
plt.legend()
plt.show()
fig,ax = plt.subplots(figsize = [8,6])
ax.bar(group, result2['ratio'],bar_width, facecolor='m', edgecolor='k')
plt.xlabel('Age')
ax.set_xticks(group+bar_width/4)
ax.set_xticklabels(df1.index)
ax.set_ylabel('ratio(male/female)')
ax.tick_params(axis='x', rotation= 45)
plt.title('Population ratio in Nepal in 2011')
plt.savefig("image/ratio.png", dpi = 600) # dpi dot per inch
plt.show()
fig,ax = plt.subplots(figsize = [8,6])
ax.bar(group, result2['density(per sq.km)'],bar_width, facecolor='g', edgecolor='k')
plt.xlabel('Age')
ax.set_xticks(group+bar_width/4)
ax.set_xticklabels(df1.index)
ax.set_ylabel('Population density(per sq.km)')
ax.tick_params(axis='x', rotation= 45)
plt.title('Population density in Nepal in 2011')
plt.savefig("image/Nepald.png", dpi = 600) # dpi dot per inch
plt.show()