본문 바로가기
Study/CODE 3기 [파이썬으로 배우는 데이터 사이언스]

[C5DE] 수도권/비수도권 간 의료 격차 알아보기

by 김세언 2024. 5. 31.

작성자 : 3기 [C5DE]

김세언, 박지호, 소정인


 

 


Chapter 0. 프로젝트 개요

Chapter 1. 데이터 분석에 필요한 도구 및 그래프 해석 _ 서울 종합 병원은 고르게 분포되어 있을까?

Chapter 2. 주제 선정 과정

Chapter 3.  구체적인 근거 제시 _ 데이터 수집 / 분석/ 결과 해석

Chapter 4. 시사점과 해결 방안 _ 나아가야 할 방향


 

 

 


Chapter 0. 프로젝트 개요


출처 : Freepik

 

이번 프로젝트에서 우리 조는 '수도권/비수도권 간 의료 격차'라는 주제에 집중해보았다.

 


Chapter 1.

데이터 분석에 필요한 도구 및 그래프 해석

_서울 종합 병원은 고르게 분포되어 있을까?


 

우리는 강의에서 언급한 여러가지 내용들 중, 데이터 분석에 가장 필요한 도구들을 중점적으로 정리했다.

 

Part 1 : 라이브러리 / 데이터 로드


■  의료기관 데이터 분석에서 우리는 pandas, seaborn, Folium 세가지의 파이썬 내장 라이브러리를 사용했다.

 

pandas : 데이터 조작 및 분석을 위한 파이썬 라이브러리.데이터프레임이라는 자료 구조를 사용
seaborn : 통계적 데이터 시각화를 위한 파이썬 라이브러리로, pandas 데이터프레임과 잘 통합됩
folium : 지리 정보를 시각화하기 위한 파이썬 라이브러리로, 지도 위에 데이터를 표시할 수 있음

 

 

■ 파일을 업로드하는 과정에서 파일을 찾을 수 없다고 말하는 오류가 자주 등장했는데, 안전하게 파일을 불러올 수 있도록 구글 드라이브에서 파일을 가져오는 방식을 사용했다.

 

구글 드라이브에 의료기관.csv 이름으로 파일을 저장해 코랩에서 읽어왔다.

 

Part 2 : 데이터 보기 / 결측치 다루기 / 요약하기


 

■ 날것의 데이터를 불러오면 데이터의 정보를 확인하기 위한 작업이 필요하다.

shape: 데이터 총 개수를 불러오는 함수 (행, 열 순으로 되어있다.)

head(): 상위 5개의 데이터를 불러오는 함수

tail(): 하위 5개의 데이터를 불러오는 함수

* head()와 tail()의 경우, 괄호 안에 입력하는 숫자만큼 데이터 가져올 수 있다.

info(): 데이터의 요약 정보를 불러오는 함수(데이터 크기, 데이터 타입, 컬럼명 등)

 

■  위와 같은 종합병원 분포 자료에는 결측치라는 것이 존재한다

■  결측치란 말 그대로 값이 없는 것으로 우리는 이러한 결측치들을 제거해볼 것이다 

1) 결측치 확인하기 

  • null_count 라는 변수에 isnull() 결측치를 확인
  • null은 아예 값이 존재하지 않는 상태를 의미함

2) 삭제할 column명 리스트화하기

3) 결측치 삭제하기 

drop 함수를 이용해 결측치를 삭제함 cf) 열을 기준으로 삭제해야 하기 때문에 axis = 1을 지정.  행을 삭제하려면 0을 넣어야 함

.

Part 3 : 색인하기 /  전처리하기 / 위경도 데이터 표현하기


   데이터 분석을 하면서 우리는 유일한 값, 즉 고유한 값을 찾고 싶은 순간들이 있다.

unique() : 데이터에 고유값들이 어떠한 것들이 있는지 알고 싶을때 사용하는 함수

value_counts() : 값별로 데이터의 수를 출력해주는 함수로, 카테고리 형태의 데이터 갯수를 세어볼 수 있다.

+ 인수에 nomaralize = True 를 넣어주면 비율을 알려준다.

 

■  분석한 데이터를 시각화할 수 있는 방식은 크게 두 가지가 있다.

1) pandas 활용하기

plot.bar(): 바 그래프를 그려주는 함수

plot.barh(): 바 그래프의 방향을 수직에서 수평으로 변경해주는 함수

* figsize를 인수로 활용하면 세부 크기를 조정할 수 있다.

plot.barh()를 활용해 시도별로 병원의 비율을 나타낸 것이다.  수도권이 비수도권에 비해 병원 분포의 비율이 높은 것을 확인할 수 있다.

 

2) seaborn 활용하기

sns.countplot(data, x): seaborn에서 바 그래프를 그려주는 함수

countplot 함수를 통해 시도별 병원의 수를 나타낸 것이다.  위의 plot.barh()를 통해 그린 그래프와 동일하게 수도권에 병원이 몰려있는 것을 확인할 수 있다.

 

Part 4 : 색인하기 /  전처리하기 / 지도 표현

 

■  전체 데이터에서 우리에게 필요한 데이터는 서울시 종합병원 데이터이다.

■  따라서 전체 데이터에서 상권업종소분류명이 종합병원이고, 시도명이 서울특별시인 데이터만 가져와보자.

서울특별시에 있는 종합병원 데이터만을 추출해 df_seoul_hospital라는 변수로 지정해줬다. 이때 &를 활용해 조건 2개를 사용할 수 있다.

 


  이렇게 지정한 데이터에는 종합병원이 아닌 다른 데이터도 포함되어 있는 문제점이 있다.

  따라서 우리는 '데이터 색인하기를 통해 종합병원이 아닌 데이터를 제거해주는 과정' 이 필요하다!

 

1) 상호명에 종합병원이 들어간 데이터의 상호명을 중복없이 가져온다

cf) loc는 location의 약자로 특정 행 또는 칼럼을 인덱싱 할때 사용한다

2) 종합병원이 아닌 데이터를 제거할 준비!

상호명에 여러개의 데이터(꽃배달, 의료기, 장례식장, 상담소, 어린이집)이 들어간 데이터의 인덱스 번호를 리스트 형태로 변형해준다  cf) -> and는 &, or은 ❘를 사용하여 조건을 정함

 

상호명이 '의원'으로 끝나는 데이터의 인덱스 번호를 리스트 형태로 변형해준다

 

제거하고자 하는 두개의 리스트를 하나로 합친다

3) 데이터 제거하기

drop을 통해 제거하고자 하는 데이터를 제거해주고, print 함수를 통해 데이터를 제거하기 전과 후의 데이터 양 차이를 확인한다

 

-> 전처리를 위해서 종합병원이 아닌 데이터를 제거한 결과이다 !

 

이 바 그래프를 통해서 우리는 서울 중에서도 특히 강남구에 종합병원이 밀집되어있다는 사실을 알 수 있다.

 

■  이번에는 scatterplot을 그려보는 방법을 알아보자.

seaborn을 활용하면 간단하게 scatterplot을 그릴 수 있다. x축과 y축으로 점의 위치를 지정해주고,  hue를 통해 무엇을 기준으로 데이터의 색깔을 구분할지를 지정해줄 수 있다,

 

위의 데이터를 돌린 결과이다.

이 scatterplot을 통해서 우리는 이전의 그래프들에서도 확인할 수 있었던 병원의 수도권 쏠림 현상을 다시한번 명확하게 확인할 수 있었고, 병원 분포의 지역불균형에 대한 의문이 들기 시작했다.

 

■  마지막으로 Folium을 활용해 지도에 병원들의 위치를 직관적으로 찍어보자.

folium.Map 함수를 통해 지도에 df_seoul_hospital의 위치를 찍어주고, for 함수를 통해 팝업에 들어갈 주소 텍스트를 지정해주었다.

 

Chapter 2. 주제 선정 과정



■  앞서 Chapter 1. 데이터 분석에 필요한 도구 및 그래프 해석에서 우리는 서울 내 종합병원 분포와 전국 병원의 분포를 살펴보았고, 이를 통해 전국의 의료기관들 중 대다수가 서울에 밀집되어 있음을 확인했다.

 

도심 지역과 외곽 지역 간의 의료 서비스 접근성의 큰 차이가 있다는 발견은 우리에게 지역 간 의료기관 격차 문제의 심각성을 인식하게 했다. 최근 발표된 여러 연구와 통계 자료는 의료기관 격차가 단지 서울 내의 문제가 아니라 전국적으로도 큰 이슈임을 보여주고 있다. 경제적, 지리적 여건에 따라 의료 서비스 이용에 큰 차이가 발생하며, 이는 건강 불평등으로 이어진다. 코로나19 상황에서 이러한 격차는 더욱 두드러졌고, 사회적 관심이 집중되었다. 이에 우리는 전국적인 관점에서 의료기관 격차를 분석하고, 이를 해소하기 위한 구체적인 방안을 제시하는 프로젝트의 필요성을 느끼게 되었다.

 

■  이번 프로젝트는 앞서 학습했던 파이썬의 판다스 라이브러리를 이용한 데이터 분석을 통해 서울, 제주도, 전라남도 지역의 의료 인프라 데이터를 분석할 것이다. 우리는 의료기관 격차 문제의 현황을 두 가지 방식으로 분석하고, 시사점을 제시하여 구체적인 해결 방안을 생각해보는 것을 목표로 한다. 

 


Chapter 3. 구체적인 근거 제시

_ 데이터 수집 및 분석


 

앞서 선정한 주제를 뒷받침 하기 위해 우리는 두 가지 방식의 근거를 제시한다.

 

Part 1 : 뉴스 및 기사 자료


 응급실까지 서울 6분, 전남 32분, 제주 45분

최근 통계에 따르면, 응급실까지 도달하는 평균 시간이 서울에서는 6분인 반면, 전남은 32분, 제주는 45분으로 나타났다. 이러한 응급실 접근 시간의 차이는 지역 간 의료 격차를 극명하게 보여주는 중요한 지표이다.

 

 수도권과 비수도권 기대수명 격차는 0.8년

 서울은 84.8년, 전남은 82.8년, 제주는 84년

서울과 같은 수도권 지역은 의료 인프라가 잘 갖추어져 있으며, 다양한 전문 진료를 받을 수 있는 종합병원들이 밀집해 있다. 반면, 전남과 같은 비수도권 지역은 상대적으로 의료 인프라가 부족하고, 전문 의료 서비스 접근성이 낮다. 제주는 상대적으로 높은 기대수명을 보이고 있으나, 이는 제주도 특유의 자연환경과 생활 방식의 영향이 크다고 할 수 있다. 그러나 의료 서비스 접근성 면에서는 수도권에 비해 여전히 불리한 위치에 있다. 제주도는 의료기관 종사자수와 전문의의 부족으로 인해 주민들이 필요한 의료 서비스를 적시에 제공받지 못하는 경우가 발생한다.

 

 논란의 중심, 의료기관 종사 의사 수

▶서울은 4.4명, 전남은 2.5명, 제주는 2.5명

  정부도, 의료계도 지역의료 격차의 심각성을 인정한다. 2018년 통계청이 내놓은 ‘한국의 사회동향’에서는 “의료 인력이 모든 지역에서 증가하고 있으나 대도시 중 특히 서울 집중이 심화되고 있다”며 “최근 대도시의 병원 수는 증가하고 중소도시와 농어촌은 감소한다”고 보고했다.

서울은 의료 인프라가 잘 갖추어져 있고, 다양한 전문 진료를 제공하는 종합병원들이 밀집해 있어 의료 서비스 접근성이 매우 높다. 이는 서울 주민들의 건강 관리와 치료의 질을 높이는 데 크게 기여하며, 결과적으로 서울의 기대수명(84.8년)이 전국 최고 수준인 이유 중 하나이다.

반면, 전남과 제주에서는 인구 1,000명당 의사 수가 2.5명에 불과한다. 이는 의료 서비스의 접근성과 질에서 큰 차이를 나타낸다. 의사 수가 적다는 것은 환자들이 의료 서비스를 이용하는 데 더 많은 시간이 걸리고, 전문적인 치료를 받기 어려울 수 있음을 의미한다. 특히, 만성질환 관리, 응급 의료 서비스, 전문 진료 분야에서의 차이가 두드러지게 나타날 수 있다. 이러한 의료 서비스 접근성의 차이는 전남(기대수명 82.8년)과 제주의 기대수명(84년)에 부정적인 영향을 미치고 있다.

 

 

Part 2 : 데이터 분석 및 결과 해석 


우리가 느낀 의문에 대한 구체적인 근거를 수집하면서, 우리는 우리 프로젝트의 가설을 보다 구체화할 수 있었다.

우리의 가설은 이러하다.

'수도권/비수도권 간의 종합병원 분포 불균형이 존재할 것이다.'

이를 확인하기 위해서 우리는 앞서 시각화한 데이터 이외에 또 다른 데이터가 필요했다.

우선, 현재의 종합병원 분포 간 지역 불균형을 좀 더 확실하게 확인해고자 기존의 데이터를 활용해 데이터 시각화를 해보았다. 이를 위해서는 다음과 같은 데이터 전처리 작업이 요구됐다.

 

1) 전체 데이터에서 상권업종소분류명이 종합병원인 것들만 따로 추출하기

전체 데이터 중 종합병원인 것들만 추출해 df_hospital이라는 변수에 지정해주었다.

 

2) df_hospital 데이터 중 상호명에 꽃배달, 의료기, 장례식장, 상담소, 어린이집이 포함되거나, 상호명이 의원으로 끝나는 데이터 제거해주기

우선 상호명에 꽃배달, 의료기, 장례식장, 상담소, 어린이집이 포함된 데이터를 drop_row3에 지정해주었다.
상호명이 의원으로 끝나는 데이터를 drop_row4에 지정해주었다.
drop_row3와 drop_row4의 데이터를 합쳐주고 drop함수를 통해 df_hospital에서 합쳐준 데이터를 제거해주었다.

 

아래는 전처리한 데이터를 토대로 다양한 데이터 시각화를 진행해본 것이다.

seaborn의 countplot을 통한 시각화이다.

 

seaborn의 scatterplot을 활용한 시각화이다.

 

두 시각화 작업 모두에서 우리는 전국의 종합병원이 수도권에 밀집되어 있다는 사실을 명확하게 확인해볼 수 있었다.

우리가 원래 확인하고자 했던 가설은 확인했지만, 우리는 이 결과가 인구 분포와 연관성이 있을 수도 있다는 생각을 하게 되었다. 그래서 이번에는 지역별 전체 인구 분포 및 노인 인구 분포를 확인해 병원 분포와 비교해보기로 했다.

지역별 전체 인구 수 및 노인 인구 수를 확인해보기 위해 우리가 활용한 데이터는 KOSIS의 '행정구역(시군구)별 성별 인구수'와 '행정구역(읍면동)별/5세별 주민등록인구' 데이터이다.

https://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1B040A3

위 데이터 중 우리는 병원이 밀집되어있는 서울특별시, 병원 분포가 2번째로 가장 낮았던 제주특별자치도, 노인 인구가 많은 전라남도 세 가지 지역만을 비교해보기로 했다.

따라서 데이터를 한 눈에 비교해볼 수 있도록 데이터 시각화 작업을 수행했다.

 

■  지역별 총인구 분포 확인하기

위 데이터에서 세 지역의 총인구 수를 데이터프레임 형식으로 만들어주었다.
위 데이터프레임을 바 그래프로 시각화해주었다.

 

■  지역별 총인구 분포 확인하기

 

위 데이터에서 세 지역의 지역별 노인 인구 수를 데이터프레임 형식으로 만들어주었다.
위 데이터프레임을 바 그래프로 시각화해주었다.


위 시각화된 자료를 봤을 때에는 서울특별시가 전라남도와 제주특별자치도에 비해 총인구와 노인 인구 수 모두 높은 것을 확인해볼 수 있다. 이렇게만 봤을 때는 총인구/노인 인구 대비 병원의 수가 적절히 분포되어있는 것인지는 확인해볼 수 없기 때문에 이번에는 숫자로 비교를 진행해보았다.

종합병원의 개수는 서울특별시 58개, 전라남도 19개, 제주특별자치도 7개이다.

총 인구 수는 각각 9,733,509명, 1,855,995명, 675,883명이며

노인 인구 수는 각각 1,762,839명, 475,687명, 122,868명이다.

따라서 각각 계산해보면,

총인구 수의 경우  서울특별시: 167,819명/병원, 전라남도: 97,684명/병원, 제주특별자치도: 96,555명/병원

그리고 노인 인구 수의 경우 서울특별시: 30,394명/병원, 전라남도: 25,036명/병원, 제주특별자치도: 17,552명/병원으로 계산된다.

이 결과로만 봤을 때는 오히려 서울특별시의 종합병원 한 개 당 담당 인구 수가 총인구 수와 노인 인구 수 모두 더 높기 때문에 우리는 총인구/노인 인구 분포와 종합병원 분포 간 유의미한 관계가 있다는 것을 확인해볼 수 있었다.

그러나 이 결과만을 가지고 현재 우리나라의 병원이 인구 분포에 맞게 이상적인 모습으로 분포되어있다고 결론내릴 수 있을까? 위에서 살펴본 현황 자료를 바탕으로 봤을 때 우리는 아니라고 생각한다.

 


Chapter 4. 시사점과 해결 방안

나아가야 할 방향은?


 

앞서 진행한 데이터 수집 및 분석을 통해 우리는 지역 간의 의료 격차가 뚜렷이 존재함을 확인했다. 이러한 격차는 국민 건강의 불평등을 야기하며, 특히 의료 접근성이 낮은 지역 주민들에게 큰 영향을 미치고 있다. 그렇다면, 우리는 이 문제를 해결하기 위해 무엇에 주목해야 할까? 또, 해결 방안에는 어떤 것들이 있을까?

 

Part 1 : 주요 시사점


1) 의료 접근성

서울 및 대도시는 의료 접근성이 우수한 반면, 농어촌 지역은 의료 접근성이 매우 낮다. 이는 지역 주민들의 건강 격차를 심화시키는 주요 원인이다. 응급의료 접근성도 마찬가지이다. 예를 들어, 서울에서는 응급의료시설까지 도달하는 데 평균 6분이 소요되지만, 제주도에서는 평균 45분이 소요된다. 이는 응급 상황에서 생명에 직결되는 중요한 문제이다.

출처 : Freepik



2) 의료 인력 및 시설의 불균형

인구 1000명당 서울의 의사 수는 4.4명으로 전국에서 가장 많지만, 경북은 2.1명으로 가장 적다. 이는 지역별 의료 서비스의 질적 차이를 나타낸다. 농어촌 지역은 산부인과, 소아청소년과와 같은 전문 의료기관도 부족하다.

출처 : Freepik

 

3) 경제적 부담 및 사회적 영향

농어촌 주민들은 필요한 의료 서비스를 받기 위해 다른 지역으로 이동해야 하는 경우가 많아 원정진료비가 증가하고 있는데, 이는 경제적 부담을 더욱 가중시킨다.

출처 : Freepik



Part 2 : 해결 방안 


1) 의료 인프라 확충

농어촌 지역에 의료기관을 추가 설립하여 의료 접근성을 개선해야 한다. 이는 정부 차원의 적극적인 정책 개입이 필요할 것이다. 또 의료 접근성이 낮은 지역을 대상으로 이동형 의료 서비스를 제공하여 의료 서비스의 사각지대를 줄일 수 있다. 곡성군의 ‘찾아가는 전남건강버스’와 같은 프로그램이 그 예시이다.

2) 의료 인력 확충 및 분산

의과대학의 정원을 늘리고, 이를 통해 의료인력을 양성하여 비수도권 지역에 우선 배정하여 지역 의료 인프라를 강화하는 것이다. 최근 의대 증원 문제로 사회적 문제들에 대한 우려가 커지고 있는데, 기존 의사들의 처우를 개선하여 점진적인 증원을 이루어내며 해결책을 모색해야 할 것으로 보인다.

3) 기술 활용

인공지능(AI) 의사를 도입하여  의료 격차를 줄일 수 있다. AI가 의사의 오류를 줄이고, 지방 병원의 의료 수준을 높이는 데 기여할 수 있다. 딥노이드의 AI 기술이 그 예시이다.

4) 정부의 재정 지원 및 정책 개입

정부는 지역 의료 발전 기금을 조성하여 지역 간 의료 격차를 해소해야 한다. 미국의 서비스 부족 지역에 대한 보조금 프로그램, 일본의 지역 책임 병원 네트워크, 프랑스의 지역 보건기구 운영 방안을 참고할 수 있다.

 

출처 : 일간투데이

 

 

Part 3 : 결론


 

지역 간 의료 격차, 그 중에서도 농어촌과 도시의 의료 격차는 국민 건강과 직결되는 중요한 문제이다. 이를 해결하기 위해서는 의료 인프라와 인력을 확충하고, 기술을 활용하며, 정부의 적극적인 재정 지원과 정책 개입이 필요하다.