본문 바로가기
  • 안녕하세요! 금융, 책, 코딩을 기록합니다
'코'딩/Python

[책] Python for Excel (엑셀이 편해지는 파이썬, Part1 )

by 금책코 2024. 11. 13.

안녕하세요! 이번에 리뷰할 책은 O'reilly(오라일리)에서 나온 『Python for Excel』 입니다. 부제로는 엑셀이 편해지는 파이썬입니다.

 

책에 관한 기본적인 정보는 다음과 같습니다.

 

분야: IT

저자: 펠릭스 춤슈타인 (Felix Zumstein)

출판사: O'reilly

초판1쇄: 2022년 4월

정가: 28,000원  

분량: 388 page

 

[표지]

 

책 내용이랑은 관련 없는 이야기지만, 저는 오라일리의 책에 항상 있는 표지의 동물 사진들을 좋아합니다.

깔끔하기도 하고, 뜬금없는 동물사진과 그 정보도 흥미롭거든요. 이번 책에 있는 동물은 파이프뱀이라고 합니다.

(파이프뱀에 대한 구체적인 설명은 가장 첫 페이지에 있답니다.)

 

그리고 제가 이 책을 다 읽고 덮으면서 들은 생각은 이랬습니다.

'확실히 좋은 책이고 유용할거 같아... 하지만 타겟층이 좀 지엽적일 수 있겠는걸?'   

물론 대부분의 IT서적이 그렇겠지만, 더욱 이런 느낌을 크게 받았습니다.    

제가 생각하기에 이 책의 타겟 독자층은 이렇습니다.

 

1) 최소한의 파이썬 지식을 갖춘 사람. (기본적인 for문,  int와 str 등 기본 데이터 형태의 이해)

2) 큰 엑셀 파일에서 복잡한 셀 수식을 주기적으로 다뤄야 하는 사람. (이때 큰 규모라 함은 하나의 엑셀 파일에 만 개 이상의 ROW가 있는 수준을 말합니다.) 

 

이 두 가지 모두에 해당 되어야 책의 내용이 빛을 발할 것이라 생각합니다.

1)이 해당되지 않으면 애초에 책의 과정을 이해하기 쉽지 않고, 2)에 해당하지 않으면 엑셀에서 제공하는 함수나 짧은 VBA를 쓰면 되니까요.

그러니 책을 구매할지를 고민하시는 분은 본인이 말씀드린 두 가지 기준에 충족하는지 생각해보시길 바랍니다. 

 

이제 책의 구성에 대해 소개하겠습니다. 총 4개의 파트로 되어있고, 12개의 챕터로 이루어져있습니다.

Part 1: '파이썬 소개'

Part2: '넘파이, 판다스 소개'

Part3: '엑셀 없이 엑셀 파일 읽고 쓰기'

Part4: '엑셀윙스를 통한 엑셀 애플리케이션 프로그래밍'

 

이번 글에서는 Part1의 내용을 리뷰해보려고 합니다. 

 

먼저 저자는 '엑셀만으로도 충분하지 않을까? 파이썬을 굳이 또 활용해야해?' 에 대한 대답을 하는 것으로 시작합니다.

사실 이러한 생각이 드는 것은 꽤나 당연합니다.

엑셀은 무려 1985년에 출시되어 지금까지 수많은 업데이트를 통해 정말 다양한 기능을 제공하고 있습니다.

그리고 엑셀 없이 업무를 하는 것이 상상하기 힘들 정도로 현재까지 많은 사람들에게 사랑을 받고 있습니다. 

 

[애플 매킨토시에서 제공된 엑셀 1.0]

 

 

하지만 그럼에도 불구하고 저자는 엑셀의 분명한 한계점을 말하고 이는 파이썬을 통해 개선 될 수 있음을 말합니다.

저자는 엑셀이 가지고 있는 한계점을 크게 3가지로 꼽습니다.

 

1) 엑셀의 표준 라이브러리, 패키지 매니저의 부재 

2) 과학 계산에 있어서의 한계점

3) 플랫폼 간의 낮은 호환성

 

'1) 엑셀의 표준 라이브러리, 패키지 매니저의 부재' :

 

이 내용을 거칠게 요약하자면 '너무 복잡하다.'입니다. 

 

예를 통해 설명해보겠습니다. 만약 제가 다른 엑셀 파일의 일정 부분의 데이터를 가져오고 싶다고 가정해봅시다.

물론 그냥 해당 엑셀 파일을 열거나 Ctrl+c, Ctrl+v 를 통해 복사해올 수도 있겠지만,

데이터의 양이 상당히 크거나, 엑셀 파일 개수가 많거나, 해당 업무가 주기적으로 이뤄진다면 어떡해야할까요? 

여기서 엑셀의 활용 수준이 높으신 분들은 VBA를 떠올리실 수 있을 겁니다. 

(간단히 VBA가 뭔지 설명해드리자면, VBA는 Visual Basic for Applications의 약자로 엑셀에 내장되어 있는 프로그래밍 언어입니다.)

그래서 VBA를 통해 해당 기능을 실현하는 코드를 짜면 다음과 같습니다.   

Sub AnotherExcel_WorkbooksOpen()
    Dim sourceWorkbook As Workbook
    Dim targetWorkbook As Workbook
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim sourceFilePath As String
    
    Set targetWorkbook = ThisWorkbook
    Set targetSheet = targetWorkbook.Sheets(1) 
    
    sourceFilePath = "C:\path\file_name.xlsx" 
    
    Set sourceWorkbook = Workbooks.Open(sourceFilePath)
    Set sourceSheet = sourceWorkbook.Sheets(1) 
    
    sourceSheet.Range("A1:D10").Copy
    targetSheet.Range("A1").PasteSpecial Paste:=xlPasteValues 
    
    sourceWorkbook.Close SaveChanges:=False
    
    Application.CutCopyMode = False
End Sub

 

하지만 파이썬에서 같은 기능을 하는 것을 코드로 짜보면 다음과 같습니다. 

import pandas as pd

file_path = 'C:/path/file_name.xlsx'  
df = pd.read_excel(file_path, sheet_name='Sheet1', usecols='A:D', nrows=10)

print(df)

 

 

이처럼 VBA와 파이썬의 확연한 코드의 길이의 차이가 크다는 점을 확인할 수 있습니다.

 

정말 간단한 작업을 하는 것인데도 이정도 차이라면, 원하는 내용이 많아지고 복잡해질수록 코드 길이의 차이는 더욱 커질 것을 쉽게 상상해볼 수 있습니다. 

또한 해당 코드를 직접  짜지 않은 동료가 작업물을 본다면, VBA의 코드는 파이썬에 비해 무척 난해하게 느껴질 수 있습니다.

 

 '2) 과학 계산에 있어서의 한계점':

 

물론 엑셀도 기본적인 계산 기능을 제공하지만, 더 높은 수준의 통계학, 수학 모델을 사용하기에는 부족한 부분이 많습니다.

앞서 말씀드린 수식의 복잡함도 있겠지만, 특히 엑셀과 파이썬은 수행 속도에 있어서 큰 차이를 보입니다.

이번에도 예를 통해 설명해보겠습니다. 다음과 같은 엑셀 데이터가 있습니다.

이때 판매제품이 'A'인 것의 판매 개수의 평균을 구하고 싶습니다.

이를 엑셀 수식으로 표현하면 '=AVERAGEIF(B2:B100, "A", C2:C100)' 라는 식으로 할 수 있겠죠.

[예시 엑셀 데이터]

 

하지만 문제는 이러한 행의 개수가 1만개, 10만개가 넘어가면 이러한 간단한 수식에서도 엑셀은 쉽게 버벅일 수밖에 없습니다.

이에 반해 파이썬을 사용한다면 numpy나 pandas 등 데이터에 특화된 강력한 라이브러리를 통해 엑셀에 비해 10배~20배 가량 더 빠르게 계산할 수 있습니다. (수행속도의 차이는 데이터가 많아질수록 더욱 벌어집니다.) 

 

'3) 플랫폼 간의 낮은 호환성':

 

이 한계점은 엑셀을 사용하시는 많은 분들에게 상관 없는 이야기일 수 있겠지만, 엑셀은 운영 체제에서 낮은 호환성을 갖고 있습니다. 

쉽게 말해 엑셀을 통해 만든 기능을 전부 활용하려면 마이크로소프트사의 윈도우 운영체제 안에서만 사용해야만 합니다. 이는 애플사의 macOS에서는 엑셀이 제 기능을 하기 어렵다는 것을 의미합니다. 

또한 서버의 안정성, 저렴한 비용, 보안에 있어서 강점을 지닌 리눅스 체제에서도 엑셀은 사용할 수 없습니다.

이에 반해 파이썬은 코드 내용의 수정 없이 앞서 말한 주요 운영 체제에 모두 동작할 수 있습니다.

해당 문제는 비록 대부분의 사용자에게는 상관없을 수 있지만, 해당되는 사용자들에게는 엑셀에 파이썬을 도입하는 것이 큰 도움이 될 것입니다.

 

이렇게 해서 저자가 왜 엑셀에 파이썬을 도입해야 하는지에 대해 내용을 마무리합니다.

 

그 다음으로 이어지는 Part1의 내용은 파이썬의 환경 설치 방법과 파이썬에서 객체, 변수, 함수, 문자열 등이 무엇인지에 설명합니다. 

하지만 이건 책의 구성상 넣었다고 생각하며 특별히 엑셀과 파이썬에 관련된 내용은 없기에, 리뷰하지는 않겠습니다.

그리고 앞서 말씀드린 개념들의 내용(설치 방법, 객체, 변수, 함수, 문자열) 이 모두 낯설고 처음 배우는 것이라면, 아마 'Python for Excel'의 타겟 독자층이 아니라 생각됩니다.

따라서 이러한 분들은 본 책을 읽기 전 파이썬에 대해 먼저 친숙해지는 시간을 가지시는 것을 추천드립니다. 

 

다음 Part2는 파이썬이 지금과 같은 지위를 갖게 해준 Numpy(넘파이)와 Pandas(판다스)를 소개하는 내용을 담고 있습니다.

 

해당 내용은 게시글을 분리하여 업로드 하겠습니다.

 

긴 글 읽어주셔서 감사합니다!

 

조금이나마 도움이 되셨길 바랍니다!