728x90
300x250

[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.

반응형

+ Recent posts