SlideShare a Scribd company logo
1 of 75
* 책 구매시 출판사로부터 한 학기 분량의 PPT를 제공받으실 수 있습니다.
컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
Xlsx Excel Automation
CONTENTS
01. 예제용 CSV 파일 1천 개, 1초 만에 만들기
02. CSV 파일 1천 개, 1초 만에 합치기
03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기
04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기
05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
06. 무작위 엑셀 파일의 서식을 망가뜨리기
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
09. 서식이 올바른 엑셀 파일, 순식간에 합치기
10. 서식이 서로 일치하는 엑셀 파일끼리 합치기
11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
6개월 치 업무를 하루 만에 끝내는 업무 자동화 3
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
• 엑셀 파일을 읽어와 양식과 내용 분석하기
• 엑셀 파일 내용물이 기재된 2차원 리스트 편집하기
• 문서의 내용물에 무작위로 접근하는 기법 익히기
• 엑셀 파일을 자유자재로 편집하기
• 엑셀 파일의 서식을 분석하는 기법 공부하기
• 엑셀 파일의 서식에 따라 파일을 분류하고 합치는 기법 공부하기
파이썬을 활용하여
엑셀 파일을 자유자재로
다루는 자동화를 공부합니다
[단원의 주요 목표]
6개월 치 업무를 하루 만에 끝내는 업무 자동화 4
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
엑셀 자동화 예제를 위해
개인정보가 기재된
CSV파일 1천 개를
제작합니다.
[ 예제 개요 ]
01. 예제용 CSV 파일 1천 개, 1초 만에 만들기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 5
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
01. 예제용 CSV 파일 1천 개, 1초 만에 만들기
(1) 코드 실행하기
“2_4_1_예제용 CSV 파일 1천 개, 1초 만에 만들기”폴더로 이동해
Git Bash를 실행합니다. 그리고 아래 코드를 실행합니다.
$ python sample_csv_generator.py
잠시 뒤 <personal_info> 폴더가 새로이 생겨납니다.
폴더 내부에는 가짜 개인정보 파일 1천 개가 저장되어 있습니다.
(2) 결과물 파일 열어보기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 6
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
01. 예제용 CSV 파일 1천 개, 1초 만에 만들기
(3) 업무 자동화 코드 설계 과정
목표 정하기
개인정보 파일 1천 개를 제작합니다.
그런데 이왕이면 예쁜 양식으로 정리된 CSV 파일로 제작합니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) 헤더 만들기
2) 개인정보 내용물 사이사이에 콤마(“, “)를 넣어 정리하기 “, ”.join()
6개월 치 업무를 하루 만에 끝내는 업무 자동화 7
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
01. 예제용 CSV 파일 1천 개, 1초 만에 만들기
(4) 헤더 만들기
>>> header = “name, age, e-mail, division, telephone, sexn”
위 CSV 파일의 헤더는 아래와 같은 형태입니다.
“name, age, e-mail, division, telephone, sex”
아래와 같이 바로 스트링으로 제작해 줘도 됩니다.
>>> headerList = [“name”, “age”, “e-mail”, “division”, “telephone”, “sex”]
>>> header = “, ”.join(headerList) + “n”
Join()을 활용하면 아래와 같이 표현할 수도 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 8
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
CSV 파일 1천 개를
양식을 유지하며
하나로 합칩니다.
[ 예제 개요 ]
02. CSV 파일 1천 개, 1초 만에 합치기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 9
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
02. CSV 파일 1천 개, 1초 만에 합치기
(1) 코드 실행하기
1절에서 만든 <personal_info> 폴더를
“2_4_2_CSV 파일 1천 개, 1초 만에 합치기”폴더로 복사합니다.
그리고 Git Bash를 실행하여 아래 코드를 실행합니다.
$ python simple_mergy.py personal_info
잠시 뒤 <simple_merged_ID.csv> 파일이 새로이 생겨납니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 10
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
02. CSV 파일 1천 개, 1초 만에 합치기
(2) 결과물 파일 열어보기
<simple_merged_ID.csv> 파일을 열어보겠습니다.
CSV 파일들이 하나로 합쳐져 있지만 헤더의 분리가 되어 있지 않습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 11
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
02. CSV 파일 1천 개, 1초 만에 합치기
(2) 결과물 파일 열어보기
엑셀의 <정렬> 기능을 활용하여 헤더를 분리할 수 있습니다.
본격적으로 헤더를 관리하는 예제는 다음 절에서 소개합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 12
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
CSV파일의 헤더를
분리하며
내용물을 하나로 합칩니다.
[ 예제 개요 ]
03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 13
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기
(1) 코드 실행하기
1절에서 만든 <personal_info> 폴더를 “2_4_3_CSV 파일 1천 개,
양식을 유지하며 하나로 합치기”폴더로 복사합니다.
그리고 Git Bash를 실행하여 아래 코드를 실행합니다.
$ python mergy.py personal_info
잠시 뒤 <merged_ID.csv> 파일이 새로이 생겨납니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 14
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기
(2) 결과물 파일 열어보기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 15
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기
(3) 업무 자동화 코드 설계 과정
목표 정하기
1) 파일들을 하나로 합치기
2) 합쳐지는 과정에서 양식을 유지하기
목표를 달성하는 데 필요한 작업 쪼개기
1) 헤더와 데이터를 분리하기
2) 헤더는 파일에 한 번만 기록하고, 데이터는 하나씩 모두 기록하기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 16
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기
(4) CSV 파일의 헤더 분리 편의성
CSV파일은 첫 번째 줄에 헤더가 위치하고, 두 번째 줄부터 다른 내용물들이
위치합니다.
따라서 readline()을 활용해 손쉽게 헤더를 분리할 수 있습니다.
이어서 read()를 실행해 본문의 나머지 내용을 한꺼번에 모두 불러옵니다.
CSV 파일의 헤더와 콘텐츠 분리는 아래와 같이 두 줄의 코드로 실행
가능합니다.
>>> f = open(“test.csv”)
>>> header = f.readline()
>>> contents = f.read()
6개월 치 업무를 하루 만에 끝내는 업무 자동화 17
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
Xlsx 엑셀 문서를 자동으로
작성하는 방법을 공부합니다.
[ 예제 개요 ]
04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 18
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기
(1) 코드 실행하기
“2_4_4_예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기” 폴더에서
Git Bash를 실행합니다.
$ pip install pyexcel pyexcel-xlsx
※ 주의사항
이번 예제는 PyExcel 라이브러리를 사용합니다.
라이브러리가 설치되어 있지 않다면 아래와 같이 설치해 주세요.
라이브러리가 준비되었다면 아래와 같이 코드를 실행합니다.
$ python sample_xlsx_generator.py
잠시 뒤 <personal_info> 폴더가 새로이 생겨납니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 19
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기
(2) 결과물 파일 열어보기
<personal_info> 폴더 내부의에 xlsx 엑셀 문서 1천 건이 새로이
생겨났습니다. 내용물을 실행해 봅니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 20
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기
(3) 업무 자동화 코드 설계 과정
목표 정하기
1) 1절에서 짠 코드를 최대한 재활용합니다.
2) 포맷만 CSV에서 Xlsx로 바꿉니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) 데이터를 “, ”로 구분된 문자열이 아니라 리스트 형태로 가공합니다.
2) 가공된 리스트를 save_as() 함수를 이용해 엑셀로 저장합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 21
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기
(4) CSV 대신 리스트로 표현하기
다음은 1절 예제 코드의 일부입니다.
다음은 이번 예제 코드의 일부입니다.
Join() 함수를 활용하는 대신 리스트를 바로 활용하는 방식으로
표를 표현하는 방식을 수정하여 활용합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 22
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
Xlsx 엑셀 파일 1천개를
하나의 xlsx 엑셀 파일로
합쳐 봅니다.
[ 예제 개요 ]
05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 23
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
(1) 코드 실행하기
4절에서 생성한 <personal_info> 폴더를 “2_4_5_엑셀 파일 1천 개,
순식간에 하나로 합치기” 폴더로 복사합니다.
Git Bash를 실행하여 아래 명령어를 실행합니다.
$ python merge.py personal_info
코드를 실행하면 폴더 안에 엑셀 파일이 새롭게 생겨납니다.
이 파일을 활용해 앞으로 다양한 예제를 수행해 볼 것입니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 24
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
(2) 결과물 파일 열어보기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 25
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
(3) 업무 자동화 코드 설계 과정
목표 정하기
1) 엑셀 파일 불러옵니다.
2) 헤더는 떼어내고 데이터만 추출합니다.
3) 새로운 엑셀 파일 생성합니다.
4) 헤더를 한 번만 삽입하고, 데이터를 모두 옮겨 적습니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) xlsx 파일을 파이썬에서 열어보기
2) 열어온 파일에서 헤더를 분리하기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 26
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
(4) 엑셀 파일을 리스트로 불러오기
>>> array = px.get_array(“personal_info/0_박지진.xlsx”)
>>> array
[[“name”, “age”, “e-mail”, “division”, “telephone”, “sex”], [“박지진”, “18”,
rrl9c53l@bhban.com, “pcz”, “010-1618-0416”, “female”]]
엑셀 파일 편집을 위하여 PyExcel 라이브러리를 불러옵니다.
>>> import pyexcel as px
아래와 같이 get_array() 함수를 활용하면
엑셀 파일을 리스트로 불러올 수 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 27
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
(5) 헤더와 데이터의 분리
>>> header = array[0]
>>> contents = array[1:]
>>> header
[“name”, “age”, “e-mail”, “division”, “telephone”, “sex”]
>>> contents
[“박지진”, “18”, rrl9c53l@bhban.com, “pcz”, “010-1618-0416”, “female”]
아래와 같이 첫 번째 원소를 인덱싱하여 헤더를 추출할 수 있습니다.
본문의 데이터는 몇 줄 짜리인지 알 수 없으므로 슬라이싱을 활용합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 28
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
무작위 엑셀 파일의
서식을 망가뜨립니다.
[ 예제 개요 ]
06. 무작위 엑셀 파일의 서식을 망가뜨리기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 29
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(1) README.md
<README.md> 를 파이참에서 실행합니다.
좌측 화면에는 마크다운(Markdown) 코드가 기재되어 있습니다.
우측에는 다듬어진 문서가 표현됩니다.
모든 예제에는 코드 실행 방법을 안내하는 <README.md> 파일이 제공됩니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 30
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(1) README.md
6개월 치 업무를 하루 만에 끝내는 업무 자동화 31
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(2) 코드 실행하기
$ python anarchist.py personal_info 30
코드를 실행하면 personal_info 폴더 안에 있는 1천 개의 파일 중
30%의 파일이 파괴됩니다.
4절에서 생성한 <personal_info> 폴더를 복사하여 “2_4_6_무작위
엑셀 파일의 서식을 망가뜨리자” 폴더로 복사합니다.
Git Bash를 실행하여 아래와 같이 코드를 실행합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 32
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(3) 결과 파일 살펴보기
파괴되지 않은 원본 파일
6개월 치 업무를 하루 만에 끝내는 업무 자동화 33
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(3) 결과 파일 살펴보기
무작위 열이 복제된 파일
무작위 열이 삭제된 파일
6개월 치 업무를 하루 만에 끝내는 업무 자동화 34
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(3) 결과 파일 살펴보기
무작위 열의 값이 조작된 파일
6개월 치 업무를 하루 만에 끝내는 업무 자동화 35
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(4) 업무 자동화 코드 설계 과정
목표 정하기
1) 몇 퍼센트의 파일을 파괴할 것인지 입력받습니다.
2) 무작위 열을 선택하여 삭제합니다.
3) 무작위 열을 선택하여 복제합니다.
4) 무작위 열을 선택하여 내용물을 조작합니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) 코드를 실행할 때 사용자에게 숫자(퍼센트)를 입력받기 sys.argv
2) 지정받은 개수 만큼의 파일만 파괴하기
3) 엑셀 파일을 읽어와 하나의 열을 무작위로 선택하기 random.randint()
4) 엑셀 파일의 열을 삭제합니다.
5) 엑셀 파일에 열을 추가합니다.
6) 엑셀 파일의 열을 선택해 내용물을 조작합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 36
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(5) 입력받은 개수 만큼의 파일만 파괴하기
>>> import random
>>> random.shuffle(fileList)
>>> import os
>>> fileList = os.listdir(“personal_info")
os.listdir()을 활용해 폴더 내의 파일 목록을 받아옵니다.
random 모듈의 shuffle() 함수를 이용하여 fileList의 내용물을 섞어버립니다.
>>> target = fileList[: N]
슬라이싱을 통해 맨 앞의 N개만 뽑아옵니다.
이로써 파괴할 파일 N개를 랜덤으로 추출하는 과정이 끝납니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 37
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(6) 엑셀 파일의 열을 무작위로 선택하기
>>> random.randint(0, 5)
random.randint를 활용하면 임의의 정수를 받아올 수 있습니다.
아래 코드를 실행하면 0, 1, 2, 3, 4, 5 총 6개의 숫자 중 하나가 무작위로
선택됩니다.
엑셀 파일 안에 총 6개의 열이 있다면 위 방법으로 열의 인덱스를 지정할 수
있습니다.
엑셀 파일 안에 몇 개의 열이 있는 지 모를 때에는 아래와 같이 len() 함수를
활용합니다.
>>> array = px.get_array(“personal_info/0_박지진.xlsx”)
>>> num_columns = len(array[0])
>>> random.randint(0, num_columns – 1)
6개월 치 업무를 하루 만에 끝내는 업무 자동화 38
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(6) 엑셀 파일의 열을 삭제하기
>>> array = px.get_array(“personal_info/0_박지진.xlsx”)
아래와 같이 PyExcel의 get_array() 함수로 파일로 불러옵니다.
>>> array.delete_columns([0])
PyExcel에서 제공하는 기능인 delete_column() 함수를 사용하겠습니다.
아래 코드를 실행하면 0번째 인덱스에 있는 열이 삭제됩니다.
>>> array.delete_columns([3])
3번째 인덱스의 열을 삭제하려면 아래와 같이 숫자를 수정해 줍니다.
>>> array.delete_columns([1, 3, 5])
동시에 여러 개의 열을 삭제하려면 여러 개의 인덱스를 입력합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 39
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(6) 엑셀 파일의 열을 삭제하기
>>> array = px.get_array(“personal_info/0_박지진.xlsx”)
>>> num_columns = len(array[0])
>>> target = random.randint(0, num_columns - 1)
>>> array.delete_columns([target])
random.randint()와 함께 사용하면 무작위 열을 삭제할 수 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 40
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(7) 엑셀 파일의 열을 복제하기
>>> a = [1, 3, 5]
>>> b = a.copy()
>>> b
[1, 2, 3]
아래와 같이 copy() 함수를 사용해 리스트를 복제할 수 있습니다.
>>> array = px.get_array(“personal_info/0_박지진.xlsx”)
>>> array.column[0]
["name", "박지진"]
>>> array.column[1]
["age", "46"]
인덱싱을 통해 특정 열을 리스트로 받아올 수 있습니다.
>>> copied_column = file.column[2].copy()
따라서 copy()로 엑셀 파일의 열을 리스트로 복제할 수 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 41
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(8) 엑셀 파일에 열을 추가하기
>>> [1, 3, 5] + [1, 3, 5]
[1, 3, 5, 1, 3, 5]
리스트의 덧셈 연산은 리스트를 서로 이어 붙입니다.
>>> array = px.get_array(“personal_info/0_박지진.xlsx”)
>>> array.column += duplicated_column
PyExcel은 열을 리스트 형태로 제공합니다.
아래 코드를 실행하여 엑셀 파일에 새로운 열을 추가할 수 있습니다.
>>> target = random.randint(0, len(array[0]) - 1)
>>> array.column += array.column[target].copy()
random.randint()를 함께 사용하면 무작위 열을 복제하여 추가할 수 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 42
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(9) 무작위 열의 내용물을 조작하는 방법
무작위 열을 불러옵니다.
>>> target = random.randint(0, len(array[0]) - 1)
>>> target_column = array.column[target]
원본 데이터를 수정할 것이므로 copy()를 사용하지 않습니다.
이후 target_column 리스트의 내용물을 직접 수정하면 됩니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 43
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
06. 무작위 엑셀 파일의 서식을 망가뜨리기
(10) 리스트의 내용물을 모두 같은 값으로 변경하기
for문을 활용하면 편리합니다.
>>> a = [1, 2, 3, 4, 5]
>>> for i in range(len(a)):
>>> a[i] = "고양이"
>>> a
['고양이', '고양이', '고양이', '고양이', '고양이']
아래와 같이 for문을 한 줄로 단축할 수도 있습니다.
>>> a = [1, 2, 3, 4, 5]
>>> a = ["고양이" for i in range(a))]
위 방법을 응용하면 엑셀 파일의 열을 빠르고 쉽게 조작할 수 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 44
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
섞여 있는 엑셀 파일을
탐색하여 서식이 몇
종류인지 분석합니다.
[ 예제 개요 ]
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 45
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(1) README.md
"2_4_7_섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기" 폴더로
이동해 <README.md> 파일을 열어봅니다.
6절 예제의 결과 폴더를 이번 예제 폴더로 복사합니다.
이후 Git Bash를 실행하여 <README.md>의 설명을 따라 코드를 실행합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 46
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(2) 결과 파일 살펴보기
예제가 실행되면 <report.txt> 파일이 새로이 생겨납니다. 실행해 봅니다.
<personal_info> 폴더 안에 있는 엑셀 파일들의 헤더를 분석한 보고서입니다.
헤더의 종류와, 등장 회수가 기재되어 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 47
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(3) 업무 자동화 코드 설계 과정
목표 정하기
1) 저장할 보고서 파일의 이름을 입력받습니다.
2) 파일을 하나씩 읽어 헤더를 분석합니다.
3) 헤더가 몇 종류인지 분석합니다.
4) 각 헤더가 가진 파일이 몇 개인지 분석합니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) 헤더 쪼개기 인덱싱
2) 헤더 종류를 저장해 둘 변수를 만들기
3) 헤더 개수를 저장해 둘 변수 만들기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 48
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(4) 딕셔너리
딕셔너리는 사전이라는 뜻입니다.
사전의 역할은 키(value)를 값(value)에 사상시키는 것입니다.
예시를 살펴 봅시다.
Key Value
apple 사과
agriculture 농업
brown 갈색의
crown 왕관
사전은 대량의 정보를 효율적으로 제공할 수 있는 도구입니다.
파이썬의 딕셔너리 또한 Key를 value로 사상시키는 도구입니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 49
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(4) 딕셔너리
딕셔너리는 중괄호 {}를 활용하여 정의합니다.
아래 코드는 텅 빈 딕셔너리를 제작하는 코드입니다.
>>> myDict = {}
아래 코드는 딕셔너리에 두 개의 원소를 삽입하여 정의하는 코드입니다.
>>> myDict = {'a' : 1, 'b' : 2}
Key Value
a 1
b 2
위 딕셔너리의 구조는 아래와 같습니다.
'a'를 1로, 'b'를 2로 사상시킵니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 50
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(4) 딕셔너리
딕셔너리 값의 접근은 리스트의 인덱싱과 같이 대괄호를 사용합니다.
>>> myDict = {'a' : 1, 'b' : 2}
>>> myDict['a']
1
>>> myDict['b']
2
딕셔너리에 들어있지 않은 키를 검색하면 에러가 발생합니다.
>>> myDict['c']
Traceback
KeyError: 'c'
6개월 치 업무를 하루 만에 끝내는 업무 자동화 51
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(4) 딕셔너리
딕셔너리에 새로운 값을 추가할 때에도 대괄호를 사용합니다.
>>> myDict = {'a' : 1, 'b' : 2}
>>> myDict['c'] = 3
{'a' : 1, 'b' : 2, 'c' : 3}
>>> myDict['c']
3
딕셔너리에 이미 저장되어 있는 값을 변경할 수도 있습니다.
>>> myDict['c'] = myDict['c'] + 1
>>> myDict['c']
4
>>> myDict['c'] += 1
>>> myDict['c']
5
6개월 치 업무를 하루 만에 끝내는 업무 자동화 52
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
(5) 딕셔너리를 사용해 헤더 기록하기
for문을 활용하여 파일을 하나씩 불러오며 아래 작업을 수행합니다.
>>> 헤더 쪼개기
>>> if 헤더가 딕셔너리에 삽입되어 있지 않다면:
>>> 딕셔너리에 헤더 삽입하고 값을 1로 세팅
>>> else:
>>> 헤더에 해당하는 값을 검색해 1을 증가시킴
새로운 헤더는 차곡차곡 딕셔너리에 쌓이게 되고
이미 딕셔너리에 있는 헤더는 사상된 숫자가 1씩 증가합니다.
결과적으로 딕셔너리 안에는 모든 종류의 헤더와,
각 헤더의 등장 빈도가 수집됩니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 53
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
섞여 있는 엑셀 파일들 중
서식이 잘못된 파일을 찾아내
다양한 방법으로 대응합니다.
[ 예제 개요 ]
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
6개월 치 업무를 하루 만에 끝내는 업무 자동화 54
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
(1) README.md
"2_4_8_서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!" 폴더로 이동해
<README.md> 파일을 열어봅니다.
6절 예제의 결과 폴더와 5절 예제의 결과 파일을 이번 예제 폴더로 복사합니다.
5절 예제 결과 파일이 템플릿이 되어, 양식이 다른 파일을 처리합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 55
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
(2) 삭제 모드로 코드 실행
$ python sorter.py merged_ID.xlsx personal_info delete
아래 명령어를 입력하면 코드가 '삭제' 모드로 실행됩니다.
코드 실행이 완료되면 <personal_info> 폴더를 열어봅니다.
서식이 잘못된 파일이 삭제되어 숫자가 듬성듬성 비어 있습니다.
결과를 확인했으니 <personal_info> 폴더를 삭제합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 56
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
(3) 보고 모드로 코드 실행
$ python sorter.py merged_ID.xlsx personal_info report
6절 코드의 결과물인 <personal_info> 폴더를 다시 예제 폴더로 복사합니다.
아래 명령을 실행하면 코드가 '보고' 모드로 실행됩니다.
코드가 실행되면 <report.txt> 파일이 새로이 생겨납니다.
양식이 잘못된 파일 목록이 기재되어 있습니다.
과제나 입사지원서류 등을 검토할 때
이름이 기재된 사람들에게 0점을 주면
평가에 걸리는 시간을 획기적으로
단축할 수 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 57
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
(4) 분리 모드로 코드 실행
$ python sorter.py merged_ID.xlsx personal_info separate
아래 명령을 실행하면 코드가 '분리'모드로 실행됩니다.
코드 실행이 완료되면 <wrong_files>라는 폴더가 생겨납니다.
양식이 잘못된 파일들만 분리되어 이 폴더로 격리됩니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 58
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
(5) 업무 자동화 코드 설계 과정
목표 정하기
1) 하나의 코드를 여러 모드로 작동시킵니다.
2) 파일의 서식을 검사합니다.
3) (삭제 모드) 파이썬에서 파일을 삭제합니다.
4) (보고 모드) 보고서 작성합니다.
5) (분리 모드) 파이썬에서 파일을 이동시킵니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) 하나의 코드를 여러 모드로 작동시키기 sys.argv
2) 파일의 서식을 검사하기 헤더의 비교
3) (삭제 모드) 파이썬에서 파일을 삭제하기 os.remove()
4) (보고 모드) 보고서 작성하기 write()
5) (분리 모드) 파이썬에서 파일을 이동시키기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 59
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
(6) 파이썬에서 파일 이동시키기
>>> file = open ("test.txt", "w")
>>> file.close()
테스트를 위한 임시 파일을 생성하겠습니다.
>>> import shutil
파이썬에서 파일을 이동 시킬 때에는 shutil 모듈을 사용합니다.
파이썬에서 기본으로 제공하는 모듈입니다.
>>> shutil.move("test.txt ", "personal_info/test.txt ")
move() 함수를 활용하면 파일을 이동시킬 수 있습니다.
첫 번째 파라미터로는 원본 파일을, 두 번째 파라미터로는 이동 후의 파일의
이름을 적어주면 됩니다.
<test.txt> 파일이 <personal_info> 폴더로 이동됩니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 60
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
섞여 있는 엑셀파일 중
서식이 올바른 파일만 골라
하나로 합칩니다.
[ 예제 개요 ]
09. 서식이 올바른 엑셀 파일, 순식간에 합치기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 61
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
09. 서식이 올바른 엑셀 파일, 순식간에 합치기
(1) README.md
"2_4_9_서식이 올바른 엑셀 파일 순식간에 합치기" 폴더로 이동해
<README.md> 파일을 열어봅니다.
6절 예제의 결과 폴더와 5절 예제의 결과 파일을 이번 예제 폴더로 복사합니다.
5절 예제 결과 파일이 템플릿이 되어 양식의 정오를 판단할 기준이 됩니다.
$ python sorter.py merge_correct.xlsx merged_ID.xlsx personal_info
6개월 치 업무를 하루 만에 끝내는 업무 자동화 62
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
09. 서식이 올바른 엑셀 파일, 순식간에 합치기
(2) 결과 파일 확인하기
<merged_FILE.xlsx> 파일이 새로이 생겨납니다. 실행해 봅니다.
양식이 올바른 파일들만 선택되어 하나로 합쳐졌습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 63
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
09. 서식이 올바른 엑셀 파일, 순식간에 합치기
(3) 업무 자동화 코드 설계 과정
목표 정하기
1) 파일을 읽어와 헤더를 비교합니다.
2) 헤더가 템플릿과 같으면 내용물만 뽑아옵니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) 엑셀 파일을 하나씩 읽어오기 for, px.get_array()
2) 헤더 추출하기 인덱싱
3) 여러 개의 엑셀 파일을 한 개로 합치기 append()
6개월 치 업무를 하루 만에 끝내는 업무 자동화 64
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
섞여 있는 엑셀파일들을 자동으로
분석하여 서식이 일치하는
파일끼리 합쳐 줍니다.
[ 예제 개요 ]
10. 서식이 서로 일치하는 엑셀 파일끼리 합치기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 65
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
10. 서식이 서로 일치하는 엑셀 파일끼리 합치기
(1) README.md
"2_4_10_서식이 올바른 엑셀 파일 순식간에 합치기" 폴더로 이동해
<README.md> 파일을 열어봅니다.
6절 예제의 결과 폴더를 이번 예제 폴더로 복사합니다.
$ python merge_same_xlsx_files.py personal_info
6개월 치 업무를 하루 만에 끝내는 업무 자동화 66
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
10. 서식이 서로 일치하는 엑셀 파일끼리 합치기
(2) 결과 파일 확인하기
<merged_personal_info> 폴더가 새로이 생겨납니다.
폴더 안에는 여러 개의 파일이 저장되어 있습니다. 하나를 열어 봅시다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 67
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
10. 서식이 서로 일치하는 엑셀 파일끼리 합치기
(2) 결과 파일 확인하기
<merged_personal_info> 폴더가 새로이 생겨납니다.
이 파일의 경우 5번째 열이 '고양이'로 변조된 파일들을 모아놓은 것입니다.
서로 양식이 같은 파일들이 합쳐져서 저장되어 있습니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 68
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
10. 서식이 서로 일치하는 엑셀 파일끼리 합치기
(3) 업무 자동화 코드 설계 과정
목표 정하기
1) 폴더 안의 파일들을 불러와 메모리 상에서 구분합니다.
2) 출력된 파일들의 내용물이 섞이지 않게 격리합니다.
목표를 달성하는 데 필요한 작업 쪼개기
1) 헤더 리스트를 정리할 빈 리스트를 만들기 []
2) 엑셀 파일의 내용물을 저장할 리스트를 저장할 리스트를 만듭니다. []
6개월 치 업무를 하루 만에 끝내는 업무 자동화 69
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
엑셀 파일의 무작위
데이터를 파괴합니다.
[ 예제 개요 ]
11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
6개월 치 업무를 하루 만에 끝내는 업무 자동화 70
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
(1) README.md
"2_4_11_엑셀 파일의 내용을 엉망으로 만들어버리는 자동화" 폴더로 이동해
<README.md> 파일을 열어봅니다.
코드 실행에 앞서 10절 예제의 결과물인 <merged_personal_info> 폴더를
이번 예제 폴더로 복사합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 71
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
(2) 결과 파일 열어보기
코드 실행 후 <merged_personal_info> 폴더의 내용물을 하나 열어봅니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 72
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
(3) 업무 자동화 코드 설계 과정
목표 정하기
1) 폴더 안의 파일을 불러오기
2) 데이터를 다양한 형태로 변조하기
3) 데이터를 일부만 파괴하기
목표를 달성하는 데 필요한 작업 쪼개기
1) 데이터를 변조하기 위한 규칙 마련하기
2) 변조할 데이터를 선택하는 방법을 마련하기
6개월 치 업무를 하루 만에 끝내는 업무 자동화 73
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
(5) 데이터를 변조하기 위한 규칙 마련하기
미리 가짜 데이터가 기록된 리스트를 제작해 두겠습니다.
>>> TERROR = ["고양이", "야옹", "야옹이", "미야옹", "팀장님사랑해요"]
random 모듈을 활용해 이 중 하나의 값을 임의로 추출합니다.
>>> import random
>>> random.choice(TERROR)
'야옹'
>>> random.choice(TERROR)
'미야옹'
추출된 값을 엑셀의 원본 데이터와 바꿔치기 하여 데이터를 변조합니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 74
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
(6) 변조할 데이터를 선택하기
코드 실행시 사용자로부터 몇 퍼센트의 데이터를 파괴할 지 입력받았습니다.
30%의 데이터를 파괴하도록 코드를 실행하였습니다.
이때 30%의 데이터를 선택하여 파괴하는 방법도 있겠습니다만 이번에는 확률
게임을 해 보겠습니다.
모든 데이터를 대상으로 확률 게임을 수행합니다. 30% 확률로 당첨입니다.
>>> for i in range(len(DATA)):
>>> for j in range(len(DATA[i]):
>>> if random.randim() < 30:
>>> data[i][j] = random.choice(TERROR)
큰 수의 법칙에 따라 결국 전체 데이터의 30% 가량 데이터가 파괴됩니다.
6개월 치 업무를 하루 만에 끝내는 업무 자동화 75
Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에!
Chapter 4 되돌아보기
• CSV파일과 엑셀 파일을 자유자재로 다룰 수 있게 되었습니다.
• 엑셀 파일의 서식을 분석하는 방법을 배웠습니다.
• 엑셀 파일을 병합하는 방법을 배웠습니다.
• 엑셀 파일의 내용물을 변조하는 방법을 배웠습니다.
• Sys.argv 활용방법을 배웠습니다.
• 파이썬에서 파일을 삭제하고 이동하는 방법을 배웠습니다.
• 대량의 엑셀 파일을 자동으로 분류하는 방법을 배웠습니다.

More Related Content

Recently uploaded

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 

Recently uploaded (6)

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Chapter 4. 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! | 6개월 치 업무를 하루 만에 끝내는 업무자동화 | 반병현

  • 1. * 책 구매시 출판사로부터 한 학기 분량의 PPT를 제공받으실 수 있습니다.
  • 2. 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! Xlsx Excel Automation CONTENTS 01. 예제용 CSV 파일 1천 개, 1초 만에 만들기 02. CSV 파일 1천 개, 1초 만에 합치기 03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기 04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기 05. 엑셀 파일 1천 개, 순식간에 하나로 합치기 06. 무작위 엑셀 파일의 서식을 망가뜨리기 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라! 09. 서식이 올바른 엑셀 파일, 순식간에 합치기 10. 서식이 서로 일치하는 엑셀 파일끼리 합치기 11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
  • 3. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 3 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! • 엑셀 파일을 읽어와 양식과 내용 분석하기 • 엑셀 파일 내용물이 기재된 2차원 리스트 편집하기 • 문서의 내용물에 무작위로 접근하는 기법 익히기 • 엑셀 파일을 자유자재로 편집하기 • 엑셀 파일의 서식을 분석하는 기법 공부하기 • 엑셀 파일의 서식에 따라 파일을 분류하고 합치는 기법 공부하기 파이썬을 활용하여 엑셀 파일을 자유자재로 다루는 자동화를 공부합니다 [단원의 주요 목표]
  • 4. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 4 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 엑셀 자동화 예제를 위해 개인정보가 기재된 CSV파일 1천 개를 제작합니다. [ 예제 개요 ] 01. 예제용 CSV 파일 1천 개, 1초 만에 만들기
  • 5. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 5 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 01. 예제용 CSV 파일 1천 개, 1초 만에 만들기 (1) 코드 실행하기 “2_4_1_예제용 CSV 파일 1천 개, 1초 만에 만들기”폴더로 이동해 Git Bash를 실행합니다. 그리고 아래 코드를 실행합니다. $ python sample_csv_generator.py 잠시 뒤 <personal_info> 폴더가 새로이 생겨납니다. 폴더 내부에는 가짜 개인정보 파일 1천 개가 저장되어 있습니다. (2) 결과물 파일 열어보기
  • 6. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 6 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 01. 예제용 CSV 파일 1천 개, 1초 만에 만들기 (3) 업무 자동화 코드 설계 과정 목표 정하기 개인정보 파일 1천 개를 제작합니다. 그런데 이왕이면 예쁜 양식으로 정리된 CSV 파일로 제작합니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) 헤더 만들기 2) 개인정보 내용물 사이사이에 콤마(“, “)를 넣어 정리하기 “, ”.join()
  • 7. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 7 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 01. 예제용 CSV 파일 1천 개, 1초 만에 만들기 (4) 헤더 만들기 >>> header = “name, age, e-mail, division, telephone, sexn” 위 CSV 파일의 헤더는 아래와 같은 형태입니다. “name, age, e-mail, division, telephone, sex” 아래와 같이 바로 스트링으로 제작해 줘도 됩니다. >>> headerList = [“name”, “age”, “e-mail”, “division”, “telephone”, “sex”] >>> header = “, ”.join(headerList) + “n” Join()을 활용하면 아래와 같이 표현할 수도 있습니다.
  • 8. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 8 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! CSV 파일 1천 개를 양식을 유지하며 하나로 합칩니다. [ 예제 개요 ] 02. CSV 파일 1천 개, 1초 만에 합치기
  • 9. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 9 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 02. CSV 파일 1천 개, 1초 만에 합치기 (1) 코드 실행하기 1절에서 만든 <personal_info> 폴더를 “2_4_2_CSV 파일 1천 개, 1초 만에 합치기”폴더로 복사합니다. 그리고 Git Bash를 실행하여 아래 코드를 실행합니다. $ python simple_mergy.py personal_info 잠시 뒤 <simple_merged_ID.csv> 파일이 새로이 생겨납니다.
  • 10. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 10 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 02. CSV 파일 1천 개, 1초 만에 합치기 (2) 결과물 파일 열어보기 <simple_merged_ID.csv> 파일을 열어보겠습니다. CSV 파일들이 하나로 합쳐져 있지만 헤더의 분리가 되어 있지 않습니다.
  • 11. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 11 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 02. CSV 파일 1천 개, 1초 만에 합치기 (2) 결과물 파일 열어보기 엑셀의 <정렬> 기능을 활용하여 헤더를 분리할 수 있습니다. 본격적으로 헤더를 관리하는 예제는 다음 절에서 소개합니다.
  • 12. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 12 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! CSV파일의 헤더를 분리하며 내용물을 하나로 합칩니다. [ 예제 개요 ] 03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기
  • 13. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 13 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기 (1) 코드 실행하기 1절에서 만든 <personal_info> 폴더를 “2_4_3_CSV 파일 1천 개, 양식을 유지하며 하나로 합치기”폴더로 복사합니다. 그리고 Git Bash를 실행하여 아래 코드를 실행합니다. $ python mergy.py personal_info 잠시 뒤 <merged_ID.csv> 파일이 새로이 생겨납니다.
  • 14. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 14 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기 (2) 결과물 파일 열어보기
  • 15. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 15 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기 (3) 업무 자동화 코드 설계 과정 목표 정하기 1) 파일들을 하나로 합치기 2) 합쳐지는 과정에서 양식을 유지하기 목표를 달성하는 데 필요한 작업 쪼개기 1) 헤더와 데이터를 분리하기 2) 헤더는 파일에 한 번만 기록하고, 데이터는 하나씩 모두 기록하기
  • 16. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 16 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 03. CSV 파일 1천 개, 양식을 유지하며 하나로 합치기 (4) CSV 파일의 헤더 분리 편의성 CSV파일은 첫 번째 줄에 헤더가 위치하고, 두 번째 줄부터 다른 내용물들이 위치합니다. 따라서 readline()을 활용해 손쉽게 헤더를 분리할 수 있습니다. 이어서 read()를 실행해 본문의 나머지 내용을 한꺼번에 모두 불러옵니다. CSV 파일의 헤더와 콘텐츠 분리는 아래와 같이 두 줄의 코드로 실행 가능합니다. >>> f = open(“test.csv”) >>> header = f.readline() >>> contents = f.read()
  • 17. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 17 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! Xlsx 엑셀 문서를 자동으로 작성하는 방법을 공부합니다. [ 예제 개요 ] 04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기
  • 18. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 18 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기 (1) 코드 실행하기 “2_4_4_예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기” 폴더에서 Git Bash를 실행합니다. $ pip install pyexcel pyexcel-xlsx ※ 주의사항 이번 예제는 PyExcel 라이브러리를 사용합니다. 라이브러리가 설치되어 있지 않다면 아래와 같이 설치해 주세요. 라이브러리가 준비되었다면 아래와 같이 코드를 실행합니다. $ python sample_xlsx_generator.py 잠시 뒤 <personal_info> 폴더가 새로이 생겨납니다.
  • 19. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 19 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기 (2) 결과물 파일 열어보기 <personal_info> 폴더 내부의에 xlsx 엑셀 문서 1천 건이 새로이 생겨났습니다. 내용물을 실행해 봅니다.
  • 20. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 20 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기 (3) 업무 자동화 코드 설계 과정 목표 정하기 1) 1절에서 짠 코드를 최대한 재활용합니다. 2) 포맷만 CSV에서 Xlsx로 바꿉니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) 데이터를 “, ”로 구분된 문자열이 아니라 리스트 형태로 가공합니다. 2) 가공된 리스트를 save_as() 함수를 이용해 엑셀로 저장합니다.
  • 21. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 21 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 04. 예제용 엑셀 파일 1천 개, 엔터키 한 번에 만들기 (4) CSV 대신 리스트로 표현하기 다음은 1절 예제 코드의 일부입니다. 다음은 이번 예제 코드의 일부입니다. Join() 함수를 활용하는 대신 리스트를 바로 활용하는 방식으로 표를 표현하는 방식을 수정하여 활용합니다.
  • 22. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 22 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! Xlsx 엑셀 파일 1천개를 하나의 xlsx 엑셀 파일로 합쳐 봅니다. [ 예제 개요 ] 05. 엑셀 파일 1천 개, 순식간에 하나로 합치기
  • 23. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 23 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 05. 엑셀 파일 1천 개, 순식간에 하나로 합치기 (1) 코드 실행하기 4절에서 생성한 <personal_info> 폴더를 “2_4_5_엑셀 파일 1천 개, 순식간에 하나로 합치기” 폴더로 복사합니다. Git Bash를 실행하여 아래 명령어를 실행합니다. $ python merge.py personal_info 코드를 실행하면 폴더 안에 엑셀 파일이 새롭게 생겨납니다. 이 파일을 활용해 앞으로 다양한 예제를 수행해 볼 것입니다.
  • 24. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 24 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 05. 엑셀 파일 1천 개, 순식간에 하나로 합치기 (2) 결과물 파일 열어보기
  • 25. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 25 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 05. 엑셀 파일 1천 개, 순식간에 하나로 합치기 (3) 업무 자동화 코드 설계 과정 목표 정하기 1) 엑셀 파일 불러옵니다. 2) 헤더는 떼어내고 데이터만 추출합니다. 3) 새로운 엑셀 파일 생성합니다. 4) 헤더를 한 번만 삽입하고, 데이터를 모두 옮겨 적습니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) xlsx 파일을 파이썬에서 열어보기 2) 열어온 파일에서 헤더를 분리하기
  • 26. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 26 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 05. 엑셀 파일 1천 개, 순식간에 하나로 합치기 (4) 엑셀 파일을 리스트로 불러오기 >>> array = px.get_array(“personal_info/0_박지진.xlsx”) >>> array [[“name”, “age”, “e-mail”, “division”, “telephone”, “sex”], [“박지진”, “18”, rrl9c53l@bhban.com, “pcz”, “010-1618-0416”, “female”]] 엑셀 파일 편집을 위하여 PyExcel 라이브러리를 불러옵니다. >>> import pyexcel as px 아래와 같이 get_array() 함수를 활용하면 엑셀 파일을 리스트로 불러올 수 있습니다.
  • 27. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 27 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 05. 엑셀 파일 1천 개, 순식간에 하나로 합치기 (5) 헤더와 데이터의 분리 >>> header = array[0] >>> contents = array[1:] >>> header [“name”, “age”, “e-mail”, “division”, “telephone”, “sex”] >>> contents [“박지진”, “18”, rrl9c53l@bhban.com, “pcz”, “010-1618-0416”, “female”] 아래와 같이 첫 번째 원소를 인덱싱하여 헤더를 추출할 수 있습니다. 본문의 데이터는 몇 줄 짜리인지 알 수 없으므로 슬라이싱을 활용합니다.
  • 28. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 28 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 무작위 엑셀 파일의 서식을 망가뜨립니다. [ 예제 개요 ] 06. 무작위 엑셀 파일의 서식을 망가뜨리기
  • 29. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 29 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (1) README.md <README.md> 를 파이참에서 실행합니다. 좌측 화면에는 마크다운(Markdown) 코드가 기재되어 있습니다. 우측에는 다듬어진 문서가 표현됩니다. 모든 예제에는 코드 실행 방법을 안내하는 <README.md> 파일이 제공됩니다.
  • 30. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 30 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (1) README.md
  • 31. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 31 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (2) 코드 실행하기 $ python anarchist.py personal_info 30 코드를 실행하면 personal_info 폴더 안에 있는 1천 개의 파일 중 30%의 파일이 파괴됩니다. 4절에서 생성한 <personal_info> 폴더를 복사하여 “2_4_6_무작위 엑셀 파일의 서식을 망가뜨리자” 폴더로 복사합니다. Git Bash를 실행하여 아래와 같이 코드를 실행합니다.
  • 32. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 32 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (3) 결과 파일 살펴보기 파괴되지 않은 원본 파일
  • 33. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 33 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (3) 결과 파일 살펴보기 무작위 열이 복제된 파일 무작위 열이 삭제된 파일
  • 34. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 34 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (3) 결과 파일 살펴보기 무작위 열의 값이 조작된 파일
  • 35. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 35 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (4) 업무 자동화 코드 설계 과정 목표 정하기 1) 몇 퍼센트의 파일을 파괴할 것인지 입력받습니다. 2) 무작위 열을 선택하여 삭제합니다. 3) 무작위 열을 선택하여 복제합니다. 4) 무작위 열을 선택하여 내용물을 조작합니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) 코드를 실행할 때 사용자에게 숫자(퍼센트)를 입력받기 sys.argv 2) 지정받은 개수 만큼의 파일만 파괴하기 3) 엑셀 파일을 읽어와 하나의 열을 무작위로 선택하기 random.randint() 4) 엑셀 파일의 열을 삭제합니다. 5) 엑셀 파일에 열을 추가합니다. 6) 엑셀 파일의 열을 선택해 내용물을 조작합니다.
  • 36. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 36 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (5) 입력받은 개수 만큼의 파일만 파괴하기 >>> import random >>> random.shuffle(fileList) >>> import os >>> fileList = os.listdir(“personal_info") os.listdir()을 활용해 폴더 내의 파일 목록을 받아옵니다. random 모듈의 shuffle() 함수를 이용하여 fileList의 내용물을 섞어버립니다. >>> target = fileList[: N] 슬라이싱을 통해 맨 앞의 N개만 뽑아옵니다. 이로써 파괴할 파일 N개를 랜덤으로 추출하는 과정이 끝납니다.
  • 37. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 37 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (6) 엑셀 파일의 열을 무작위로 선택하기 >>> random.randint(0, 5) random.randint를 활용하면 임의의 정수를 받아올 수 있습니다. 아래 코드를 실행하면 0, 1, 2, 3, 4, 5 총 6개의 숫자 중 하나가 무작위로 선택됩니다. 엑셀 파일 안에 총 6개의 열이 있다면 위 방법으로 열의 인덱스를 지정할 수 있습니다. 엑셀 파일 안에 몇 개의 열이 있는 지 모를 때에는 아래와 같이 len() 함수를 활용합니다. >>> array = px.get_array(“personal_info/0_박지진.xlsx”) >>> num_columns = len(array[0]) >>> random.randint(0, num_columns – 1)
  • 38. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 38 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (6) 엑셀 파일의 열을 삭제하기 >>> array = px.get_array(“personal_info/0_박지진.xlsx”) 아래와 같이 PyExcel의 get_array() 함수로 파일로 불러옵니다. >>> array.delete_columns([0]) PyExcel에서 제공하는 기능인 delete_column() 함수를 사용하겠습니다. 아래 코드를 실행하면 0번째 인덱스에 있는 열이 삭제됩니다. >>> array.delete_columns([3]) 3번째 인덱스의 열을 삭제하려면 아래와 같이 숫자를 수정해 줍니다. >>> array.delete_columns([1, 3, 5]) 동시에 여러 개의 열을 삭제하려면 여러 개의 인덱스를 입력합니다.
  • 39. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 39 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (6) 엑셀 파일의 열을 삭제하기 >>> array = px.get_array(“personal_info/0_박지진.xlsx”) >>> num_columns = len(array[0]) >>> target = random.randint(0, num_columns - 1) >>> array.delete_columns([target]) random.randint()와 함께 사용하면 무작위 열을 삭제할 수 있습니다.
  • 40. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 40 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (7) 엑셀 파일의 열을 복제하기 >>> a = [1, 3, 5] >>> b = a.copy() >>> b [1, 2, 3] 아래와 같이 copy() 함수를 사용해 리스트를 복제할 수 있습니다. >>> array = px.get_array(“personal_info/0_박지진.xlsx”) >>> array.column[0] ["name", "박지진"] >>> array.column[1] ["age", "46"] 인덱싱을 통해 특정 열을 리스트로 받아올 수 있습니다. >>> copied_column = file.column[2].copy() 따라서 copy()로 엑셀 파일의 열을 리스트로 복제할 수 있습니다.
  • 41. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 41 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (8) 엑셀 파일에 열을 추가하기 >>> [1, 3, 5] + [1, 3, 5] [1, 3, 5, 1, 3, 5] 리스트의 덧셈 연산은 리스트를 서로 이어 붙입니다. >>> array = px.get_array(“personal_info/0_박지진.xlsx”) >>> array.column += duplicated_column PyExcel은 열을 리스트 형태로 제공합니다. 아래 코드를 실행하여 엑셀 파일에 새로운 열을 추가할 수 있습니다. >>> target = random.randint(0, len(array[0]) - 1) >>> array.column += array.column[target].copy() random.randint()를 함께 사용하면 무작위 열을 복제하여 추가할 수 있습니다.
  • 42. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 42 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (9) 무작위 열의 내용물을 조작하는 방법 무작위 열을 불러옵니다. >>> target = random.randint(0, len(array[0]) - 1) >>> target_column = array.column[target] 원본 데이터를 수정할 것이므로 copy()를 사용하지 않습니다. 이후 target_column 리스트의 내용물을 직접 수정하면 됩니다.
  • 43. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 43 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 06. 무작위 엑셀 파일의 서식을 망가뜨리기 (10) 리스트의 내용물을 모두 같은 값으로 변경하기 for문을 활용하면 편리합니다. >>> a = [1, 2, 3, 4, 5] >>> for i in range(len(a)): >>> a[i] = "고양이" >>> a ['고양이', '고양이', '고양이', '고양이', '고양이'] 아래와 같이 for문을 한 줄로 단축할 수도 있습니다. >>> a = [1, 2, 3, 4, 5] >>> a = ["고양이" for i in range(a))] 위 방법을 응용하면 엑셀 파일의 열을 빠르고 쉽게 조작할 수 있습니다.
  • 44. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 44 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 섞여 있는 엑셀 파일을 탐색하여 서식이 몇 종류인지 분석합니다. [ 예제 개요 ] 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기
  • 45. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 45 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (1) README.md "2_4_7_섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기" 폴더로 이동해 <README.md> 파일을 열어봅니다. 6절 예제의 결과 폴더를 이번 예제 폴더로 복사합니다. 이후 Git Bash를 실행하여 <README.md>의 설명을 따라 코드를 실행합니다.
  • 46. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 46 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (2) 결과 파일 살펴보기 예제가 실행되면 <report.txt> 파일이 새로이 생겨납니다. 실행해 봅니다. <personal_info> 폴더 안에 있는 엑셀 파일들의 헤더를 분석한 보고서입니다. 헤더의 종류와, 등장 회수가 기재되어 있습니다.
  • 47. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 47 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (3) 업무 자동화 코드 설계 과정 목표 정하기 1) 저장할 보고서 파일의 이름을 입력받습니다. 2) 파일을 하나씩 읽어 헤더를 분석합니다. 3) 헤더가 몇 종류인지 분석합니다. 4) 각 헤더가 가진 파일이 몇 개인지 분석합니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) 헤더 쪼개기 인덱싱 2) 헤더 종류를 저장해 둘 변수를 만들기 3) 헤더 개수를 저장해 둘 변수 만들기
  • 48. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 48 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (4) 딕셔너리 딕셔너리는 사전이라는 뜻입니다. 사전의 역할은 키(value)를 값(value)에 사상시키는 것입니다. 예시를 살펴 봅시다. Key Value apple 사과 agriculture 농업 brown 갈색의 crown 왕관 사전은 대량의 정보를 효율적으로 제공할 수 있는 도구입니다. 파이썬의 딕셔너리 또한 Key를 value로 사상시키는 도구입니다.
  • 49. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 49 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (4) 딕셔너리 딕셔너리는 중괄호 {}를 활용하여 정의합니다. 아래 코드는 텅 빈 딕셔너리를 제작하는 코드입니다. >>> myDict = {} 아래 코드는 딕셔너리에 두 개의 원소를 삽입하여 정의하는 코드입니다. >>> myDict = {'a' : 1, 'b' : 2} Key Value a 1 b 2 위 딕셔너리의 구조는 아래와 같습니다. 'a'를 1로, 'b'를 2로 사상시킵니다.
  • 50. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 50 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (4) 딕셔너리 딕셔너리 값의 접근은 리스트의 인덱싱과 같이 대괄호를 사용합니다. >>> myDict = {'a' : 1, 'b' : 2} >>> myDict['a'] 1 >>> myDict['b'] 2 딕셔너리에 들어있지 않은 키를 검색하면 에러가 발생합니다. >>> myDict['c'] Traceback KeyError: 'c'
  • 51. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 51 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (4) 딕셔너리 딕셔너리에 새로운 값을 추가할 때에도 대괄호를 사용합니다. >>> myDict = {'a' : 1, 'b' : 2} >>> myDict['c'] = 3 {'a' : 1, 'b' : 2, 'c' : 3} >>> myDict['c'] 3 딕셔너리에 이미 저장되어 있는 값을 변경할 수도 있습니다. >>> myDict['c'] = myDict['c'] + 1 >>> myDict['c'] 4 >>> myDict['c'] += 1 >>> myDict['c'] 5
  • 52. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 52 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 07. 섞여 있는 엑셀 파일 1천 개, 서식이 몇 종류인지 분석하기 (5) 딕셔너리를 사용해 헤더 기록하기 for문을 활용하여 파일을 하나씩 불러오며 아래 작업을 수행합니다. >>> 헤더 쪼개기 >>> if 헤더가 딕셔너리에 삽입되어 있지 않다면: >>> 딕셔너리에 헤더 삽입하고 값을 1로 세팅 >>> else: >>> 헤더에 해당하는 값을 검색해 1을 증가시킴 새로운 헤더는 차곡차곡 딕셔너리에 쌓이게 되고 이미 딕셔너리에 있는 헤더는 사상된 숫자가 1씩 증가합니다. 결과적으로 딕셔너리 안에는 모든 종류의 헤더와, 각 헤더의 등장 빈도가 수집됩니다.
  • 53. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 53 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 섞여 있는 엑셀 파일들 중 서식이 잘못된 파일을 찾아내 다양한 방법으로 대응합니다. [ 예제 개요 ] 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!
  • 54. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 54 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라! (1) README.md "2_4_8_서식이 잘못된 엑셀 파일을 찾아내고, 처리해라!" 폴더로 이동해 <README.md> 파일을 열어봅니다. 6절 예제의 결과 폴더와 5절 예제의 결과 파일을 이번 예제 폴더로 복사합니다. 5절 예제 결과 파일이 템플릿이 되어, 양식이 다른 파일을 처리합니다.
  • 55. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 55 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라! (2) 삭제 모드로 코드 실행 $ python sorter.py merged_ID.xlsx personal_info delete 아래 명령어를 입력하면 코드가 '삭제' 모드로 실행됩니다. 코드 실행이 완료되면 <personal_info> 폴더를 열어봅니다. 서식이 잘못된 파일이 삭제되어 숫자가 듬성듬성 비어 있습니다. 결과를 확인했으니 <personal_info> 폴더를 삭제합니다.
  • 56. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 56 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라! (3) 보고 모드로 코드 실행 $ python sorter.py merged_ID.xlsx personal_info report 6절 코드의 결과물인 <personal_info> 폴더를 다시 예제 폴더로 복사합니다. 아래 명령을 실행하면 코드가 '보고' 모드로 실행됩니다. 코드가 실행되면 <report.txt> 파일이 새로이 생겨납니다. 양식이 잘못된 파일 목록이 기재되어 있습니다. 과제나 입사지원서류 등을 검토할 때 이름이 기재된 사람들에게 0점을 주면 평가에 걸리는 시간을 획기적으로 단축할 수 있습니다.
  • 57. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 57 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라! (4) 분리 모드로 코드 실행 $ python sorter.py merged_ID.xlsx personal_info separate 아래 명령을 실행하면 코드가 '분리'모드로 실행됩니다. 코드 실행이 완료되면 <wrong_files>라는 폴더가 생겨납니다. 양식이 잘못된 파일들만 분리되어 이 폴더로 격리됩니다.
  • 58. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 58 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라! (5) 업무 자동화 코드 설계 과정 목표 정하기 1) 하나의 코드를 여러 모드로 작동시킵니다. 2) 파일의 서식을 검사합니다. 3) (삭제 모드) 파이썬에서 파일을 삭제합니다. 4) (보고 모드) 보고서 작성합니다. 5) (분리 모드) 파이썬에서 파일을 이동시킵니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) 하나의 코드를 여러 모드로 작동시키기 sys.argv 2) 파일의 서식을 검사하기 헤더의 비교 3) (삭제 모드) 파이썬에서 파일을 삭제하기 os.remove() 4) (보고 모드) 보고서 작성하기 write() 5) (분리 모드) 파이썬에서 파일을 이동시키기
  • 59. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 59 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 08. 서식이 잘못된 엑셀 파일을 찾아내고, 처리해라! (6) 파이썬에서 파일 이동시키기 >>> file = open ("test.txt", "w") >>> file.close() 테스트를 위한 임시 파일을 생성하겠습니다. >>> import shutil 파이썬에서 파일을 이동 시킬 때에는 shutil 모듈을 사용합니다. 파이썬에서 기본으로 제공하는 모듈입니다. >>> shutil.move("test.txt ", "personal_info/test.txt ") move() 함수를 활용하면 파일을 이동시킬 수 있습니다. 첫 번째 파라미터로는 원본 파일을, 두 번째 파라미터로는 이동 후의 파일의 이름을 적어주면 됩니다. <test.txt> 파일이 <personal_info> 폴더로 이동됩니다.
  • 60. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 60 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 섞여 있는 엑셀파일 중 서식이 올바른 파일만 골라 하나로 합칩니다. [ 예제 개요 ] 09. 서식이 올바른 엑셀 파일, 순식간에 합치기
  • 61. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 61 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 09. 서식이 올바른 엑셀 파일, 순식간에 합치기 (1) README.md "2_4_9_서식이 올바른 엑셀 파일 순식간에 합치기" 폴더로 이동해 <README.md> 파일을 열어봅니다. 6절 예제의 결과 폴더와 5절 예제의 결과 파일을 이번 예제 폴더로 복사합니다. 5절 예제 결과 파일이 템플릿이 되어 양식의 정오를 판단할 기준이 됩니다. $ python sorter.py merge_correct.xlsx merged_ID.xlsx personal_info
  • 62. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 62 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 09. 서식이 올바른 엑셀 파일, 순식간에 합치기 (2) 결과 파일 확인하기 <merged_FILE.xlsx> 파일이 새로이 생겨납니다. 실행해 봅니다. 양식이 올바른 파일들만 선택되어 하나로 합쳐졌습니다.
  • 63. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 63 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 09. 서식이 올바른 엑셀 파일, 순식간에 합치기 (3) 업무 자동화 코드 설계 과정 목표 정하기 1) 파일을 읽어와 헤더를 비교합니다. 2) 헤더가 템플릿과 같으면 내용물만 뽑아옵니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) 엑셀 파일을 하나씩 읽어오기 for, px.get_array() 2) 헤더 추출하기 인덱싱 3) 여러 개의 엑셀 파일을 한 개로 합치기 append()
  • 64. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 64 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 섞여 있는 엑셀파일들을 자동으로 분석하여 서식이 일치하는 파일끼리 합쳐 줍니다. [ 예제 개요 ] 10. 서식이 서로 일치하는 엑셀 파일끼리 합치기
  • 65. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 65 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 10. 서식이 서로 일치하는 엑셀 파일끼리 합치기 (1) README.md "2_4_10_서식이 올바른 엑셀 파일 순식간에 합치기" 폴더로 이동해 <README.md> 파일을 열어봅니다. 6절 예제의 결과 폴더를 이번 예제 폴더로 복사합니다. $ python merge_same_xlsx_files.py personal_info
  • 66. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 66 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 10. 서식이 서로 일치하는 엑셀 파일끼리 합치기 (2) 결과 파일 확인하기 <merged_personal_info> 폴더가 새로이 생겨납니다. 폴더 안에는 여러 개의 파일이 저장되어 있습니다. 하나를 열어 봅시다.
  • 67. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 67 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 10. 서식이 서로 일치하는 엑셀 파일끼리 합치기 (2) 결과 파일 확인하기 <merged_personal_info> 폴더가 새로이 생겨납니다. 이 파일의 경우 5번째 열이 '고양이'로 변조된 파일들을 모아놓은 것입니다. 서로 양식이 같은 파일들이 합쳐져서 저장되어 있습니다.
  • 68. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 68 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 10. 서식이 서로 일치하는 엑셀 파일끼리 합치기 (3) 업무 자동화 코드 설계 과정 목표 정하기 1) 폴더 안의 파일들을 불러와 메모리 상에서 구분합니다. 2) 출력된 파일들의 내용물이 섞이지 않게 격리합니다. 목표를 달성하는 데 필요한 작업 쪼개기 1) 헤더 리스트를 정리할 빈 리스트를 만들기 [] 2) 엑셀 파일의 내용물을 저장할 리스트를 저장할 리스트를 만듭니다. []
  • 69. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 69 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 엑셀 파일의 무작위 데이터를 파괴합니다. [ 예제 개요 ] 11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화
  • 70. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 70 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화 (1) README.md "2_4_11_엑셀 파일의 내용을 엉망으로 만들어버리는 자동화" 폴더로 이동해 <README.md> 파일을 열어봅니다. 코드 실행에 앞서 10절 예제의 결과물인 <merged_personal_info> 폴더를 이번 예제 폴더로 복사합니다.
  • 71. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 71 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화 (2) 결과 파일 열어보기 코드 실행 후 <merged_personal_info> 폴더의 내용물을 하나 열어봅니다.
  • 72. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 72 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화 (3) 업무 자동화 코드 설계 과정 목표 정하기 1) 폴더 안의 파일을 불러오기 2) 데이터를 다양한 형태로 변조하기 3) 데이터를 일부만 파괴하기 목표를 달성하는 데 필요한 작업 쪼개기 1) 데이터를 변조하기 위한 규칙 마련하기 2) 변조할 데이터를 선택하는 방법을 마련하기
  • 73. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 73 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화 (5) 데이터를 변조하기 위한 규칙 마련하기 미리 가짜 데이터가 기록된 리스트를 제작해 두겠습니다. >>> TERROR = ["고양이", "야옹", "야옹이", "미야옹", "팀장님사랑해요"] random 모듈을 활용해 이 중 하나의 값을 임의로 추출합니다. >>> import random >>> random.choice(TERROR) '야옹' >>> random.choice(TERROR) '미야옹' 추출된 값을 엑셀의 원본 데이터와 바꿔치기 하여 데이터를 변조합니다.
  • 74. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 74 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! 11. 엑셀 파일의 내용을 엉망으로 만들어버리는 자동화 (6) 변조할 데이터를 선택하기 코드 실행시 사용자로부터 몇 퍼센트의 데이터를 파괴할 지 입력받았습니다. 30%의 데이터를 파괴하도록 코드를 실행하였습니다. 이때 30%의 데이터를 선택하여 파괴하는 방법도 있겠습니다만 이번에는 확률 게임을 해 보겠습니다. 모든 데이터를 대상으로 확률 게임을 수행합니다. 30% 확률로 당첨입니다. >>> for i in range(len(DATA)): >>> for j in range(len(DATA[i]): >>> if random.randim() < 30: >>> data[i][j] = random.choice(TERROR) 큰 수의 법칙에 따라 결국 전체 데이터의 30% 가량 데이터가 파괴됩니다.
  • 75. 6개월 치 업무를 하루 만에 끝내는 업무 자동화 75 Chapter 04 컴퓨터! 엑셀 정리 좀 해놔, 10초 안에! Chapter 4 되돌아보기 • CSV파일과 엑셀 파일을 자유자재로 다룰 수 있게 되었습니다. • 엑셀 파일의 서식을 분석하는 방법을 배웠습니다. • 엑셀 파일을 병합하는 방법을 배웠습니다. • 엑셀 파일의 내용물을 변조하는 방법을 배웠습니다. • Sys.argv 활용방법을 배웠습니다. • 파이썬에서 파일을 삭제하고 이동하는 방법을 배웠습니다. • 대량의 엑셀 파일을 자동으로 분류하는 방법을 배웠습니다.