1. 서울시 자치구별 노인 복지수준 분석

서울시 공공데이터를 활용하여 서울시 자치구별 노인 복지 수준을 분석하고 비교해 본다.

[main code]

서울시 자치구별 노인 복지수준 분석

import pandas as pd
import numpy as np
WelfareFacility = pd.read_excel('../data/구별 노인복지시설.xls',  encoding='utf-8')
WelfareFacility.head()
기간자치구시설합계노인복지관노인복지관.1경로당노인교실
0기간자치구시설합계시설수종사자수경로당노인교실
12017합계38158015053363372
22017종로구7131055711
32017중구51127473
42017용산구1122678525
del WelfareFacility['기간']
WelfareFacility.drop([0],inplace=True)
WelfareFacility.set_index('자치구', inplace=True)
WelfareFacility.rename(columns={'노인복지관.1' : '종사자수'},
                       index={'합계':'서울시'}, inplace=True)
WelfareFacility.head()
시설합계노인복지관종사자수경로당노인교실
자치구
서울시38158015053363372
종로구7131055711
중구51127473
용산구1122678525
성동구17836415916
Senior_Population = pd.read_excel('../data/구별 노인인구수.xls',  encoding='utf-8')
Senior_Population.head()
기간구분합계합계.1합계.2국민기초생활보장수급권자국민기초생활보장수급권자.1국민기초생활보장수급권자.2저소득노인저소득노인.1저소득노인.2일반일반.1일반.2
0기간구분65~79세80세 이상65~79세80세 이상65~79세80세 이상65~79세80세 이상
12017합계303824227093767315977244654151181866411693697122538817074654642
22017종로구7394547619181256965291344199145579443121482
32017중구572543561369111285126128617611043273329998
42017용산구86645988267620521345707403227176620944161793
del Senior_Population['기간']
del Senior_Population['합계.1']
del Senior_Population['합계.2']
del Senior_Population['국민기초생활보장수급권자.1']
del Senior_Population['국민기초생활보장수급권자.2']
del Senior_Population['저소득노인.1']
del Senior_Population['저소득노인.2']
del Senior_Population['일반.1']
del Senior_Population['일반.2']
Senior_Population.drop([0],inplace=True)
Senior_Population.rename(columns={'일반' : '나머지','구분' : '자치구'}, inplace=True)
Senior_Population.set_index('자치구', inplace=True)
Senior_Population.rename(index={'합계':'서울시'}, inplace=True)
Senior_Population['기초수급노인'] = Senior_Population['국민기초생활보장수급권자']+Senior_Population['저소득노인']
del Senior_Population['국민기초생활보장수급권자']
del Senior_Population['저소득노인']
Senior_Population.head()
합계나머지기초수급노인
자치구
서울시30382422538878436
종로구739457941600
중구572543271398
용산구866462092455
성동구950873432165
TotalData = pd.merge(Senior_Population,WelfareFacility, on='자치구')
TotalData.rename(columns={'합계':'노인 총 인구 수','기초수급노인':'기초수급노인 수',
                          '나머지':'나머지 인구 수','시설합계':'총 복지시설 수',
                          '종사자수':'복지시설 종사자 수'},inplace=True)
TotalData = TotalData.iloc[:,[0,2,1,3,4,6,7,5]]
TotalData.head()
노인 총 인구 수기초수급노인 수나머지 인구 수총 복지시설 수노인복지관경로당노인교실복지시설 종사자 수
자치구
서울시3038247843622538838158033633721505
종로구7394160057947135711105
중구57251398432751147327
용산구8664245562091122852567
성동구95082165734317831591664
TotalData['1인당 복지수준'] = TotalData['총 복지시설 수']  / TotalData['노인 총 인구 수']
TotalData['기초수급노인 비율'] = TotalData['기초수급노인 수']  / TotalData['노인 총 인구 수']
TotalData['복지시설 수준'] = TotalData['복지시설 종사자 수']  / TotalData['총 복지시설 수']
TotalData.drop(['서울시'],inplace=True)
TotalData = TotalData.applymap(lambda x: float(x))
TotalData.head()
노인 총 인구 수기초수급노인 수나머지 인구 수총 복지시설 수노인복지관경로당노인교실복지시설 종사자 수1인당 복지수준기초수급노인 비율복지시설 수준
자치구
종로구7394.01600.05794.071.03.057.011.0105.00.0096020.2163921.478873
중구5725.01398.04327.051.01.047.03.027.00.0089080.2441920.529412
용산구8664.02455.06209.0112.02.085.025.067.00.0129270.2833560.598214
성동구9508.02165.07343.0178.03.0159.016.064.00.0187210.2277030.359551
광진구9711.02238.07473.0110.01.097.012.063.00.0113270.2304600.572727
import platform
import matplotlib.pyplot as plt
%matplotlib inline  
from matplotlib import font_manager, rc
plt.rcParams['axes.unicode_minus'] = False
path = "c:/Windows/Fonts/malgun.ttf"
font_name = font_manager.FontProperties(fname=path).get_name()
rc('font', family=font_name)
plt.figure()
TotalData['1인당 복지수준'].sort_values().plot(kind='barh', grid=True, figsize=(15,10))
plt.xlabel('1인당 복지수준')
plt.show()

plt.figure()
TotalData['기초수급노인 비율'].sort_values().plot(kind='barh', grid=True, figsize=(15,10))
plt.xlabel('기초수급노인 비율')
plt.show()

plt.figure()
TotalData['복지시설 수준'].sort_values().plot(kind='barh', grid=True, figsize=(15,10))
plt.xlabel('복지시설 수준')
plt.show()

png

png

png

plt.figure(figsize=(15,10))
plt.scatter(TotalData['노인 총 인구 수'], TotalData['총 복지시설 수'], s=100)
plt.xlabel('노인 인구 수')
plt.ylabel('복지시설 수')
plt.grid()
plt.show()

plt.figure(figsize=(15,10))
plt.scatter(TotalData['기초수급노인 수'], TotalData['총 복지시설 수'], s=100)
plt.xlabel('기초수급노인 수')
plt.ylabel('복지시설 수')
plt.grid()
plt.show()

plt.figure(figsize=(15,10))
plt.scatter(TotalData['총 복지시설 수'], TotalData['복지시설 종사자 수'], s=100)
plt.xlabel('총 복지시설 수')
plt.ylabel('복지시설 종사자 수')
plt.grid()
plt.show()

png

png

png

fp1 = np.polyfit(TotalData['노인 총 인구 수'], TotalData['총 복지시설 수'],1)
f1 = np.poly1d(fp1)
fx1 = np.linspace(5000, 20000, 100)

fp2 = np.polyfit(TotalData['기초수급노인 수'], TotalData['총 복지시설 수'],1)
f2 = np.poly1d(fp2)
fx2 = np.linspace(500, 8000, 100)

fp3 = np.polyfit(TotalData['총 복지시설 수'], TotalData['복지시설 종사자 수'],1)
f3 = np.poly1d(fp3)
fx3 = np.linspace(50, 275, 100)

TotalData['오차1'] = np.abs(TotalData['총 복지시설 수'] - f1(TotalData['노인 총 인구 수']))
TotalData['오차2'] = np.abs(TotalData['총 복지시설 수'] - f2(TotalData['기초수급노인 수']))
TotalData['오차3'] = np.abs(TotalData['복지시설 종사자 수'] - f3(TotalData['총 복지시설 수']))
TotalData.head()
노인 총 인구 수기초수급노인 수나머지 인구 수총 복지시설 수노인복지관경로당노인교실복지시설 종사자 수1인당 복지수준기초수급노인 비율복지시설 수준오차1오차2오차3
자치구
종로구7394.01600.05794.071.03.057.011.0105.00.0096020.2163921.47887333.44414460.81948639.447274
중구5725.01398.04327.051.01.047.03.027.00.0089080.2441920.52941236.55555378.08919139.864669
용산구8664.02455.06209.0112.02.085.025.067.00.0129270.2833560.5982145.29525831.3759304.136756
성동구9508.02165.07343.0178.03.0159.016.064.00.0187210.2277030.35955152.16431738.5438005.466167
광진구9711.02238.07473.0110.01.097.012.063.00.0113270.2304600.57272717.88983730.4428910.005562
print('노인인구와 복지시설수 상관계수\n',np.corrcoef(TotalData['노인 총 인구 수'], TotalData['총 복지시설 수']))
print('기초수급노인과 복지시설수 상관계수\n',np.corrcoef(TotalData['기초수급노인 수'], TotalData['총 복지시설 수']))
print('복지시설 종사자수와 복지시설수 상관계수\n',np.corrcoef(TotalData['총 복지시설 수'], TotalData['복지시설 종사자 수']))
노인인구와 복지시설수 상관계수
 [[1.         0.65917319]
 [0.65917319 1.        ]]
기초수급노인과 복지시설수 상관계수
 [[1.         0.40232664]
 [0.40232664 1.        ]]
복지시설 종사자수와 복지시설수 상관계수
 [[ 1.         -0.15385677]
 [-0.15385677  1.        ]]
plt.figure(figsize=(20,10))
plt.scatter(TotalData['노인 총 인구 수'], TotalData['총 복지시설 수'], 
            c=TotalData['오차1'], s=50)
plt.plot(fx1, f1(fx1), ls='dashed', lw=3, color='g')
for n in range(25):
    plt.text(TotalData['노인 총 인구 수'][n]*1.02, TotalData['총 복지시설 수'][n]*0.98, 
             TotalData.index[n], fontsize=15)  
plt.xlabel('노인 총 인구 수')
plt.ylabel('총 복지시설 수')
plt.colorbar()
plt.grid()
plt.show()

plt.figure(figsize=(20,10))
plt.scatter(TotalData['기초수급노인 수'], TotalData['총 복지시설 수'], 
            c=TotalData['오차2'], s=50)
plt.plot(fx2, f2(fx2), ls='dashed', lw=3, color='g')
for n in range(25):
    plt.text(TotalData['기초수급노인 수'][n]*1.02, TotalData['총 복지시설 수'][n]*0.98, 
             TotalData.index[n], fontsize=15)  
plt.xlabel('기초수급노인 수')
plt.ylabel('총 복지시설 수')
plt.colorbar()
plt.grid()
plt.show()

plt.figure(figsize=(20,10))
plt.scatter(TotalData['총 복지시설 수'], TotalData['복지시설 종사자 수'], 
            c=TotalData['오차3'], s=50)
plt.plot(fx3, f3(fx3), ls='dashed', lw=3, color='g')
for n in range(25):
    plt.text(TotalData['총 복지시설 수'][n]*1.02, TotalData['복지시설 종사자 수'][n]*0.98, 
             TotalData.index[n], fontsize=15)  
plt.xlabel('총 복지시설 수')
plt.ylabel('복지시설 종사자 수')
plt.colorbar()
plt.grid()
plt.show()

png

png

png


© 2020. All rights reserved.