https://github.com/FinanceData/Life-is-short
(github 페이지: 데이터세트, 동영상)
https://fb.com/financedata/posts/2170185529937113
(페이스북 페이지: 주피터 노트북 및 동영상)
파이썬으로 도전하는 업무자동화와 RPA(로봇프로세스자동화)
* 엑셀 노가다를 파이썬으로 자동화 할 수 있는 방법들
* 데스크탑 자동화(단순 반복 업무 자동화)에 필요한 라이브러리들과 사용 예
* RPA (상용 솔루션)과 파이썬 (무료 오픈소스)의 장점과 단점
* 파이썬을 활용한 업무 자동화 구체적인 방법
4. 거의 매일 반복되는 단순 반복 작업
모 증권사의 김대리가 매일 아침에 하는 작업 (약 40분 소요)
● 브라우저 띄우기
● 한국거래소(KRX) 페이지 열기
● 엑셀 파일로 다운로드하기
● 파일 이름 변경 (혹은 원하는 위치에 복사)
● 엑셀 컬럼 합치기, 엑셀 파일 생성하기
● 서식 보고서 만들기
● 엑셀을 첨부하여 이메일로 보내기
!4
43. 자동화를 위한 파이썬 오픈소스들
영역 파이썬 라이브러리
데이터 크롤링 requests, BeautifulSoup
데이터 전처리 numpy, pandas
브라우저 자동화 Selenium
엑셀 자동화 OpenPyXL, pandas
이메일 자동화 smtplib, EmailMessage
작업 스케쥴링(주기적 실행): schtasks (윈도우), crontab (리눅스)
!43
영역 파이썬 라이브러리
보고서 생성 자동화 Jinja2
데스크탑 자동화 pyautogui
자동화 통합 관리 Robot Framework
이미지 캡처, 이미지 프로세싱 OpenCV
OCR (문자 인식, 숫자 인식) tesseract
44. 로봇 공정 자동화 (RPA) 란 무엇인가
사람이 컴퓨터로 수행하는 정형화되고 반복적인 업무를 소프트웨어로 자동화
https://inatrix.com
!44
45. RPA란 무엇인가 또, 무엇이 아닌가?
What is What is NOT
소프트웨어 휴머노이드 로봇
애플리케이션 간의 연계 새로운 IT 시스템 도입
사람이 하던 작업 수행 신규 업무에 적용
비교적 단순 반복 작업 인공지능, 알아서 척척
※ 기존의 시스템과 보안에는 변화를 주지 않음 source: deloitte.com (재정리)
!45
46. 사례 K증권: 비대면 계좌 개설 업무
http://www.valence.co.kr/images/rk-0068/AutomateOne.pdf
!46
47. ● Data Entry, Query
● Transaction
● Business Process
● Functional Testing
● Performance Testing
● Web, UI Testing
RPA Test Automation
!47
RPA vs 테스트 자동화 오픈소스
48. RPA vs 파이썬
RPA 파이썬
전사적 자동화 애플리케이션 자동화
상용 솔루션 무료 오픈소스
솔루션 + 개발 + 유지보수 구매 DIY
저작도구 + 전용 스크립트 파이썬 스크립트 코딩
!48
49. RPA의 고유 기능
대부분의 자동화 기능은 파이썬 오픈소스로 충분. 하지만, 다음 기능은 RPA에 특화
● 사용자가 하는 동작을 기록하여 재현 (스크립트 생성)
● 자동화 스크립트 관리를 위한 저장소
● 동적인 분기와 반복 워크플로우 저작 기능
!49
50. “작은 자동화”에 지속적인 관심을 가져야 하는 이유
!50
● 거의 모든 산업이 데이터 기반, 데이터 중심으로 이동
● 엑셀의 한계, 개인이 다루어야 하는 데이터 급격 증가
● 변화의 속도: 예측 보다 대응이 중요
● ‘단순 반복 작업을 열심히’ - 거의 도움이 안됨
시스템 구축을
기다릴 수 없다
잘하는 것과 열심히하는 것은 별개
51. 자동화의 방해 요소들
● 전사적 전략적 업무 시스템의 범위가 아님
● 전사 차원에서 투자대비 효과
● 지속적인 유지보수 비용
● 자동화는 IT부서 만의 고유 영역이 아님!
!51
"만들어 주신거 안 돌아가는데 와서 좀 봐주세요"
52. 현업이 코딩을?
● 나는 IT가 아닌데? → 스크립트 수준의 코딩이 필요
● 코딩을 해본적이 없는데? → 가장 강력한 코딩 도구 Copy & Paste
● 지금 업무도 많은데 코딩까지? → 단순 반복 업무 소요시간 단축
● 난이도 높은 기술적인 문제는? → 코드 스니펫 공유
!52
53. 파이썬 자동화 접근 범위와 도구
LEVEL 01 - 개인
● 엑셀 자동화: OpenPyXL, pandas
● 데이터 크롤링: requests, BeautifulSoup
● 데이터 베이스: sqlite3, hdf5
LEVEL 02 - 개인, 팀/부서 (단위업무)
● 브라우저 자동화: Selenium
● 보고서 생성 자동화: Jinja2
● 이메일 자동화: smtplib, EmailMessage
LEVEL 03 - 팀/부서, 전사 (대외 업무)
● 데스크탑 자동화: pyautogui
● 이미지 캡처, 매칭: OpenCV, 문자 숫자 인식(OCR): tesseract
● 머신러닝, 딥러닝: scikit-learn, Keras (Tensorflow)
● 자동화 통합 관리: Robot Framework (혹은 in-house)
!53
54. 파이썬을 활용한 자동화 도구 3가지
1) 현업의 코딩 학습
2) 코드 스니펫 공유
3) 개발 지원 (팀 단위, 전사 단위)
!54
55. 결론, "기계가 잘하는 일, 사람이 잘하는 일"
● 업무의 흐름과 예외를 가장 잘 아는 사람은 "현업"
● 코딩은 매우 효과적인 수단 (비용의 문제가 아니라)
● “자동화”는 기술과 비용의 문제가 아님! 협업과 공유의 문제
● 가장 빠르게 배워 자동화에 써먹을 수 있는 실용 언어: "파이썬"
!55