Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

8,652 views

Published on

https://github.com/FinanceData/Life-is-short
(github 페이지: 데이터세트, 동영상)

https://fb.com/financedata/posts/2170185529937113
(페이스북 페이지: 주피터 노트북 및 동영상)

파이썬으로 도전하는 업무자동화와 RPA(로봇프로세스자동화)
* 엑셀 노가다를 파이썬으로 자동화 할 수 있는 방법들
* 데스크탑 자동화(단순 반복 업무 자동화)에 필요한 라이브러리들과 사용 예
* RPA (상용 솔루션)과 파이썬 (무료 오픈소스)의 장점과 단점
* 파이썬을 활용한 업무 자동화 구체적인 방법

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

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

×