Study/Python

[Python/Pandas/Matplotlib] 판다스를 이용하여 인구 구조 분석하고 꺾은선 그래프로 시각화하기

ChoiSenn 2022. 2. 9. 14:11
 

 

 

 

 

판다스를 이용하여 인구 구조 분석하고 꺾은선 그래프 그리기

 

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('age.csv', encoding = 'cp949', index_col = 0)
df = df.div(df['총인구수'], axis = 0)  # 전체 데이터를 총인구수로 나눠서 비율로 변환
del df['총인구수'], df['연령구간인구수']  # 총 인구수, 연령구간인구수 열 삭제

name = input('원하는 지역의 이름을 입력해주세요')
a = df.index.str.contains(name)
df2 = df[a]

plt.rc('font', family = 'Malgun Gothic')
df2.T.plot()
plt.show()

 전체 코드

 

 

 

1. 라이브러리 및 모듈 import

 

import pandas as pd
import matplotlib.pyplot as plt

 - 데이터프레임을 작성하기 위하여 pandas 라이브러리를 불러와 pd로 사용할 수 있도록 한다.

 - 그래프로 시각화하기 위해 matplotlib 라이브러리의 pyplot 모듈을 import한다.

 

 

 

2. csv 파일을 읽어와 데이터프레임으로 저장하고 전처리 하기

 

df = pd.read_csv('age.csv', encoding = 'cp949', index_col = 0)
df = df.div(df['총인구수'], axis = 0)  # 전체 데이터를 총인구수로 나눠서 비율로 변환
del df['총인구수'], df['연령구간인구수']  # 총 인구수, 연령구간인구수 열 삭제

 - pandas의 read_csv를 이용하여 'age.csv' 파일을 읽어와 df 데이터프레임에 저장한다.

 - 전체 데이터를 총 인구수 열로 나눠서 비율로 변환한다.

 - 그래프 작성 시 필요없는 총 인구 수, 연령 구간 인구 수 열을 삭제한다.

 

 

 

3. 데이터 가공하여 데이터프레임 새로 만들기

 

name = input('원하는 지역의 이름을 입력해주세요')
a = df.index.str.contains(name)
df2 = df[a]

 - 찾고자하는 지역의 이름을 입력받아 name 변수에 저장한다.

 - 입력받은 지역 이름(name) 문자열이 포함된 열을 df 데이터프레임에서 찾아내서 a 변수에 저장한다.

 - a 변수를 데이터프레임 형태로 변환시켜 df2 데이터프레임에 저장한다.

 

 

4. 그래프 시각화하기

 

plt.rc('font', family = 'Malgun Gothic')
df2.T.plot()
plt.show()

 - plt.rc()를 이용하여 한글 폰트를 맑은 고딕으로 지정한다.

 - df2 데이터프레임의 행과 열을 이용하여 꺾은선 그래프를 작성한다.

 - plt.show()를 이용하여 그래프를 화면에 나타낸다.

 

 

 

 

 

출력된 꺾은선 그래프