라벨이 판다스인 게시물 표시

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)'...