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


직장인들이 엑셀에서 가장 사랑하면서도, 동시에 가장 증오하는 함수가 무엇일까요? 단연코 'VLOOKUP(브이룩업)'일 것입니다. 사번만 있는 매출 데이터에 직원 이름과 부서명을 끌어오기 위해 VLOOKUP 수식을 걸고 밑으로 쫙 드래그하는 순간, 모니터 화면이 하얗게 굳어버리며 '응답 없음'이 뜨던 공포. 직장인이라면 누구나 한 번쯤 겪어보셨을 겁니다.

데이터가 10만 줄만 넘어가도 VLOOKUP은 엑셀을 기절하게 만듭니다. 게다가 원본 데이터의 열(Column) 순서가 하나라도 바뀌면 수식이 전부 엉망으로 꼬여버리고 맙니다. 언제까지 이 불안정한 함수에 우리의 소중한 퇴근 시간을 맡기실 건가요? 파이썬 판다스(Pandas)에는 VLOOKUP의 모든 단점을 완벽하게 보완하면서도 속도는 수백 배 빠른 merge()라는 마법의 함수가 존재합니다. 오늘은 엑셀 유저들이 가장 환호하는 기능, 파이썬으로 두 개의 데이터를 결합하는 비법을 알아보겠습니다.


1. VLOOKUP의 치명적 단점과 merge()의 등장

엑셀 VLOOKUP은 "기준값에서 오른쪽으로 몇 번째 칸에 있는 데이터를 가져와라"라는 상대적인 위치 기반의 함수입니다. 그래서 중간에 누군가 열을 하나 삽입하거나 삭제하면, 내가 원했던 값이 아닌 엉뚱한 값을 가져오게 됩니다. 수식을 걸어둔 채로 저장하면 파일 용량도 기하급수적으로 커지죠.

반면 파이썬의 merge() 함수는 데이터베이스의 '조인(Join)' 원리를 따릅니다. "몇 번째 칸"이라는 위치가 아니라, "이름이 '사번'인 기둥(열)을 기준으로 두 데이터를 맞춰라"라고 명확하게 이름표를 지정해 줍니다. 따라서 중간에 데이터 순서가 뒤죽박죽 섞여도 절대 에러가 나지 않으며, 수십만 줄의 매칭 작업도 1초면 가볍게 끝납니다. 수식이 아니라 결과값(텍스트) 자체로만 저장되기 때문에 파일 용량도 아주 가볍습니다.


2. 1초 만에 두 데이터 합치기 (how='left'의 비밀)

실무 상황을 가정해 보겠습니다. 1번 데이터(df1)에는 '사번'과 '매출액'만 있고, 2번 데이터(df2)에는 '사번'과 '직원 이름', '부서'가 적혀 있는 인사 DB입니다. 우리가 원하는 것은 1번 데이터 옆에 직원 이름과 부서를 VLOOKUP처럼 예쁘게 붙이는 것입니다.

주피터 노트북에 딱 이렇게 한 줄만 적어주세요. pd.merge(df1, df2, on='사번', how='left')

놀랍게도 이게 전부입니다.

  • on='사번'은 두 데이터가 공통으로 가지고 있는 연결고리(기준값)를 지정해 준 것입니다.

  • how='left'는 "왼쪽에 있는 1번 데이터(df1)의 틀은 그대로 유지한 채로, 2번 데이터에서 맞는 것만 가져와서 붙여라"라는 뜻입니다. 이것이 바로 우리가 엑셀에서 쓰던 VLOOKUP과 100% 동일한 작동 방식입니다.

만약 매칭되는 사번이 인사 DB에 없다면 엑셀에서는 무서운 '#N/A' 에러가 뜨지만, 파이썬에서는 아주 평화롭게 'NaN(빈칸)'으로 표시하고 유연하게 넘어갑니다.


3. VLOOKUP은 절대 못하는 '다중 조건' 병합

VLOOKUP을 쓰다 보면 가장 난감할 때가 "이름도 같고, 부서도 같은 사람"의 데이터를 찾아야 할 때입니다. 엑셀에서 조건이 2개 이상이 되면 VLOOKUP만으로는 해결이 안 돼서, 이름과 부서를 하나의 텍스트로 합친 보조 열을 억지로 새로 만들어야 하는 촌극이 벌어집니다.

하지만 파이썬의 merge() 앞에서는 다중 조건도 아무런 문제가 되지 않습니다. 아까 적었던 on='사번' 부분에 대괄호를 씌워 기준값을 여러 개 적어주기만 하면 됩니다. pd.merge(df1, df2, on=['이름', '부서'], how='left')

이렇게 코드를 짜면 파이썬은 똑똑하게 이름과 부서가 동시에 일치하는 데이터만 쏙쏙 골라서 완벽하게 결합해 줍니다. 엑셀에서 보조 열을 만들고 함수를 꼬아 쓰며 낭비했던 30분이, 파이썬에서는 단 10초 만에 끝나는 순간입니다.


더 이상 무거운 수식에 기대지 마세요

엑셀 파일이 무거워지는 가장 큰 주범이 바로 곳곳에 걸려 있는 얽히고설킨 수식들입니다. 파이썬으로 전처리를 완료한 후 엑셀로 내보내면, 수식 없이 깔끔하게 결과값만 남은 깃털처럼 가벼운 엑셀 파일을 얻게 됩니다. 오늘 배운 merge() 함수를 통해 컴퓨터 멈춤의 공포에서 영원히 벗어나시길 바랍니다.

▶ 핵심 요약

  • 엑셀 VLOOKUP은 데이터 위치가 바뀌면 오류가 나고 대용량 처리 시 엑셀을 멈추게 하지만, 파이썬 merge()는 열의 '이름'을 기준으로 결합하여 빠르고 정확하다.

  • how='left' 옵션을 사용하면 엑셀의 VLOOKUP과 완벽하게 동일한 방식으로, 기준이 되는 원본 데이터 뼈대를 유지하며 데이터를 가져올 수 있다.

  • VLOOKUP에서는 복잡했던 다중 조건 검색도, 파이썬에서는 on=['조건1', '조건2'] 처럼 리스트 형태로 나열하기만 하면 1초 만에 해결된다.


데이터를 붙이고 합치다 보면 필연적으로 쓸모없는 쓰레기 데이터들이 생겨나기 마련입니다. 다음 7편에서는 '더러운 데이터 청소기: 결측치(빈칸)와 중복 데이터 안전하게 제거하는 기준'에 대해 알아보며 데이터를 깔끔하게 세차하는 법을 다루겠습니다.

실무에서 VLOOKUP을 사용하시다가 '#N/A' 에러나 '#REF!' 에러 때문에 보고서를 망칠 뻔했거나 당황했던 경험이 있으신가요?

댓글

이 블로그의 인기 게시물

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