O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Pycon2017 이성용 Dances with the Last Samurai

7.499 visualizações

Publicada em

PYCON 2017
django + pandas + python-docx 를 이용한 통계업무도구 만들기

비개발자가 비개발부서인 통계부서에서 하지말라는 개발하는 이야기

Publicada em: Software

Pycon2017 이성용 Dances with the Last Samurai

  1. 1. Dances with the Last Samurai django + pandas + python-docx 통계업무도구 만들기 이 성 용
  2. 2. Dances with the Last Samurai 개발자 아닌 사람이 개발부서가 아닌 통계부서에서 하지 말라는 개발하는 이야기 이 성 용 saintdragon2@gmail.com
  3. 3. 저는 개발자는 아닙니다 • 농업토목공학 전공 • 구조해석 등 수치해석 프로그래밍 • 기상자료, 수문 자료 처리 경험 과거
  4. 4. 저는 개발자는 아닙니다 과학기술정보통신부 산하 기관 취업 명함 어디에도 개발 비슷한 말도 없음 현재
  5. 5. 국제 통계 업무 책임자가 되었습니다 • 연구개발활동조사 • 기업, 연구소, 대학 등 1년간 연구개발비, 연구원 수 전수 조사 • 정부, 통계청, OECD에 제출
  6. 6. 과학 기술 전문 얼마나 적이고 적이고 적인 방법으로 작성될까요?
  7. 7. 56,109 조사업체
  8. 8. 1~2 dataset / week 4 sheets 600 columns 조사업체
  9. 9. • 보고서 40 page • 통계청 제출용 50 page • OECD 제출용 30 page • 통계표 400 page
  10. 10. • 보고서 40 page • 통계청 제출용 50 page • OECD 제출용 30 page • 통계표 400 page
  11. 11. • 만약 통계표 383 page에서 이상한 수치를 발견한다면?
  12. 12. 4 sheets 56,109 rows 600 columns
  13. 13. 버전 관리도 어렵다. 도대체 몇 번을 전화하는 겁니까?
  14. 14. 클라우드 서비스도 이용할 수 없다…
  15. 15. 업무 프로세스: 수제(Handmade) 통계
  16. 16. 신입 직원이니까 시키는 대로 해보자 • Vlookup으로 전년도, 전전년도 자료와 비교 • 수시로 들어오는 자료 산출 요청 • 예1: “국회의원 OO인데, 최근 10년 지역별 연구원 통계 작성해주세요” • 예2: “OO전자 지난 5년간 연구비 변화가 어떻지?” HUMAN ERROR 가 발생할 수밖에 없는 구조 1년치 엑셀 파일 여는데만 2~3분 (자동저장이 발동된다면…)
  17. 17. 개발을 해야 한다고 생각했지만..
  18. 18. 언어장벽. 정의justice definition function기능 함수 equation균등화 방정식 DB PYTHON
  19. 19. DB가 있어야 해요. 개발을 해야 합니다! • Q. 이런 일을 하는데, DB는 필수입니다. 엄청 편할 것 같지 않나요? • A: 이미 DB는 있어요. 폴더 찾아보세요.
  20. 20. DB • 이미 있다는 DB는……..연도별 엑셀 파일…
  21. 21. 일관되지 않은 데이터 양식 • “경상북도 남성 연구원 수”를 표현하는 다양한 방법 경상북도 남성 연구원 경상북도_남성_연구원 경북 연구원 남 경북 연구원 남성
  22. 22. 개발을 하겠습니다! 업무파악이 우선입니다.
  23. 23. 개발을 하면 안 되는 이유 • 기존의 업무 체계를 바꾸는 것은 위험이 따른다 • 혼자 하는 일이 아니다 • 우리는 IT 부서가 아니다
  24. 24. 꾸준히 증가하는 조사 대상 기관 25692 29526 32673 36715 41869 48381 56109 20,000 30,000 40,000 50,000 60,000 2008 2009 2010 2011 2012 2013 2014 2015 2016 조사 대상 기관 수 아무런 위험도 감수하지 않는 것이 가장 큰 위험이다
  25. 25. 개발의 원칙 • 매일, 조금씩, 최소한 • 낮에 개발하지 않는다 (내가 개발하는 동안, 내가 해야 할 일을 동료가 부담하게 된다 ) • 오늘 밤 개발해서 내일 쓴다 • 현재의 체제를 최대한 유지한다 • 모든 결과물은 excel 로 • 새로운 체제를 동료에게 강요하지 않는다 • 테스트! 테스트! 테스트! • 절대로 나를 믿지 말라
  26. 26. 우리가 하려는 것 awesome.py
  27. 27. 주변 사람들의 반응 awesome.py내 컴퓨터에 뭘 자꾸 설치 하겠다는거냐.
  28. 28. • The web framework for perfectionist with deadline • 누구나 브라우저만 있다면 바로 사용 가능 • 파이썬 설치, 환경 설정 불필요! • 배포도 불필요 (url 링크만 공유하면 끝) • 웹은 누구에게나 가장 친숙한 구조 • 사용하기도 쉽고 • 만들기도 쉽다 (UI 예제도 많다) Django를 쓰세요
  29. 29. • 간단하고 작은 프로그램일 수록 거부반응도 작다 • 반복적이고 일상적인 프로그램 • 복잡한 작동은 Django 뒤로 감추기 작고 간단한 것부터!
  30. 30. • Web crawler • 웹검색 결과 copy & paste 작업을 자동화 • Ex) 사업자등록번호 검증 • Kreport에서 사업자등록번호 검색 후 저장 Selenium
  31. 31. Selenium + Django
  32. 32. Selenium + Django
  33. 33. 통계업무도구 개발 시작 본격적으로…
  34. 34. Pandas + Django 기존 방식 • 전년도 자료와 올해 자료 비교 • 엑셀 vlookup 함수로 비교표 만든 뒤 검토 • 1주일에 2회 • 무한 마우스 스크롤 개선 방식
  35. 35. • Data Analysis Library • 엑셀 읽고 쓰기 쉬움 • 엑셀 기능을 대체 할 수 있음 • Open Source • Easy to Use ? ?
  36. 36. • 모델을 만들면, 관리자 페이지 자동 생성 자료: django girls (https://tutorial.djangogirls.org/ko/django_models/)
  37. 37. 댓글 달기 • 기록 남기고 공유 가능
  38. 38. 댓글 달기 -> Slack 전달
  39. 39. 이상한 데이터 자동으로 검출하기 일일이 그래프 보고 댓글 달기 귀찮아서 자동화…
  40. 40. 이상한 데이터에 관한 이메일 만들기 이메일 쓰기 귀찮아서 자동화…
  41. 41. 이상한 데이터에 관한 이메일 만들기
  42. 42. 댓글달고, problem resolve로 체크하기 시연 영상
  43. 43. 통계 산출 업무 자동화 • 400페이지에 달하는 통계표를 자동으로 뽑아보자 • 현재는 손으로 엑셀로 하고 있음 • 끝없는 엑셀 피벗의 향연
  44. 44. 통계 산출하기 • Django 모델 Pandas DataFrame으로 변환하기
  45. 45. 통계 산출하기 • Django 모델 Pandas DataFrame으로 변환하기
  46. 46. 통계 산출하기 • Django 모델 Pandas DataFrame으로 변환하기
  47. 47. 보고서 작성 자동화 (Python-Docx) https://python-docx.readthedocs.io/en/latest/ 인쇄업체
  48. 48. 보고서 작성 자동화 (Python-Docx) https://python-docx.readthedocs.io/en/latest/
  49. 49. PYCHARM 라이선스 살게요! PYCHARM을 왜 Jet Brains에서 구입합니까!!?? 행정상 안된다고 할 때.
  50. 50. PYCHARM 라이선스 살게 요! 어떻게 하면 되나요? A, B, C !!#$!#@$ 하면 됩니다. 싸우지 마세요 • 행정/재무 담당자는 오지 탐험 가이드, 경호원과 같은 존재 • 담당자가 아니라 규정과 관행이 막고 있는 것을 잊지 말자 • 동반자가 될 수 있음!
  51. 51. 1년간 고생한 결과 • 낮에 Pycharm을 열 수 있다! • 밤에 개발하지 마세요 • 동료와 함께 쓰는 즐거움 • 옆 박사님도 개발을… • 외주…
  52. 52. Do It Yourself • 외주 vs 직접 개발 • 때론 직접 하는 것이 더 효율적
  53. 53. Dances with the Last Samurai 감사합니다 이 성 용 saintdragon2@gmail.com

×