1 of 24

소소한 사무실 코딩

Python for daily work

김재윤

2 of 24

발표자 소개

  • Python을 좋아하는 공무원입니다.
    • 전) 예산정책처 경제분석관, 국회 법제실 법제관 등
    • 현) 국회 보건복지위원회 입법조사관
  • 2018~2021 Pycon Korea Speaker
    • 2021: 공무원 환경에서의 업무 자동화
    • 2020: 파이썬으로 법률 역사 연구하기
    • 2019: 법률을 디버깅하다
    • 2018: 법률 네트워크 분석
  • 발표 자료 등: https://sites.google.com/view/jaeyoon-kim

3 of 24

발표 의도와 순서

  • 사무실에서 Python을 활용한 사례를 공유합니다.
  • 할 일을 바꾸기는 어렵지만, 일하는 방법은 바꿀 수 있으니까요

업무 상황

기능

모듈

1

이 파일들 USB에 채워서 기념품으로 드리자

폴더-파일 다루기

os

2

이 영문 보고서(300쪽) 좋네, 번역해보자

pdf 파싱

pdfminer

3

설문조사 결과 토요일에 나와, 월요일에 보고하자

데이터 정제

pandas

4

업무자동화 혼자 쓰지 말고, 우리도 쓸수 있게 만들어서 배포해주세요(2021 Pycon Korea 후속)

아래아 한글 자동화,

GUI, 실행파일 만들기

win32,

tkinter, pyinstaller

4 of 24

사례1. 폴더-파일 다루기

  • 상황: “이 파일들 USB에 채워서 기념품으로 드리자”
    • 자문위원회에 보고서를 작성해서 드렸는데, �인용 문헌 파일을 요구
    • 마침 기념품으로 USB를 돌릴 예정�→ 요구한 파일들을 넣어서 자문위원회 열릴 때 드리기로
    • 보고서 작성에 참여한 부서별로 파일들을 받았는데, �파일은 100개가 넘는데 어디에 무슨 파일이 있는지 목록이 없는 상황
    • 자문위원회는 내일

5 of 24

사례1. 폴더-파일 다루기

  • 희망
    • 파일명이 ‘제목_저자_원천’ 통일
    • 파일이 목차별로 다른 폴더 위치
  • 문제 해결
    • Python으로 폴더 파일 읽어와서 PRINT하는 방법 구글링
    • https://codechacha.com/ko/python-list-all-files-in-dir/ (친절한 블로그, 감사합니다.)

6 of 24

사례1. 폴더-파일 다루기

  • 결과물: 아래아 한글 표
    • python 출력값을 �아래아 한글에 복붙
    • 아래아 한글의 �문자열 → 표 변환 �기능 이용

7 of 24

사례2. pdf 파싱

상황: “이 영문 보고서 좋네, 번역해보자”

  • 300쪽 보고서 번역 작업
  • ‘번역프로젝트’의 총괄 담당
  • 번역 결과물은 영-한 대비표
  • pdf 보고서 영문을 페이지별로 표에 넣어야 함
  • 인턴과 RA 시켜서 수작업으로 pdf 영문을 복붙하려는 시도

영문

한글

# pdf에서 복사해서 붙여넣는다.

# 어떻게든 번역한다

(번역기를 쓰고 나서 수정하든, 처음부터 그냥 하든).

나와야 하는 결과물

8 of 24

사례2. pdf 파싱

  • 희망
    • pdf에 유용한 규칙성 존재
    • 차트의 시작 지점
      • “FIGURE”
    • 차트의 종료 지점
      • “Click here to download charts and data.”

9 of 24

사례2. pdf 파싱

  • 문제해결

10 of 24

사례2. pdf 파싱

문제해결

  • 파싱된 str 작업
  • 페이지내 FIGURE 여부에 따라 구분하여 작업

11 of 24

사례2. pdf 파싱

  • 결과물
    • 이 txt파일을 아래아한글에 붙여넣고, “문자열을 표로” 기능으로 표로 만든 후, 표의 열을 1개만 추가하면 대비표 완성

영문

한글

CHAPTER 1 Debt: Evolution, Causes, and Consequences

The global economy has experienced four waves of debt accumulation over the past fifty years …

12 of 24

사례3. 데이터 정제

  • 상황: “설문조사 결과 토요일에 나와, 월요일에 보고하자”
    • 설문조사 의뢰해서 csv 파일이 들어올 예정
    • 조사 결과는 응답자별 데이터, 문제는 csv 나오고 나면 작업할 시간이 없다!
  • 희망
    • csv 중간 결과물은 받아볼 수 있음.
  • 문제해결
    • 중간결과물 csv를 기반으로 교차표 형식 excel 파일 출력하는 코딩
    • 최종결과물 오면 바로 돌리기
    • excel 파일 차트와 pt 작성은 수작업으로

설문조사 결과 csv 파일 형태

13 of 24

사례3. 데이터 정제

pandas df의 모습

  1. Q2 series의 1, 2, 3번 응답의 빈도를 구하고 transpose
  2. Q2와 Q11(Q12, Q13)의 교차표(crosstab)를 도출
  3. 각 교차표(dataframe)를 합치기 위해 columns를 통일
  4. 총 응답 빈도와 3개의 교차표를 합친 Q2라는 dataframe을 생성

※ 교차표 기반의 카이스퀘어 검정도 scipy로 하기 위해 python을 이용한 � 것이나, 해당 코드 부분은 생략

14 of 24

사례3. 데이터 정제

응답 원자료 csv

Q1-지역 교차표

Q1-연령 교차표

Q1-직업 교차표

응답 1

응답 2

응답 3

응답 4

응답 5

15 of 24

사례3. 데이터 정제

결과물

  • 코딩과 미리 만들어둔 템플릿 덕분에 납기 준수
  • pandas.crosstab�교차표 작성을 한 이유

16 of 24

사례4. 업무자동화 배포

  • 상황: 2021년 Pycon Korea 발표 이후
    • 2021년에 국회 상임위원회 법률안 검토보고서 작성 자동화 코드를 개발해서 Pycon Korea에서 발표(공무원 환경에서의 업무 자동화)
    • 타 위원회에서도 자동화를 해달라는 요청이 있었음.
    • 그런데 이 코드의 기초가 되는 엑셀파일 형식이 위원회마다 크게 다르고, 코드를 해당 위원회에서 실행하기 어려운 점을 발견
    • 그래서 모든 위원회에서 사용할 수 있는 GUI 형태로 프로그램을 개선하고, 누구나 쓸 수 있도록 exe 실행파일 배포를 기획

17 of 24

사례4. 업무자동화 배포

  • 참고: 2021년 Pycon Korea 요약
    • 국회 상임위원회에서 입법조사관 개인이 수작업으로 의안원문, 비용추계서 다운로드, 폴더 구조 만들기, 법안 검토보고에 기본 사항 입력(법안 번호, 제출일, 회부일, 제안이유 등)
    • 이 단순반복업무가 1년에 총 5,000번 발생하고 있음 → 자동화의 손익분기점 충분히 넘음
    • 열린국회정보 open API, 입력한 의안대장 excel 등의 data를 조합해서 텍스트를 만들고, 이 텍스트 정보를 사전에 준비된 아래아 한글(누름틀 또는 field가 촘촘하게 설정됨)에 넣어서 문서를 작성하는 방법

18 of 24

사례4. 업무자동화 배포

19 of 24

사례4. 업무자동화 배포

추가된 코드

  • Pyinstaller로 exe로 만들었을 때 해당 파일이 있는 폴더의 위치를 알아내는 코드
  • tkinter를 이용한 최소한의 GUI
  • cmd에서 pyinstaller 실행

20 of 24

사례4. 업무자동화 배포

결과물: 국회bot

21 of 24

정리: 사무실에서 Python의 용도

  • 전통적 사무실 기능의 대체, 보완
    • 워드프로세서: Word 및 아래아한글 자동화, 텍스트 조작
    • 스프레드시트: 엑셀의 거의 모든 기능 대체
    • 폴더, 파일 관리: 클라우드 환경이 아니라면 유용
  • 추가로 가능한 것들
    • 웹크롤링, 웹개발, PDF 파싱
    • 통계분석, ML

22 of 24

결론

  • 개발과 관련이 없는 일반 사무 업무에도 Python은 유용합니다.

  • 하는 일을 바꾸기는 어렵지만, 일 하는 방법은 바꿀 수 있습니다.

  • 사무실에서 Python을 더 많이 사용하고, 같이 배우고, 커뮤니티를 확대합시다.

23 of 24

Pycon Korea의 관련 선행 발표

  • 2017년, 이성용, 개발자 없는 통계업무 부서에서 Django+Pandas+Selenium+python-docx으로 통계업무도구 만들기
  • 2017년, 임덕규, 예제로 살펴보는 PyQt
  • 2018년, 이승준, 인생은 짧아요 엑셀 대신 파이썬
  • 2019년, 반병현, 파이썬과 함께라면 못 할 것은 없다
  • 2019년, 신명진, 코알못 직장인의 파이썬-아래한글 도전기
  • 2019년, 이정훈, py2exe를 구현하는 기술과 원리
  • 2021년, 김재윤, 공무원 환경에서의 업무 자동화

24 of 24

감사합니다.