라벨이 엑셀 자동화인 게시물 표시

엑셀로는 안 열리는 200만 행 대용량 데이터, 파이썬으로 1초 만에 요약하기

 회사에서 수년간 누적된 판매 데이터나 웹사이트 로그 데이터를 다운로드해 본 적 있으신가요? 파일 용량이 500MB를 넘어가고, 엑셀로 더블클릭해서 열었더니 화면 상단에 "데이터가 너무 많아 완전히 로드되지 않았습니다"라는 무시무시한 경고창이 뜹니다. 스크롤을 맨 밑으로 내려보면 정확히 1,048,576행에서 데이터가 싹둑 잘려 있습니다. 엑셀이라는 프로그램이 태생적으로 담을 수 있는 최대 한계치가 약 104만 행이기 때문입니다. 그 이상의 데이터는 엑셀로는 아예 열어볼 수조차 없습니다. 결국 데이터를 월별로 쪼개서 다운받는 등 불필요한 노가다를 해야 하죠. 하지만 파이썬에게 데이터의 한계란 '컴퓨터 메모리(RAM)의 한계'일 뿐입니다. 오늘은 엑셀은 쳐다보지도 못하는 200만 행, 1,000만 행의 대용량 데이터를 파이썬으로 가볍게 다루는 심화 기술을 알아보겠습니다. 1. 대용량 데이터의 표준, CSV 파일 불러오기 보통 100만 행이 넘어가는 대용량 데이터는 .xlsx 포맷이 아니라 .csv 포맷으로 저장되어 있습니다. CSV는 서식 없이 콤마(,)로만 데이터를 구분한 순수 텍스트 파일이라 용량이 훨씬 가볍기 때문입니다. 판다스에서 CSV 파일을 불러오는 방법은 엑셀과 거의 똑같습니다. read_excel 대신 read_csv 만 써주면 됩니다. import pandas as pd df = pd.read_csv('3년치_전체판매로그.csv') 엑셀이 열다가 기절해버린 200만 행짜리 파일도, 파이썬에서는 위 코드 한 줄이면 단 몇 초 만에 데이터 프레임(표)으로 변환되어 메모리에 척척 올라갑니다. 이제 13편에서 배웠던 피벗 테이블 코드를 돌리면 200만 행의 데이터도 순식간에 요약할 수 있습니다. 2. 컴퓨터가 멈춘다면? 마법의 옵션 chunksize 파이썬이 아무리 강력해도, 내 컴퓨터의 램(RAM) 메모리가 8GB밖에 안 되는데 10GB짜리 초거대 데이터를 한 번에 불러오려 ...

파이썬 몰라도 더블클릭이면 끝! 자동화 코드 bat 파일로 원클릭 실행하기

지난 14편 동안 우리는 파이썬과 판다스(Pandas)를 이용해 흩어진 엑셀 파일을 하나로 합치고, 불필요한 데이터를 청소하고, 피벗 테이블로 요약한 뒤, 예쁜 차트까지 엑셀에 쏙 집어넣는 완벽한 자동화 코드를 완성했습니다. 여기까지 따라오시느라 정말 고생 많으셨습니다! 하지만 진정한 자동화는 여기서 끝이 아닙니다. 매일 아침 출근해서 이 코드를 실행하기 위해 주피터 노트북(Jupyter)이나 VS Code 같은 파이썬 편집기를 켜고, 코드 실행 버튼을 누르는 과정조차 귀찮지 않으신가요? 게다가 이 훌륭한 결과물을 파이썬이 안 깔려 있는 다른 팀원들에게 공유하고 싶을 때는 어떻게 해야 할까요? 오늘은 파이썬 코드를 일반 프로그램처럼 아이콘 '더블클릭' 한 번으로 실행하게 만들어주는 마법, bat(배치) 파일 만들기 를 배워보겠습니다. 1. 윈도우 메모장 하나면 준비 끝! 거창한 프로그램이 필요하지 않습니다. 윈도우에 기본으로 깔려있는 '메모장(Notepad)'을 엽니다. 그리고 딱 두 줄만 적어주면 됩니다. (여러분이 작성한 파이썬 코드 파일 이름이 auto_report.py 라고 가정해 보겠습니다.) python auto_report.py pause python auto_report.py : 컴퓨터에게 "파이썬으로 이 파일을 실행해 줘!"라고 내리는 명령입니다. pause : 코드가 실행된 후 까만색 명령 프롬프트 창이 휙 꺼지지 않고, 우리가 결과를 확인하거나 에러 메시지를 읽을 수 있도록 화면을 잠시 멈춰주는 역할을 합니다. 2. 저장할 때 주의사항: 확장자를 .bat으로! 메모장에 두 줄을 적었다면 [파일] - [다른 이름으로 저장] 을 누릅니다. 여기서 실무자들이 가장 많이 하는 실수가 있습니다. 파일 이름을 그냥 적고 저장하면 실행.bat.txt 처럼 단순한 메모장 파일로 저장되어 버립니다. 반드시 저장 창 아래쪽에 있는 [파일 형식]을 '텍스트 ...

엑셀 차트 필요 없다! 파이썬으로 1초 만에 그래프 그리고 엑셀에 자동 삽입하기

 데이터를 깔끔하게 다듬고 피벗 테이블로 요약까지 마쳤다면, 이제 방점을 찍을 차례입니다. 숫자가 빼곡한 표만으로는 팀장님의 마음을 사로잡을 수 없습니다. 직관적으로 한눈에 들어오는 '그래프(차트)'가 반드시 필요하죠. 엑셀에서 차트를 그리려면 데이터 범위를 드래그하고, 삽입 탭에 가서 차트 종류를 고르고, 축 제목을 바꾸고, 색상을 변경하는 등 마우스 클릭을 수십 번 해야 합니다. 매달 데이터가 바뀔 때마다 이 작업을 반복하는 것은 엄청난 스트레스입니다. 하지만 파이썬에서는 표에 있는 숫자를 그래프로 바꾸고, 심지어 엑셀 파일 안에 예쁘게 배치하는 것까지 단 몇 줄의 코드로 완벽하게 자동화할 수 있습니다. 1. 표를 1초 만에 그림으로: df.plot() 파이썬 판다스(Pandas)에는 데이터 프레임(표)을 즉시 그래프로 바꿔주는 아주 편리한 plot() 기능이 내장되어 있습니다. 13편에서 만든 부서별 매출액 피벗 테이블(pivot_df)이 있다고 가정해 봅시다. 이 표를 막대그래프로 보고 싶다면 어떻게 할까요? pivot_df.plot(kind='bar') 놀랍게도 이게 끝입니다. kind='bar' 는 막대그래프, kind='line' 은 꺾은선그래프를 의미합니다. 이 코드 한 줄이면 파이썬이 표의 행과 열을 알아서 분석해 X축과 Y축을 설정하고 알록달록한 그래프를 화면에 띄워줍니다. 2. 실무자 필수 팁: 한글 깨짐 방지 폰트 설정 여기서 한국인 실무자들이 100% 마주치는 에러가 있습니다. 파이썬 그래프의 기본 폰트는 영어 전용이라서, 부서명 같은 한글 데이터가 전부 네모 박스(ㅁㅁㅁ)로 깨져서 나옵니다. 이때는 당황하지 마시고 코드 맨 위에 '맑은 고딕' 폰트를 사용하겠다는 마법의 주문 두 줄을 추가해 주세요. import matplotlib.pyplot as plt plt.rc('font', family='Malgun Goth...

엑셀 피벗 테이블(Pivot Table), 파이썬 코드 한 줄로 1초 만에 자동화하기

  수만 줄, 수십만 줄의 원본 데이터(Raw Data)를 팀장님이 한눈에 볼 수 있도록 요약하려면 어떻게 해야 할까요? 엑셀을 조금 다룰 줄 아는 직장인이라면 주저 없이 '피벗 테이블(Pivot Table)'을 켤 것입니다. 십자 모양의 틀 안에 부서명, 날짜, 매출액을 마우스로 끌어다 놓기만 하면 순식간에 멋진 요약 보고서가 완성되니까요. 하지만 엑셀 피벗 테이블에는 치명적인 단점이 있습니다. 매달 새로운 데이터가 추가될 때마다 원본 범위를 다시 잡고 '새로고침'을 눌러야 하며, 마우스로 일일이 필드를 드래그하는 작업은 '자동화'와 거리가 멉니다. 파이썬 판다스(Pandas)에서는 이 번거로운 마우스 드래그 작업을 단 한 줄의 코드로 영구적으로 자동화할 수 있습니다. 오늘은 파이썬으로 피벗 테이블을 1초 만에 뚝딱 만들어내는 공식을 알아보겠습니다. 1. 엑셀의 4구역, 파이썬 코드로 매칭하기 엑셀 피벗 테이블을 띄우면 우측에 4개의 네모 칸(필터, 열, 행, 값)이 나옵니다. 파이썬의 pd.pivot_table() 함수는 이 4개의 칸을 영단어로 그대로 옮겨놓았을 뿐, 원리는 100% 똑같습니다. index : 엑셀의 [행] (예: 부서별로 볼래) columns : 엑셀의 [열] (예: 월별로 나누어서 볼래) values : 엑셀의 [값] (예: 매출액을 볼래) aggfunc : [계산 방식] (예: 더할래? 평균을 낼래?) 이 공식만 머릿속에 넣으면 끝입니다. "부서별(행), 월별(열) 매출액(값)의 합계(계산)를 구해줘!"를 코드로 바꾸면 아래와 같이 됩니다. pivot_df = pd.pivot_table(df, index='부서명', columns='월', values='매출액', aggfunc='sum') 이 한 줄을 실행하는 순간, 마우스로 낑낑대며 드래그하던 ...

윗줄에 결재란이 떡하니? 지저분한 엑셀 양식 파이썬으로 무시하고 읽어오기

파이썬 엑셀 자동화를 공부할 때 책이나 강의에서 제공하는 예제 파일들은 보통 1행부터 '이름, 부서, 직급' 같은 제목(Header)이 예쁘게 적혀있습니다. 하지만 우리 회사의 현실은 어떤가요? 파일 맨 위에는 거대한 글씨로 '월간 영업 실적 보고서'라는 제목이 병합되어 있고, 오른쪽 위에는 팀장, 국장, 사장님의 도장을 받는 '결재란'이 떡하니 자리 잡고 있습니다. 진짜 데이터는 한 4행이나 5행부터 시작하죠. 이런 엑셀 파일을 파이썬에서 pd.read_excel() 로 그냥 불러오면 대참사가 일어납니다. 파이썬은 무조건 1행을 표의 제목으로 인식하기 때문에, 거대한 '보고서 제목'을 표의 기준으로 삼아버리고 나머지 진짜 제목들은 전부 'Unnamed'라는 정체불명의 데이터로 뭉개버립니다. 오늘은 엑셀 원본 양식을 손상하지 않고, 내가 원하는 진짜 데이터부터 쏙 빼오는 실전 불러오기 기술을 알아보겠습니다. 1. 불필요한 윗줄 건너뛰기: skiprows 옵션 엑셀 원본 파일에 있는 결재란과 제목을 일일이 마우스로 우클릭해서 '행 삭제'를 하고 계신가요? 수십 개의 파일을 그렇게 지우는 것은 자동화가 아닙니다. 파이썬에게 "위에 있는 쓸데없는 3줄은 눈 감고 무시해 줘!"라고 명령하면 끝납니다. 이때 사용하는 것이 바로 skiprows (행 건너뛰기) 옵션입니다. 데이터를 불러오는 코드 괄호 안에 이 마법의 단어만 추가해 주시면 됩니다. df = pd.read_excel('실적보고서.xlsx', skiprows=3) 이렇게 적어주면 파이썬은 엑셀 파일의 맨 위에서부터 3줄(1~3행)을 아예 없는 셈 치고 건너뜁니다. 그리고 4행에 있는 '사번, 이름, 부서명'을 정확하게 표의 제목으로 인식하여 데이터를 깔끔하게 불러옵니다. 위쪽 양식이 아무리 복잡하게 병합되어 있어도 이 코드 한 줄이면 완벽하게 회피할 수 있...

가공 끝난 데이터, 파이썬으로 엑셀 시트(Sheet) 여러 개로 쪼개서 저장하기

파이썬으로 수만 줄의 데이터를 불러와 조건에 맞게 필터링하고 빈칸까지 깔끔하게 청소했습니다. 이제 이 완벽한 데이터를 엑셀로 저장해서 팀장님께 보고할 일만 남았습니다. 그런데 팀장님의 지시사항이 하나 더 떨어집니다. "이번 달 전체 실적 데이터, 부서별로 엑셀 탭(시트) 나눠서 하나의 파일로 정리해 주세요." 엑셀만 다룰 줄 알던 시절이라면 어떻게 했을까요? '영업팀'으로 필터링해서 복사하고, 아래쪽의 + 버튼을 눌러 새 시트를 만든 뒤 붙여넣고, 시트 이름을 '영업팀'으로 바꿉니다. 그리고 이 짓을 인사팀, 마케팅팀, 재무팀... 부서 개수만큼 무한 반복합니다. 부서가 20개라면 20번을 반복해야 하죠. 하지만 파이썬에서는 판다스의 숨겨진 무기 하나만 꺼내면 클릭 한 번에 20개의 시트가 알아서 척척 만들어집니다. 1. to_excel()의 치명적 한계 2편에서 우리는 데이터를 엑셀로 내보낼 때 df.to_excel('결과.xlsx') 라는 코드를 쓴다고 배웠습니다. 그렇다면 영업팀 데이터(df_sales)와 인사팀 데이터(df_hr)를 각각 저장하려면 이렇게 쓰면 될까요? df_sales.to_excel('결과.xlsx', sheet_name='영업팀') df_hr.to_excel('결과.xlsx', sheet_name='인사팀') 이 코드를 실행하고 엑셀 파일을 열어보면, 안타깝게도 '인사팀' 시트 딱 하나만 남아있을 것입니다. to_excel() 함수는 기본적으로 파일을 **'새로 덮어쓰기'**하기 때문입니다. 영업팀 시트를 기껏 만들어놨더니, 그 다음 줄에서 인사팀 데이터가 기존 파일을 싹 밀어버리고 혼자 자리를 차지한 것이죠. 2. 엑셀의 바인더 역할을 하는 마법사: pd.ExcelWriter 여러 개의 시트를 하나의 파일에 차곡차곡 모으려면, 파이썬에게 "이 엑셀 파일 아직 닫지 말고 열...

수식이 걸린 엑셀 데이터, 파이썬으로 불렀더니 NaN이 뜨는 이유와 해결법

실무에서 사용하는 엑셀 파일은 단순한 숫자의 나열이 아닙니다. 단가와 수량을 곱하는 간단한 수식부터, 복잡한 조건부 합계(SUMIFS)까지 다양한 수식들이 거미줄처럼 얽혀있죠. 파이썬 자동화를 처음 배우시는 분들은 이 수식이 걸린 엑셀 파일을 판다스로 호기롭게 불러왔다가, 숫자가 있어야 할 자리에 'NaN(빈칸)'이 가득한 것을 보고 멘붕에 빠지곤 합니다. "엑셀을 열면 분명히 숫자가 잘 보이는데, 왜 파이썬은 빈칸이라고 할까요?" 이것은 파이썬에 에러가 난 것이 아니라, 엑셀과 파이썬이 '수식'을 대하는 근본적인 방식이 다르기 때문입니다. 오늘은 이 치명적인 오류의 원인을 파헤치고, 진정한 의미의 '데이터 자동화'를 위해 수식을 어떻게 다뤄야 하는지 그 해답을 제시해 드립니다. 1. 파이썬은 엑셀의 수식을 '계산'하지 못합니다 가장 먼저 머릿속에 박아두어야 할 핵심 개념입니다. 판다스(Pandas)는 엑셀 프로그램이 아닙니다. 따라서 SUM , VLOOKUP 같은 엑셀 고유의 함수 엔진을 가지고 있지 않습니다. 우리가 pd.read_excel() 로 파일을 불러올 때, 파이썬은 엑셀 파일의 껍데기를 살짝 들춰보고 '가장 마지막에 엑셀이 계산해 둔 결과값(캐시 데이터)'만을 사진 찍듯이 찰칵 찍어옵니다. 즉, 파이썬 안에서 수량 데이터를 10에서 20으로 바꾼다고 해서, 총합계 수식이 자동으로 업데이트되어 바뀌지 않는다는 뜻입니다. 파이썬이 가져온 것은 살아 숨 쉬는 수식이 아니라 '박제된 숫자 텍스트'일 뿐입니다. 2. ERP에서 다운받은 파일이 무조건 NaN을 뱉는 이유 그런데 왜 숫자가 안 나오고 NaN이 뜨는 걸까요? 보통 회사 사내 시스템(ERP 등)에서 다운로드한 엑셀 파일에서 이런 일이 잦습니다. 시스템이 엑셀 파일을 만들어낼 때는 컴퓨터의 리소스를 아끼기 위해 수식(예: =A1*B1 )만 텍스트로 적어놓고, 실제 결과값은 계산하지 않은 채(...

날짜와 시간 데이터 포맷이 제각각일 때 파이썬으로 일괄 통일하는 비법

"2023.10.01", "23-10-01", "2023년 10월 1일", "10/01/2023"... 여러 부서에서 취합한 엑셀 파일을 열어보면 날짜를 입력하는 방식이 사람마다 그야말로 천차만별입니다. 엑셀에서 이 데이터를 날짜순으로 정렬하거나 월별 매출을 구하려고 피벗 테이블을 돌리면, 컴퓨터는 이를 날짜가 아닌 '단순한 글자(텍스트)'로 인식해서 가나다순으로 엉뚱하게 정렬해 버립니다. 결국 직장인들은 '셀 서식'에 들어가서 날짜 형식으로 억지로 바꿔보거나, 텍스트 나누기를 하고, 심지어 일일이 타자를 다시 치는 엄청난 시간 낭비를 겪게 됩니다. 하지만 파이썬에서는 제아무리 엉망으로 입력된 날짜라도 단 한 줄의 마법 같은 코드로 컴퓨터가 인식할 수 있는 '진짜 날짜'로 완벽하게 통일할 수 있습니다. 오늘은 시계열 데이터 분석의 뼈대가 되는 날짜 데이터 포맷팅 비법을 알아보겠습니다. 1. 엉망진창 날짜를 하나로 통일하는 마법: pd.to_datetime() 파이썬 판다스(Pandas)에는 사람이 쓴 다양한 형태의 날짜 글자를 컴퓨터용 표준 날짜 형식(YYYY-MM-DD)으로 강제 변환해 주는 아주 강력한 함수가 있습니다. 바로 to_datetime() 입니다. 불러온 데이터(df)에 '작성일'이라는 열이 있다고 가정해 봅시다. 주피터 노트북에 df['작성일'] = pd.to_datetime(df['작성일']) 이라고만 입력하고 실행해 보세요. 놀랍게도 점(.)이 찍혀있든, 슬래시(/)가 있든, 한글로 '년월일'이 적혀있든 판다스가 알아서 눈치껏 해석하여 2023-10-01 이라는 깔끔하고 통일된 규격으로 싹 바꿔줍니다. 이제 파이썬은 이 열을 단순한 글자가 아닌 '시간의 흐름'으로 완벽하게 인식하게 됩니다. 2. 컴퓨터도 헷갈리는 날짜 구출하기 (format과 errors...

"파일을 찾을 수 없습니다" - 경로 오류(Path error)가 발생하는 이유와 대처법

파이썬으로 엑셀 자동화 코드를 잘 짜놓고 기분 좋게 실행했는데, 화면 가득 빨간색 글씨로 FileNotFoundError 가 뜨면 누구나 당황하기 마련입니다. 분명히 내 눈앞 폴더에 파일이 있는데 파이썬은 "파일을 찾을 수 없다"고 우기니 답답할 노릇이죠. 어제까지 잘 되던 코드가 오늘 폴더 이름 하나 바꿨다고 멈춰버리는 일도 허다합니다. 우리가 윈도우 탐색기에서 마우스로 폴더를 클릭해 들어가는 방식은 직관적이지만, 파이썬에게 위치를 알려줄 때는 조금 더 정교한 규칙이 필요합니다. 오늘은 초보자들이 가장 많이 헤매는 '경로(Path)'의 원리를 이해하고, 매일 바뀌는 업무 환경에서도 에러 없이 파일을 척척 찾아내는 스마트한 경로 설정법을 알아보겠습니다. 1. 파이썬이 파일을 찾는 기준: 절대 경로 vs 상대 경로 파이썬이 파일을 찾는 방식은 크게 두 가지입니다. 첫째는 '절대 경로'입니다. 주소창 전체를 복사하는 방식이죠. 예컨대 C:\Users\Desktop\보고서.xlsx 처럼 집 주소를 처음부터 끝까지 다 알려주는 것입니다. 가장 확실하지만, 만약 코드를 다른 사람에게 보내거나 폴더 위치를 살짝만 옮겨도 주소가 통째로 틀려져 에러가 발생한다는 단점이 있습니다. 둘째는 '상대 경로'입니다. "지금 내가 있는 곳에서 바로 옆에 있는 파일을 찾아라"라고 명령하는 방식입니다. 파일 주소 대신 ./보고서.xlsx 처럼 마침표( . )를 사용합니다. 마침표 하나는 '현재 폴더'를 의미합니다. 코드가 들어있는 폴더와 엑셀 파일이 같은 곳에 있다면, 폴더 통째로 위치를 옮겨도 에러 없이 작동하기 때문에 실무에서는 상대 경로를 사용하는 것이 훨씬 유지보수에 유리합니다. 2. 내가 지금 어디에 있지? os.getcwd() 확인하기 상대 경로를 썼는데도 에러가 난다면, 파이썬이 생각하는 '현재 위치'와 내가 생각하는 위치가 다르기 때문입니다. 파이썬은 내가 코드를 ...

더러운 데이터 청소기: 결측치(빈칸)와 중복 데이터 안전하게 제거하는 기준

데이터 분석이나 자동화 보고서를 만들 때 가장 고통스러운 순간은 언제일까요? 코드가 틀렸을 때가 아니라, 내가 믿었던 데이터가 '엉망'일 때입니다. 중간중간 비어있는 칸(결측치), 나도 모르게 두 번 세 번 들어간 중복 데이터들은 결국 잘못된 합계와 평균을 만들어내고, 이는 고스란히 보고서의 오류로 이어집니다. 엑셀에서 일일이 '찾기 및 바꾸기'를 하거나 눈으로 중복을 찾아 지우는 것은 시간도 오래 걸릴뿐더러 실수의 위험도 큽니다. 파이썬 판다스(Pandas)는 이런 '더러운 데이터'를 청소하는 데 최적화된 강력한 도구들을 갖추고 있습니다. 오늘은 실무에서 가장 자주 마주치는 빈칸(NaN)과 중복 데이터를 어떤 기준으로, 얼마나 안전하게 제거해야 하는지 그 실전 테크닉을 공유하겠습니다. 1. 결측치(NaN) 처리: 무조건 지우는 게 정답일까? 데이터를 불러왔을 때 보이는 NaN 은 '값이 없음'을 의미합니다. 엑셀의 빈 셀과 같죠. 이를 처리하는 방법은 크게 두 가지입니다. 아예 삭제하거나, 적절한 값으로 채워 넣는 것입니다. 먼저, 데이터가 너무 많이 비어있어서 가치가 없다고 판단되면 df.dropna() 를 사용합니다. 이 코드 한 줄이면 빈칸이 포함된 모든 행을 통째로 삭제해 줍니다. 하지만 조심해야 합니다. 중요한 매출 데이터가 딱 한 칸 비어있다고 해서 그 행 전체를 지워버리면 전체 실적이 왜곡될 수 있기 때문입니다. 이때 대안으로 사용하는 것이 df.fillna() 입니다. 빈칸을 0으로 채우거나, "미입력" 같은 텍스트로 채워 넣는 방식입니다. 실무에서는 보통 매출 데이터의 빈칸은 0 으로 채우고, 고객 명단의 빈칸은 "무명" 등으로 채워 데이터의 '전체 행 수'를 유지하는 전략을 자주 사용합니다. 2. 중복 데이터 제거: 중복의 기준을 명확히 세우기 여러 개의 엑셀 파일을 하나로 합치다 보면(5편 내용), 동일한 데이터가 중복해서 들어가는...

VLOOKUP보다 빠르고 정확한 파이썬 merge() 함수 활용 실전 사례

직장인들이 엑셀에서 가장 사랑하면서도, 동시에 가장 증오하는 함수가 무엇일까요? 단연코 'VLOOKUP(브이룩업)'일 것입니다. 사번만 있는 매출 데이터에 직원 이름과 부서명을 끌어오기 위해 VLOOKUP 수식을 걸고 밑으로 쫙 드래그하는 순간, 모니터 화면이 하얗게 굳어버리며 '응답 없음'이 뜨던 공포. 직장인이라면 누구나 한 번쯤 겪어보셨을 겁니다. 데이터가 10만 줄만 넘어가도 VLOOKUP은 엑셀을 기절하게 만듭니다. 게다가 원본 데이터의 열(Column) 순서가 하나라도 바뀌면 수식이 전부 엉망으로 꼬여버리고 맙니다. 언제까지 이 불안정한 함수에 우리의 소중한 퇴근 시간을 맡기실 건가요? 파이썬 판다스(Pandas)에는 VLOOKUP의 모든 단점을 완벽하게 보완하면서도 속도는 수백 배 빠른 merge() 라는 마법의 함수가 존재합니다. 오늘은 엑셀 유저들이 가장 환호하는 기능, 파이썬으로 두 개의 데이터를 결합하는 비법을 알아보겠습니다. 1. VLOOKUP의 치명적 단점과 merge()의 등장 엑셀 VLOOKUP은 "기준값에서 오른쪽으로 몇 번째 칸에 있는 데이터를 가져와라"라는 상대적인 위치 기반의 함수입니다. 그래서 중간에 누군가 열을 하나 삽입하거나 삭제하면, 내가 원했던 값이 아닌 엉뚱한 값을 가져오게 됩니다. 수식을 걸어둔 채로 저장하면 파일 용량도 기하급수적으로 커지죠. 반면 파이썬의 merge() 함수는 데이터베이스의 '조인(Join)' 원리를 따릅니다. "몇 번째 칸"이라는 위치가 아니라, "이름이 '사번'인 기둥(열)을 기준으로 두 데이터를 맞춰라"라고 명확하게 이름표를 지정해 줍니다. 따라서 중간에 데이터 순서가 뒤죽박죽 섞여도 절대 에러가 나지 않으며, 수십만 줄의 매칭 작업도 1초면 가볍게 끝납니다. 수식이 아니라 결과값(텍스트) 자체로만 저장되기 때문에 파일 용량도 아주 가볍습니다. 2. 1초 만에 두 데이터 합치기 ...

흩어진 수십 개의 엑셀 파일, 클릭 한 번에 하나의 시트로 병합하기

월말이나 연말이 되면 각 부서나 지점에서 취합해 보내온 수십, 수백 개의 엑셀 파일을 하나의 마스터 파일로 합치는 이른바 '취합 업무'가 시작됩니다. 파일 하나를 열고, 드래그해서 복사하고, 마스터 파일 맨 밑줄을 찾아 붙여넣고, 다시 창을 닫고... 이 짓을 50번쯤 반복하다 보면 손목도 저릿하고, 중간에 실수로 누군가의 데이터를 빼먹거나 덮어쓰는 끔찍한 대참사가 발생하기도 하죠. 취합 업무는 직장인의 에너지를 가장 무의미하게 갉아먹는 최악의 단순 반복 작업입니다. 하지만 파이썬의 세계에서는 폴더 안에 있는 100개의 엑셀 파일을 단 3초 만에 하나의 완벽한 시트로 합쳐버릴 수 있습니다. 내가 마우스를 100번 클릭해야 할 일을 컴퓨터에게 대신 시키는 것, 이것이 진짜 코딩을 배우는 목적입니다. 오늘은 파이썬 엑셀 자동화의 꽃이라고 불리는 '다중 파일 병합'의 3단계 핵심 원리를 아주 쉽게 풀어드리겠습니다. 1. 흩어진 파일 이름 싹쓸이하기: glob 라이브러리 가장 먼저 해야 할 일은 컴퓨터에게 "특정 폴더 안에 있는 엑셀 파일들의 이름과 위치를 전부 다 조사해 와!"라고 명령하는 것입니다. 이때 파이썬에 기본적으로 내장된 glob 이라는 아주 편리한 도구를 사용합니다. 코드 맨 윗줄에 import glob 이라고 적어 도구를 꺼냅니다. 그리고 glob.glob(r'C:\취합폴더\*.xlsx') 라고 적어주면 마법이 시작됩니다. 여기서 별표( * )는 "이름이 뭐든 상관없이"라는 뜻을 가진 만능 치트키입니다. 즉, 저 코드는 "취합폴더 안에 있는 파일 중 끝이 .xlsx로 끝나는 모든 파일의 명단을 가져와라"라는 뜻이 됩니다. 이 명단을 파이썬은 리스트(List)라는 이름의 깔끔한 목록표로 정리해서 우리가 쓰기 좋게 쥐여줍니다. 2. 수십 개의 파일을 알아서 열고 복사하기: for 반복문의 힘 명단을 확보했으니 이제 파일들을 하나씩 열어서 데이터를 복사해 올 차...

수만 줄의 데이터, 엑셀이 멈출 때 파이썬으로 가볍게 필터링하는 요령

용량이 100MB가 넘어가는 데이터 파일, 혹은 수십만 줄이 쌓여있는 로우 데이터(Raw Data)를 엑셀로 열어본 경험이 있으신가요? 파일을 더블클릭하는 순간 마우스 커서가 뱅글뱅글 돌기 시작하고, 화면은 하얗게 변하며 제목 표시줄에는 '응답 없음'이라는 공포의 단어가 뜹니다. 어찌어찌 파일이 열렸다고 해도, '데이터 필터' 버튼을 누르고 특정 부서나 특정 날짜의 체크박스를 클릭하는 데만 또 수 분의 시간이 걸립니다. 바쁜 업무 시간에 이런 로딩을 기다리며 커피만 홀짝이는 것은 너무나도 큰 시간 낭비입니다. 엑셀은 눈에 보이는 격자무늬(UI)를 화면에 띄우는 데 컴퓨터의 메모리(RAM)를 엄청나게 소모하기 때문에 대용량 처리에 쥐약입니다. 반면, 파이썬은 눈에 보이는 화려한 껍데기 없이 오직 백그라운드에서 연산만 수행하므로 수십만 줄의 데이터도 단 몇 초면 가볍게 처리할 수 있습니다. 오늘은 엑셀에서 우리를 가장 지치게 했던 '조건 필터링' 작업을 파이썬 판다스(Pandas)로 어떻게 순식간에 끝낼 수 있는지, 그 직관적이고 강력한 방법을 알아보겠습니다. 1. 엑셀의 필터 버튼을 대체하는 '조건 마스크' 원리 엑셀에서는 깔때기 모양의 필터 버튼을 눌러서 원하는 항목에 체크 표시를 합니다. 파이썬에서는 이 체크 표시 대신 '조건문'을 사용합니다. 원리는 아주 간단합니다. 파이썬에게 "이 조건이 맞는 줄(행)은 True, 틀린 줄은 False로 표시해 줘"라고 명령한 뒤, True로 표시된 데이터만 쏙 뽑아오는 방식입니다. 이것을 실무에서는 '마스킹(Masking)'이라고 부릅니다. 만약 우리가 불러온 데이터(df)에서 '부서명' 열의 값이 '영업팀'인 데이터만 걸러내고 싶다면 어떻게 해야 할까요? 주피터 노트북에 df[df['부서명'] == '영업팀'] 이라고 적어주기만 하면 끝납니다. 바깥쪽의 대괄...

엑셀 셀 병합 데이터, 파이썬으로 불러올 때 엉망으로 깨지는 현상 완벽 해결법

실무에서 다루는 엑셀 보고서들을 보면 십중팔구 '셀 병합'이 되어 있습니다. 부서명, 날짜, 카테고리 등을 보기 좋게 묶어두는 것은 사람의 눈에는 참 친절한 방식입니다. 하지만 파이썬으로 자동화를 시작한 직장인들에게 이 예쁘게 병합된 셀은 그야말로 재앙의 시작입니다. 지난번 배운 대로 판다스(Pandas)를 이용해 기분 좋게 엑셀을 불러왔는데, 화면에 나타난 데이터가 중간중간 'NaN'이라는 정체불명의 글자로 도배되어 엉망진창으로 깨져 있던 경험, 다들 있으실 겁니다. 저 역시 처음 이 현상을 마주했을 때 코드가 완전히 망가진 줄 알고 식은땀을 흘렸습니다. 결국 파이썬 창을 닫고 다시 엑셀을 열어 병합을 다 풀고 일일이 드래그해서 빈칸을 채워 넣는 '수동 노가다'를 한 적도 있죠. 하지만 원리만 알면 파이썬에서 단 한 줄의 코드로 이 문제를 깔끔하게 해결할 수 있습니다. 오늘은 파이썬이 병합된 셀을 어떻게 인식하는지 그 원리를 이해하고, 마법의 함수를 통해 깨진 데이터를 원래대로 복원하는 방법을 알아보겠습니다. 1. 파이썬은 왜 병합된 셀을 'NaN'으로 뱉어낼까? 사람의 눈에는 3개의 행이 하나로 합쳐진 거대한 셀 안에 '영업팀'이라는 글자가 꽉 차 있는 것처럼 보입니다. 하지만 컴퓨터(엑셀 시스템 내부)가 데이터를 기억하는 방식은 다릅니다. 셀을 병합하면 오직 가장 위쪽(또는 왼쪽)의 첫 번째 셀에만 '영업팀'이라는 실제 데이터가 남고, 나머지 아래쪽 두 개의 셀은 텅 빈 공간으로 처리됩니다. 그저 시각적으로만 하나인 것처럼 껍데기를 씌워 둔 것입니다. 파이썬의 판다스는 사람처럼 예쁜 껍데기를 보지 않고 엑셀의 뼈대(Raw Data)를 아주 정직하게 읽어옵니다. 그래서 첫 번째 행에는 '영업팀'을 정상적으로 가져오지만, 나머지 두 개의 빈칸은 "여긴 데이터가 없는데요?"라며 결측치를 의미하는 'NaN(Not a Number)'...

판다스(Pandas) 기초: 엑셀 파일 불러오고 저장할 때 초보자가 흔히 하는 실수

1편에서 파이썬과 주피터 노트북 세팅을 무사히 마치셨다면, 이제 본격적인 실전입니다. 데이터를 요리하려면 가장 먼저 냉장고에서 재료를 꺼내 도마 위에 올려야겠죠? 파이썬에서 엑셀 파일을 화면으로 불러오는 작업이 바로 그것입니다. 하지만 많은 직장인 초보자들이 호기롭게 코드를 켰다가 이 첫 단계부터 새빨간 에러 메시지를 마주하고 크게 좌절하곤 합니다. 우리가 평소 엑셀 아이콘을 더블클릭해서 파일을 여는 것과, 코드를 통해 컴퓨터에게 "저 폴더에 있는 파일을 열어줘"라고 명령하는 것은 차원이 다른 이야기이기 때문입니다. 오늘은 파이썬 데이터 분석의 핵심 도구인 판다스(Pandas)를 이용해 엑셀 파일을 완벽하게 불러오고, 작업한 결과를 다시 깔끔하게 저장하는 과정에서 초보자가 99% 확률로 겪는 치명적인 실수와 그 해결책을 명쾌하게 짚어보겠습니다. 1. 마법의 주문: 판다스(Pandas) 소환과 엑셀 불러오기 파이썬 환경에서 데이터 전처리와 엑셀 자동화를 담당하는 1등 공신은 바로 '판다스(Pandas)'라는 라이브러리입니다. 주피터 노트북을 열고 코드를 짤 때 가장 먼저 해야 할 일은 이 판다스를 우리 작업 공간으로 불러오는 것입니다. 가장 위 칸에 import pandas as pd 라고 적고 실행해 줍니다. "앞으로 판다스라는 긴 이름 대신, 편하게 pd라고 줄여서 부르겠다"는 뜻의 전 세계적인 약속입니다. 이 주문이 성공적으로 들어갔다면, 이제 pd.read_excel('파일명.xlsx') 이라는 간단한 코드 한 줄로 내 컴퓨터에 있는 엑셀 파일을 파이썬 화면에 표 형태로 짠 하고 띄울 수 있습니다. 원리는 이렇게나 간단합니다. 하지만 막상 실무 파일 이름을 넣고 실행해 보면 어김없이 'FileNotFoundError(파일을 찾을 수 없음)'라는 무서운 에러가 뜹니다. 원인이 무엇일까요? 2. "파일을 찾을 수 없습니다" : 슬래시(/)와 역슬래시()의 함정 초...

직장인 엑셀 퇴근 시간을 앞당기는 파이썬 세팅 가이드 (VBA 대신 파이썬인 이유)

매일 아침 출근하자마자 어제자 실적 엑셀 파일을 열고, 복사해서 붙여넣고, 수식을 걸어보고, 피벗 테이블을 돌리는 일상. 혹시 이 지루한 '엑셀 노가다'에 하루 업무 시간의 절반 이상을 쏟고 계시지는 않나요? 저 역시 과거 수십만 줄의 데이터를 엑셀로 처리하다가 프로그램이 하얗게 멈춰버리는(응답 없음) 화면을 보며 깊은 절망에 빠졌던 기억이 생생합니다. "이걸 자동으로 해주는 방법이 없을까?" 고민하다 보면 필연적으로 매크로(VBA)나 파이썬(Python)이라는 단어를 마주하게 됩니다. 코딩의 'ㅋ'자도 모르는 문과 출신 직장인 입장에서 새로운 언어를 배운다는 것은 엄청난 부담으로 다가옵니다. 하지만 단언컨대, 파이썬 기초 세팅만 끝내두면 여러분의 퇴근 시간은 최소 1시간 이상 빨라질 수 있습니다. 오늘은 본격적인 엑셀 자동화에 앞서, 왜 우리가 파이썬을 선택해야 하는지 그 이유와 초보자도 막힘없이 따라 할 수 있는 가장 안전한 초기 세팅 방법을 알려드리겠습니다. 1. 엑셀 매크로(VBA) 대신 파이썬을 선택해야 하는 3가지 이유 회사 선배들은 보통 엑셀에 내장된 매크로나 VBA를 배우라고 조언합니다. 하지만 지금 시대에 직장인 업무 자동화를 위해 VBA를 파고드는 것은 효율성이 떨어집니다. 제가 실무에서 직접 부딪히며 느낀 파이썬의 압도적인 장점은 다음과 같습니다. 첫째, 대용량 데이터 처리 속도가 다릅니다. 엑셀은 보통 데이터가 10만 줄만 넘어가도 버벅거리고 함수 적용에 수 분이 걸립니다. 반면 파이썬의 데이터 분석 라이브러리인 '판다스(Pandas)'를 사용하면 100만 줄의 데이터도 단 몇 초 만에 읽어오고 병합할 수 있습니다. 둘째, 직관적인 문법입니다. VBA는 오래된 언어 특성상 문법이 복잡하고 에러를 찾기 어렵습니다. 파이썬은 사람이 읽는 영어 문장과 구조가 매우 비슷해 비전공자도 흐름을 이해하기 훨씬 수월합니다. 셋째, 압도적인 확장성입니다. VBA는 엑셀 안에서만 갇혀 있지만, 파...