SlideShare a Scribd company logo
1 of 56
Download to read offline
인생은 짧아요, 엑셀 대신 파이썬
파이썬으로 도전 하는 업무 자동화와 RPA(로봇 프로세스 자동화)
이승준, Sean-June Lee
1
코딩이랑 무관합니다만,
!2
코딩이랑 유관합니다만,
!3
import 포함해도
딱 3줄
게다가,

엑셀이 없어도홀수 행은?
거의 매일 반복되는 단순 반복 작업
모 증권사의 김대리가 매일 아침에 하는 작업 (약 40분 소요)
● 브라우저 띄우기
● 한국거래소(KRX) 페이지 열기
● 엑셀 파일로 다운로드하기
● 파일 이름 변경 (혹은 원하는 위치에 복사)
● 엑셀 컬럼 합치기, 엑셀 파일 생성하기
● 서식 보고서 만들기
● 엑셀을 첨부하여 이메일로 보내기
!4
⼈⽣苦短, 使⽤ 파이썬+엑셀
pywin32
XlsxWriter
xlrd, xlwt
엑셀 설치 필요 없음 설치된 엑셀이 필요
(윈도우)
(윈도우, MacOS)
(윈도우, MacOS, Linux)
(쓰기)
xlsx 지원
!5
xls 지원
파이썬+엑셀 추천
!6
XlsxWriter
엑셀 파일 읽고 쓰기
(엑셀 설치 없이)
엑셀 매크로 자동화
(설치된 엑셀)
엑셀 파일을 생성 

(서버 사이드)
데이터 준비 - 워크북, 시트 읽기
'2017년 광고비 - 삼성전자.xlsx'
!7data source: https://adic.or.kr - 광고정보센터
셀에 접근
!8
범위에 접근
!9
데이터 병합
'2017년 광고비 - 삼성전자.xlsx' '2017년 광고비 - LG전자.xlsx'
!10
두 엑셀 파일을 하나로 합치기
!11
df_merge
계산 및 계산 결과 저장
!12
수식 넣기
!13
스타일 지정
!14
범위에 스타일 지정
!15
차트 추가 하기
!16
엑셀을 쓰는 가장 큰 이유 3가지
1. 필터링과 소트
2. VLOOKUP
3. 피벗 테이블
!17
데이터 준비
:
:
!18
필터링
!19
정렬
배당수익률을 내림차순으로 정렬
!20
VLOOKUP
!21
엑셀 파일로 저장
컬럼 너비,테두리,포맷 지정하여 엑셀로 저장
!22
피벗 테이블
!23
엑셀에서는 약간 까다로운 작업
특정 주기로 데이터 추출 pd.date_range()
● 매주 월요일
● 매월 1일
● 매분기 첫 영업일
● 매월 마지막 영업일
!24
파이썬 pandas = 코드로 다루는 엑셀
사실상 대부분의 

엑셀 작업 대체 가능
!25
엑셀 파일 

읽기, 쓰기
수식
=sum(A0:A10)
차트 삽입
셀 서식
속도는 덤
엑셀에서 

다소 까다로운 

시계열 연산
파이썬 pandas = 데스크탑 데이터 허브
!26
pd.read_excel()
pd.read_csv()
df.to_html()
smtplib
EmailMessage
df.to_sql()
pd.read_sql()
requests

BeautifulSoup
df.to_excel()
df.to_csv()
KRX 상장회사 목록 엑셀 가져오기
!27
브라우저 자동화 - 1) 브라우저 실행
!28
브라우저 자동화 - 2) 페이지 방문하기
!29
브라우저 자동화 - 3) 다운로드 버튼 클릭
!30
브라우저 자동화 - 4) 파일명 바꾸기
!31
국세청 홈텍스 로그인(인증서 기반)
!32
OpenCV - matchTemplate()
!33
액티브X 컨트롤 제어 자동화
● ActiveX 컴포넌트
● 인증서 로그인
● OpenCV, pyautogui
!34
네이버 로그인, 쪽지 쓰기
!35
보고서 생성 - Jinja2
Jinja2 템플릿 엔진을 사용한 보고서 생성
!36
이미지와 표 포함된 보고서
!37
이메일 자동화 - smtplib, MIMEMultipart
!38
메신저 알림 자동화 -
!39
Robot Framework
http://robotframework.org/
● 파이썬 기반
● keyword-driven 테스트 자동화 프레임워크
● 인수 테스팅
● 인수 테스트 기반 개발 (ATDD)
!40
Robot Framework for RPA
● SeleniumLibrary (브라우저 자동화)
● ExcelLibrary (엑셀 자동화)
● AutoITLibrary (데스크탑 자동화)
● OperatingSystem (운영체제)
● SSHLibrary (원격 접근, 원격 제어)
!41
Robot Framework 스크립트
!42
자동화를 위한 파이썬 오픈소스들
영역 파이썬 라이브러리
데이터 크롤링 requests, BeautifulSoup
데이터 전처리 numpy, pandas
브라우저 자동화 Selenium
엑셀 자동화 OpenPyXL, pandas
이메일 자동화 smtplib, EmailMessage
작업 스케쥴링(주기적 실행): schtasks (윈도우), crontab (리눅스)
!43
영역 파이썬 라이브러리
보고서 생성 자동화 Jinja2
데스크탑 자동화 pyautogui
자동화 통합 관리 Robot Framework
이미지 캡처, 이미지 프로세싱 OpenCV
OCR (문자 인식, 숫자 인식) tesseract
로봇 공정 자동화 (RPA) 란 무엇인가
사람이 컴퓨터로 수행하는 정형화되고 반복적인 업무를 소프트웨어로 자동화
https://inatrix.com
!44
RPA란 무엇인가 또, 무엇이 아닌가?
What is What is NOT
소프트웨어 휴머노이드 로봇
애플리케이션 간의 연계 새로운 IT 시스템 도입
사람이 하던 작업 수행 신규 업무에 적용
비교적 단순 반복 작업 인공지능, 알아서 척척
※ 기존의 시스템과 보안에는 변화를 주지 않음 source: deloitte.com (재정리)
!45
사례 K증권: 비대면 계좌 개설 업무
http://www.valence.co.kr/images/rk-0068/AutomateOne.pdf
!46
● Data Entry, Query
● Transaction
● Business Process
● Functional Testing
● Performance Testing
● Web, UI Testing
RPA Test Automation
!47
RPA vs 테스트 자동화 오픈소스
RPA vs 파이썬
RPA 파이썬
전사적 자동화 애플리케이션 자동화
상용 솔루션 무료 오픈소스
솔루션 + 개발 + 유지보수 구매 DIY
저작도구 + 전용 스크립트 파이썬 스크립트 코딩
!48
RPA의 고유 기능
대부분의 자동화 기능은 파이썬 오픈소스로 충분. 하지만, 다음 기능은 RPA에 특화
● 사용자가 하는 동작을 기록하여 재현 (스크립트 생성)
● 자동화 스크립트 관리를 위한 저장소
● 동적인 분기와 반복 워크플로우 저작 기능
!49
“작은 자동화”에 지속적인 관심을 가져야 하는 이유
!50
● 거의 모든 산업이 데이터 기반, 데이터 중심으로 이동
● 엑셀의 한계, 개인이 다루어야 하는 데이터 급격 증가
● 변화의 속도: 예측 보다 대응이 중요
● ‘단순 반복 작업을 열심히’ - 거의 도움이 안됨
시스템 구축을
기다릴 수 없다
잘하는 것과 열심히하는 것은 별개
자동화의 방해 요소들
● 전사적 전략적 업무 시스템의 범위가 아님
● 전사 차원에서 투자대비 효과
● 지속적인 유지보수 비용
● 자동화는 IT부서 만의 고유 영역이 아님!
!51
"만들어 주신거 안 돌아가는데 와서 좀 봐주세요"
현업이 코딩을?
● 나는 IT가 아닌데? → 스크립트 수준의 코딩이 필요
● 코딩을 해본적이 없는데? → 가장 강력한 코딩 도구 Copy & Paste
● 지금 업무도 많은데 코딩까지? → 단순 반복 업무 소요시간 단축
● 난이도 높은 기술적인 문제는? → 코드 스니펫 공유
!52
파이썬 자동화 접근 범위와 도구
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
파이썬을 활용한 자동화 도구 3가지
1) 현업의 코딩 학습
2) 코드 스니펫 공유
3) 개발 지원 (팀 단위, 전사 단위)
!54
결론, "기계가 잘하는 일, 사람이 잘하는 일"
● 업무의 흐름과 예외를 가장 잘 아는 사람은 "현업"
● 코딩은 매우 효과적인 수단 (비용의 문제가 아니라)
● “자동화”는 기술과 비용의 문제가 아님! 협업과 공유의 문제
● 가장 빠르게 배워 자동화에 써먹을 수 있는 실용 언어: "파이썬"
!55
Thanks,
Lee, Sean-June
FinanceData.KR fb.com/financedata
!56
⼈⽣苦短, 使⽤ Python

More Related Content

What's hot

不揮発性メモリ(PMEM)を利用したストレージエンジンの話 #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
不揮発性メモリ(PMEM)を利用したストレージエンジンの話  #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ不揮発性メモリ(PMEM)を利用したストレージエンジンの話  #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
不揮発性メモリ(PMEM)を利用したストレージエンジンの話 #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリYahoo!デベロッパーネットワーク
 
Prometheus at Preferred Networks
Prometheus at Preferred NetworksPrometheus at Preferred Networks
Prometheus at Preferred NetworksPreferred Networks
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る wata2ki
 
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化gree_tech
 
高位合成でDeep learning
高位合成でDeep learning高位合成でDeep learning
高位合成でDeep learningMori Labo.
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~HommasSlide
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話Yoichi Toyota
 
Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定Tatsuya Akashi
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.JapanKohei KaiGai
 
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...Mr. Vengineer
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Nozomi Kurihara
 
[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by KomoriInsight Technology, Inc.
 
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかたShunsuke Kikuchi
 
Multi thread game server
Multi thread game serverMulti thread game server
Multi thread game serverOnGameServer
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門Masaya Dake
 

What's hot (20)

不揮発性メモリ(PMEM)を利用したストレージエンジンの話 #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
不揮発性メモリ(PMEM)を利用したストレージエンジンの話  #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ不揮発性メモリ(PMEM)を利用したストレージエンジンの話  #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
不揮発性メモリ(PMEM)を利用したストレージエンジンの話 #mysql_jp #myna会 #yahoo #mysql #pmem #不揮発性メモリ
 
Prometheus at Preferred Networks
Prometheus at Preferred NetworksPrometheus at Preferred Networks
Prometheus at Preferred Networks
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る Linuxのsemaphoreとmutexを見る 
Linuxのsemaphoreとmutexを見る 
 
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
グラフデータベースNeo4Jでアセットダウンロードの構成管理と最適化
 
TDDBC お題
TDDBC お題TDDBC お題
TDDBC お題
 
高位合成でDeep learning
高位合成でDeep learning高位合成でDeep learning
高位合成でDeep learning
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
jqで極めるシェル芸の話
jqで極めるシェル芸の話jqで極めるシェル芸の話
jqで極めるシェル芸の話
 
Memcachedの仕組みと設定
Memcachedの仕組みと設定Memcachedの仕組みと設定
Memcachedの仕組みと設定
 
StreamPaaSのご紹介
StreamPaaSのご紹介StreamPaaSのご紹介
StreamPaaSのご紹介
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2  「エッジAIモダン計測制御の世界」オ...
Google Edge TPUで TensorFlow Liteを使った時に 何をやっているのかを妄想してみる 2 「エッジAIモダン計測制御の世界」オ...
 
Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316Kafka vs Pulsar @KafkaMeetup_20180316
Kafka vs Pulsar @KafkaMeetup_20180316
 
[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori[D35] インメモリーデータベース徹底比較 by Komori
[D35] インメモリーデータベース徹底比較 by Komori
 
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
誰でもできるスマートシティ向けOSS : FIWAREのはじめかた
 
Multi thread game server
Multi thread game serverMulti thread game server
Multi thread game server
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 

Similar to 인생은 짧아요, 엑셀 대신 파이썬

PyCon2020 NLP beginner's BERT challenge
PyCon2020 NLP beginner's BERT challengePyCon2020 NLP beginner's BERT challenge
PyCon2020 NLP beginner's BERT challengeYoongi Kim
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩JaeWoo Wie
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호Jiho Lee
 
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Teddy Choi
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작Changwon Choe
 
100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning Systemhoondong kim
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍QooJuice
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기Dexter Jung
 
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)Eunchan Lee
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentationJae-yeol Lee
 
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료beom kyun choi
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성민욱 이
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스NAVER D2
 

Similar to 인생은 짧아요, 엑셀 대신 파이썬 (20)

PyCon2020 NLP beginner's BERT challenge
PyCon2020 NLP beginner's BERT challengePyCon2020 NLP beginner's BERT challenge
PyCon2020 NLP beginner's BERT challenge
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
 
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)
 
141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작141118 최창원 웹크롤러제작
141118 최창원 웹크롤러제작
 
100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System100% Serverless big data scale production Deep Learning System
100% Serverless big data scale production Deep Learning System
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
SAYAHAE - 상품평 분석 및 추천 서비스 (자연어 처리)
 
Embedded project presentation
Embedded project presentationEmbedded project presentation
Embedded project presentation
 
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
 
Prepo
PrepoPrepo
Prepo
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성
 
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
백억개의 로그를 모아 검색하고 분석하고 학습도 시켜보자 : 로기스
 

인생은 짧아요, 엑셀 대신 파이썬

  • 1. 인생은 짧아요, 엑셀 대신 파이썬 파이썬으로 도전 하는 업무 자동화와 RPA(로봇 프로세스 자동화) 이승준, Sean-June Lee 1
  • 3. 코딩이랑 유관합니다만, !3 import 포함해도 딱 3줄 게다가,
 엑셀이 없어도홀수 행은?
  • 4. 거의 매일 반복되는 단순 반복 작업 모 증권사의 김대리가 매일 아침에 하는 작업 (약 40분 소요) ● 브라우저 띄우기 ● 한국거래소(KRX) 페이지 열기 ● 엑셀 파일로 다운로드하기 ● 파일 이름 변경 (혹은 원하는 위치에 복사) ● 엑셀 컬럼 합치기, 엑셀 파일 생성하기 ● 서식 보고서 만들기 ● 엑셀을 첨부하여 이메일로 보내기 !4
  • 5. ⼈⽣苦短, 使⽤ 파이썬+엑셀 pywin32 XlsxWriter xlrd, xlwt 엑셀 설치 필요 없음 설치된 엑셀이 필요 (윈도우) (윈도우, MacOS) (윈도우, MacOS, Linux) (쓰기) xlsx 지원 !5 xls 지원
  • 6. 파이썬+엑셀 추천 !6 XlsxWriter 엑셀 파일 읽고 쓰기 (엑셀 설치 없이) 엑셀 매크로 자동화 (설치된 엑셀) 엑셀 파일을 생성 
 (서버 사이드)
  • 7. 데이터 준비 - 워크북, 시트 읽기 '2017년 광고비 - 삼성전자.xlsx' !7data source: https://adic.or.kr - 광고정보센터
  • 10. 데이터 병합 '2017년 광고비 - 삼성전자.xlsx' '2017년 광고비 - LG전자.xlsx' !10
  • 11. 두 엑셀 파일을 하나로 합치기 !11 df_merge
  • 12. 계산 및 계산 결과 저장 !12
  • 17. 엑셀을 쓰는 가장 큰 이유 3가지 1. 필터링과 소트 2. VLOOKUP 3. 피벗 테이블 !17
  • 22. 엑셀 파일로 저장 컬럼 너비,테두리,포맷 지정하여 엑셀로 저장 !22
  • 24. 엑셀에서는 약간 까다로운 작업 특정 주기로 데이터 추출 pd.date_range() ● 매주 월요일 ● 매월 1일 ● 매분기 첫 영업일 ● 매월 마지막 영업일 !24
  • 25. 파이썬 pandas = 코드로 다루는 엑셀 사실상 대부분의 
 엑셀 작업 대체 가능 !25 엑셀 파일 
 읽기, 쓰기 수식 =sum(A0:A10) 차트 삽입 셀 서식 속도는 덤 엑셀에서 
 다소 까다로운 
 시계열 연산
  • 26. 파이썬 pandas = 데스크탑 데이터 허브 !26 pd.read_excel() pd.read_csv() df.to_html() smtplib EmailMessage df.to_sql() pd.read_sql() requests
 BeautifulSoup df.to_excel() df.to_csv()
  • 27. KRX 상장회사 목록 엑셀 가져오기 !27
  • 28. 브라우저 자동화 - 1) 브라우저 실행 !28
  • 29. 브라우저 자동화 - 2) 페이지 방문하기 !29
  • 30. 브라우저 자동화 - 3) 다운로드 버튼 클릭 !30
  • 31. 브라우저 자동화 - 4) 파일명 바꾸기 !31
  • 34. 액티브X 컨트롤 제어 자동화 ● ActiveX 컴포넌트 ● 인증서 로그인 ● OpenCV, pyautogui !34
  • 36. 보고서 생성 - Jinja2 Jinja2 템플릿 엔진을 사용한 보고서 생성 !36
  • 37. 이미지와 표 포함된 보고서 !37
  • 38. 이메일 자동화 - smtplib, MIMEMultipart !38
  • 40. Robot Framework http://robotframework.org/ ● 파이썬 기반 ● keyword-driven 테스트 자동화 프레임워크 ● 인수 테스팅 ● 인수 테스트 기반 개발 (ATDD) !40
  • 41. Robot Framework for RPA ● SeleniumLibrary (브라우저 자동화) ● ExcelLibrary (엑셀 자동화) ● AutoITLibrary (데스크탑 자동화) ● OperatingSystem (운영체제) ● SSHLibrary (원격 접근, 원격 제어) !41
  • 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