조금씩 꾸준히 완성을 향해

[Matplotlib/Pandas] 선 그래프 그리기 (+데이터 불러오기 및 처리하기) 본문

Python/데이터 시각화

[Matplotlib/Pandas] 선 그래프 그리기 (+데이터 불러오기 및 처리하기)

all_sound 2022. 9. 29. 22:32

데이터 불러와서 처리하기

 

▶ 필요한 라이브러리 가져오기 

# import library
import matplotlib.pyplot as plt
import pandas as pd

 

▶ 엑셀파일 열어서 저장

df_move = pd.read_excel('/content/drive/MyDrive/ Encore Prac/시도별 전출입 인구수.xlsx')
df_move

 

▶ 결측치 처리 

df_move = df_move.fillna(method='ffill') #결측치(NaN)을 앞 데이터로 채움
df_move.head(4) #상위 4행만 확인

 

▶ 데이터 추출해서 정리 (서울에서 다른 지역으로 이동한 인구 데이터만 추출)

# 전출지는 서울이고, 전입지는 서울이 아닌 데이터 추출
df_seoul = df_move[(df_move.전출지별=='서울특별시')&(df_move.전입지별!='서울특별시')]
df_seoul.head(2)

▶ 불필요한 열 삭제 및 열 이름 변경

df_seoul = df_seoul.drop('전출지별', axis=1) #'전출지별' 열 삭제
df_seoul.rename(columns={"전입지별":"전입지"},inplace = True) #'전입지별'열 이름 '전입지'로 변경
df_seoul.head(2)

 

index 변경

# '전입지' 열을 df_seoul의 인덱스로 설정
df_seoul.set_index("전입지",inplace = True)
df_seoul.head(2)

 

필요한 데이터 값 선택해서 저장

# 서울에서 경기도로 이동한 인구만 시리즈 객체로 저장
sr_one = df_seoul.loc['경기도']

 

 

matplotlib 선 그래프 그리기

 

x축, y축 설정해서 그래프 그리기

#시리즈의 인덱스를 x축, 시리즈의 값들을 y축으로 하는 선 그래프 그리기
plt.plot(sr_one.index, sr_one.values)

 

▶  차트 제목, 축이름 추가

  • 제목 : title()
  • x축 : xlabel(), y축: ylabel()

   ☆주의!! 그래프를 그릴 때에는 플롯 만들기부터 show()까지 한 작업창에 있어야 함

plt.plot(sr_one.index, sr_one.values) #플롯 만들기
plt.title('서울 -> 경기 인구 이동',fontproperties=mg) #제목 지정
plt.xlabel('기간',fontproperties=mg) #x축 이름 지정
plt.ylabel('이동 인구수',fontproperties=mg) #y축 이름 지정
plt.show()

 ※ 참고! fontproperties=mg 속성은 한글 폰트 깨짐 문제가 있을 때 사용한다. 자세한 설정은 다음 포스팅에서 다루겠다. 

 

 

▶ 그래프 사이즈 조절, y축 범위 조절, x축 라벨 회전

 

  • 플롯의 사이즈 변경 : plt.figure(figsize=(14,5))  #(가로, 세로)
  • y축 범위 조절 : plt.ylim=(0, 6000)  #(start, end)
  • x축 라벨 회전 : plt.xticks(rotation=)  /  rotation='vertical' (세로회전), rotation=70 (70도 회전)
plt.figure(figsize=(14,5)) #(가로,세로) 사이즈 지정
plt.ylim(0, 700000) #y축의 범위 지정
plt.plot(sr_one.index, sr_one.values) #플롯 만들기
plt.title('서울 -> 경기 인구 이동',fontproperties=mg) #제목 지정
plt.xlabel('기간',fontproperties=mg) #x축 이름 지정
plt.ylabel('이동 인구수',fontproperties=mg) #y축 이름 지정
plt.xticks(rotation=70) #축 라벨 70도 회전
plt.show()

 

더 세부적인 꾸미기나 스타일 지정, 기능 들은 추후 포스팅에...