파이썬으로 데이터 주무르기 스터디&응용

1-4. 대구광역시 구별 인구 수와 교육 시설 살펴보기(3)(다른 데이터를 통한 응용 및 실습)

꿀복피그 2024. 1. 8. 23:13

 

안녕하세요~여러분!

오늘은 지난 시간에 배운 '1-3. 파이썬을 통해 데이터 시각화하기' 챕터를 응용하여

대구광역시 학령인구 분포와 교육 시설 분포를 시각화해볼 예정입니다.

 

그동안 대구광역시 구별 학업성취도 데이터는 구하지 못하고 있었는데 이번에 2017년도 학교별 학업성취도

데이터를 구해 구별로 평균을 내고 이를 기존에 분석한 표에 추가하여 업데이트했습니다.

새롭게 업데이트한 아래의 해당 표를 기반으로 오늘 데이터를 시각화할 예정입니다. 

세번째 칼럼에 구별 평균학업성취도 데이터까지 합쳐진 표

 

그럼 위의 표를 바탕으로 상관관계 분석 및 데이터를 시각화하러 가봅시댱

 

(모듈은 지난 시간에 작성해놓은 코드를 참고하여 불러왔다고 생각하고 이후의 과정부터 진행할게요.)

 

<바 그래프 시각화하기>

-행정구역별 학교수를 바 그래프로 시각화한다.

*코드
data_result['학교수'].sort_values().plot(kind='barh',grid=True, figsize=(7,7))
plt.show()

-행정구역별 학원수를 바 그래프로 시각화한다.

*코드
data_result['학원수'].sort_values().plot(kind='barh',grid=True,figsize=(7,7))
plt.show()

-행정구역별 학령인구수를 바 그래프로 시각화한다.

*코드
data_result['학령인구수'].sort_values().plot(kind='barh',grid=True,figsize=(7,7))
plt.show()

 

<산포도를 통해 두 가지 변수의 상관관계 시각화하기>

-scatter() 명령을 통해 x축은 '학령인구수', y축은 '학교수' 로 지정하여 산포도를 그린다.

*코드
plt.figure(figsize=(6,6))
data_result.sort_values(by='학령인구수', ascending = False)
plt.scatter(data_result['학령인구수'],data_result['학교수'],s=50)
plt.xlabel('학령인구수')
plt.ylabel('학교수')
plt.grid()
plt.show()

학령인구수와 학교수와 관계를 나타내는 산포도

 

-scatter() 명령을 통해 x축은 '학원수', y축은 '평균학업성취도' 로 지정하여 산포도를 그린다.

*코드

plt.figure(figsize=(4,4))
data_result.sort_values(by= '학원수', ascending = False)
plt.scatter(data_result['학원수'],data_result['평균학업성취도'],s=50)
plt.xlabel('학원수')
plt.ylabel('평균학업성취도')
plt.grid()
plt.show()

학원수와 평균학업성취도 간의 관계를 나타내는 산포도

 

<회귀분석과 추세선을 통해 상관관계 분석하기>

-corrcoef() 를 통해 '학원수'와 '평균학업성취도' 의 상관계수를 알아본다.

*코드 : np.corrcoef(data_result['학원수'],data_result['평균학업성취도'])

(학원수와 학업 성취도 간의 상관관계는 뚜렷하게 나타나지는 않는 것 같아요. 해당 데이터 분석만으로는 상관관계를 파악하기 어려운 듯 합니다.)

 

-plot() 을 통해 추세선을 그려준다.

*코드:
fp1 = np.polyfit(data_result['학원수'],data_result['평균학업성취도'],1)
fp1
f1 = np.poly1d(fp1)
fx = np.linspace(800,100, 100)

plt.figure(figsize=(4,4))
data_result.sort_values(by= '학원수', ascending = False)
plt.plot(fx, f1(fx), ls = 'dashed', lw = 3, color='g')
plt.scatter(data_result['학원수'],data_result['평균학업성취도'],s=50)

for i in range(8):
    plt.text(data_result['학원수'][i] , data_result['평균학업성취도'][i], data_result.index[i], fontsize=10)
    
plt.xlabel('학원수')
plt.ylabel('평균학업성취도')
plt.grid()
plt.show()

 

오늘의 데이터 시각화 응용은 여기까지입니다! 

지난 시간에 전부 설명한 내용이라 세부 내용 설명은 생략했습니다. 더 궁금하시다면 지난 시간 포스팅을 참고해주세요!

 

다음 시간에는 제가 이렇게 분석한 내용들을 바탕으로 작성한 보고서를 가져와서

포스팅하는 시간을 가져보도록 하겠습니다! 그럼 오늘도 읽어 주셔서 감사하고 다음시간에 봐요! 꿀