개발은 처음이라 개발새발
matplotlib로 데이터프레임 그래프 그리기 1 본문
지난 시간에는 df.plot()을 이용해 여러 그래프를 그려봤는데요. 이번 시간에는 또다른 그래프 라이브러리인 maplotlib를 활용해 그래프를 그려보겠습니다. matplotlib는 "파이썬의 표준 시각화 도구"라고 부를 수 있을 정도로 평면 그래프와 관련해 다양한 포맷과 기능을 지원합니다. 또한 객체지향 프로그래밍을 지원해 그래프 요소를 세세하게 꾸밀 수 있는 장점 또한 가지고 있습니다. matplotlib 설명은 여기까지 하고 본격적으로 matplotlib를 이용해 그래프를 그려 보도록하겠습니다. matplotlib를 실행시키기 위해서는 import를 해야 겠죠? 이번에 활용할 데이터프레임은 시도별 전출입 인구수입니다. 코드를 진행해보겠습니다.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./시도별 전출입 인구수.xlsx', header=0)
print(df)
첫번째 사진은 시도별 전출입 인구수의 엑셀 파일이고 하단은 출력 결과입니다. 보시면 전출지별이 전국을 제외하고 모두 nan으로 처리가 돼 있는데요. 이는 엑셀 파일에서 병환된 셀을 데이터프레임으로 변환할 때 적절한 값을 찾지 못해 생긴 문제입니다. 이부분은 fillna() 매소드를 사용해 누락 데이터가 들어 있는 행의 바로 앞에 위치한 행의 데이터 값으로 채워줘야 합니다.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./시도별 전출입 인구수.xlsx', header=0)
#빈칸 채워주기
df = df.fillna(method='ffill')
print(df)
자, 이렇게 채워졌습니다. 저는 이번에 서울특별시에서 다른 지역으로 이동하는 인구수를 파악해 그래프로 표현해보려고 하는데요. 그렇다면 그래프를 그리기 전에 데이터프레임의 전처리를 진행해봐야 겠죠.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./시도별 전출입 인구수.xlsx', header=0)
#빈칸 채워주기
df = df.fillna(method='ffill')
#서울에서 다른 지역으로 이동하는 인구수
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1) #불필요한 전출지별 제게
df_seoul.rename({'전입지별':'전입지'}, axis=1, inplace=True) #컬럼명 변경
df_seoul.set_index('전입지', inplace=True) #인덱스 설정
print(df_seoul)
이렇게 전처리를 했습니다. 우선적으로 mask 변수에 전출지별이 서울특별시이고 저희는 다른지역으로 이동한 인구수가 필요하기 때문에 전입지별이 서울특별시로 돼 있는 것은 제거했습니다. 그리고 이제 전출지가 모두 서울특별시이기에 전출지별은 제거했고 전입지별이라는 컬럼명을 전입지로 변경했습니다. 마지막으로 전입지들을 인덱스로 설정했습니다. 결과는 아래와 같습니다.
여기서 다시 경기도만 뽑아서 선그래프를 그려보려고 하는데요. 이제 본격적으로 그래프를 그리는 코드까지 완성시키고 그래프 결과를 보도록해보겠습니다.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('./시도별 전출입 인구수.xlsx', header=0)
#빈칸 채워주기
df = df.fillna(method='ffill')
#서울에서 다른 지역으로 이동하는 인구수
mask = (df['전출지별'] == '서울특별시') & (df['전입지별'] != '서울특별시')
df_seoul = df[mask]
df_seoul = df_seoul.drop(['전출지별'], axis=1) #불필요한 전출지별 제게
df_seoul.rename({'전입지별':'전입지'}, axis=1, inplace=True) #컬럼명 변경
df_seoul.set_index('전입지', inplace=True) #인덱스 설정
print(df_seoul)
#서울에서 경기도로 이동안 인구수만 추출
sr_one = df_seoul.loc['경기도']
plt.plot(sr_one.index, sr_one.values) #x축, y축
plt.show()
네 이렇게 그래프가 완성됐습니다. 하지만 이래저래 좀 더 꾸며야 할것들이 보이는데요. 이부분은 다음편에서 진행해 보도록하겠습니다.
'파이썬 > 판다스' 카테고리의 다른 글
matplotlib 다양한 스타일 (1) | 2022.07.03 |
---|---|
matplotlib 한글 폰트 오류 해결 (0) | 2022.07.01 |
df.plot() 데이터프레임 그래프 그리기 - 3 (1) | 2022.06.27 |
df.plot() 데이터프레임 그래프 그리기 - 2 (0) | 2022.06.26 |
df.plot() 데이터프레임 그래프 그리기 - 1 (2) | 2022.06.26 |