[Python(3.7)] pyplot, pandas를 활용한 그래프 출력하기(CSV 파일 읽어오기)
파이썬 3.7에서 pyplot, pandas 라이브러리로 그래프 출력을 하는 방법을 소개하고자 한다.
파이썬은 진짜 어려운 프로그래밍 언어는 아니다.
쉽게 사용하려면 쉽게 사용할 수가 있다.
몇 가지 라이브러리만 잘 활용하면 비주얼베이직보다도 쉬울 수가 있다.
이 글을 참고하는 데 가장 도움이 될만한 글을 선정한다면, 스프레드시트 관련 글이 있다.
1. [문서(스프레드시트), (메모장)] CSV 파일 - 수정 작업하기,
http://yyman.tistory.com/1094, 2018-07-31
2. [문서(스프레드시트)] Transpose로 행과 열을 바꾸기 (절대함수 사용),
http://yyman.tistory.com/1095, 2018-07-31
사용 프로그램 |
파이썬 3.7 |
소프트웨어 구분 |
오픈소스, (Python Foundation License) 파이썬 재단 라이센스 |
* 대량 데이터를 뽑아내기 위해서 통계청의 "산업 근로형태별 취업자 10차" 데이터를 사용하였음.
* 통계청에서 기부/후원을 받은 바 없음.
-> 좋은 데이터가 있다면 찾아보는 것도 추천함.
* 데이터 해석은 큰 의미를 가지고 해석하지 않았음.
1. 단일출력 - 그래프
이번에 소개할 것은 단일 형태의 그래프를 출력하는 방법에 대해서 소개한다.
|
그림 1-1. Python으로 도출한 그래프, 도도(Dodo) |
#
# Plot Project
# Author: Dodo (
http://yyman.tistory.com)
# 2018-08-01
# Description:
#
#
import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
from matplotlib import font_manager, rc
from pandas import DataFrame
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/NanumGothic.ttf").get_name()
rc('font', family=font_name)
df = DataFrame.from_csv('job_raw/job_pay.csv', encoding='euc-kr')
plot = df.plot()
plot.set_xlabel("년도")
plot.set_ylabel("근로자")
plt.title("차트")
plt.show()
소스코드: plotDrawing.py
[첨부(Attachment)]
plotDrawing.7z
2. 다수출력 - 그래프
이번에 출력할 그래프는 다수출력할 수 있는 그래프이다.
[소스코드(Source Code)]
#
# Plot Project
# Author: Dodo
# 2018-08-01
# Description:
#
#
import matplotlib.pyplot as plt
import matplotlib as mpl
import pandas as pd
from matplotlib import font_manager, rc
from pandas import DataFrame
# 디렉토리, 확장자에 대한 정의
rootDir = 'raw'
rootExt = 'csv'
saveDir = 'picture'
saveExt = 'png'
#원시 파일명
rawFileName = ['job_pay', 'job_jungujik',
'job_bijungujik', 'job_shorttemp',
'job_parttimer', 'job_bijunhyung',
'job_total']
#원시 차트명
rawTitleName = ['임금근로자', '정규직', '비정규직',
'한시적', '시간제', '비전형', '총계']
#반복문
index = 0
for x in rawFileName:
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/NanumGothic.ttf").get_name()
rc('font', family=font_name)
strFileName = rootDir + "/" + rawFileName[index] + "." + rootExt
df = DataFrame.from_csv(strFileName, encoding='euc-kr')
plot = df.plot()
plot.set_xlabel("년도")
plot.set_ylabel("근로자")
strTitle = "2016-3월, 2017-07월"
strTitle += " "
strTitle += rawTitleName[index]
plt.title(strTitle)
#plt.show()
# plt.show() 출력
# plt.savefig() 저장
strSaveFile = saveDir + "/" + rawFileName[index] + "-" + str(index) + "." + saveExt
plt.savefig(strSaveFile)
index = index + 1
#print('%s %s' % (x, rawFileName[1]))
[첨부(Attachment)]
plotDrawing2.7z
(출력 결과)
표 2-1. 산업 근로 형태별 취업자
(단위: 1,000명)
|
그림 2-1. 임금근로자(2016년 3월, 2017년 7월) |
|
그림 2-2. 정규직(2016년 3월, 2017년 7월) |
|
그림 2-3. 비정규직(2016년 3월, 2017년 7월) |
|
그림 2-4. 한시적 종사자(2016년 3월, 2017년 7월) |
|
그림 2-5. 시간제(2016년 3월, 2017년 7월) |
|
그림 2-6. 한시적 종사자(2016년 3월, 2017년 7월) |
|
그림 2-7. 총계(2016년 3월, 2017년 7월) |
* 원시데이터[첨부(Attachment)]
example2.7z
그림 2-8. 실습에 사용한 데이터
3. 맺음글
파이썬을 통해서 다양한 차트를 뽑아낼 수 있었다.
단일 처리와 반복 처리를 통해 데이터를 뽑아내는 반복된 작업을 현저한 속도로 줄일 수 있어서 좋았다.
그림 2-1을 해석하면, 임금근로자 종사자가 가장 많은 업종은 사회간접자본 및 기타 서비스업에 종사하는 사람들이 가장 많았다.
인원은 대략적으로 그림으로만 보면 2017년 7월 기준으로 약 15,000,000명 정도 종사하는 것으로 보인다. 700,000명 정도가 증가하였다.
두 번째로 많이 종사하는 업종은 "사업, 개인, 공공서비스 및 기타" 업종의 종사가 약 8,000,000명 정도 되었다.
세 번째로 많이 종사하는 업종은 "제조업"으로 약 3,800,000명 정도이다.
제조업의 종사자는 줄어드는 것으로 보인다.
2016년 3월에는 약 4,100,000명 정도였다면 2017년 7월 기준으로는 약 3,800,000명 정도로 3,000,000명 정도가 감소했다.
제조업 직업의 감소인원 = 4,100,000 - 3,800,000 = 3,000,000명
그래프를 자세히 보지 않은 이상은 감소 추이를 살펴보기가 힘들다.
4. 참고자료(Reference)
1. 산업/근로형태별 취업자(10차), Last Modified 2018-07-31, Accessed by 2018-07-31, http://kosis.kr/statHtml/statHtml.do?orgId=101&tblId=DT_1DE7112&conn_path=I3, 통계청, 경제활동인구조사
2. How to Save a Plot to a File Using Matplotlib, Last Modified , Accessed by 2018-07-31, https://chartio.com/resources/tutorials/how-to-save-a-plot-to-a-file-using-matplotlib/, Chartio
3. Python License, Last Modified , Accessed by 2018-07-31, https://en.wikipedia.org/wiki/Python_License, Wikipedia
4. Various Licenses and Comments about Them, Last Modified , Accessed by 2018-07-31, https://www.gnu.org/licenses/license-list.html#Python, GNU
5. History and License, Last Modified , Accessed by 2018-07-31, https://docs.python.org/3/license.html, Python Software Foundation.