Chapter 7: SQL vs. Python vs. Excel – 무엇이 다를까?

SQL = 데이터베이스와의 대화

이 책을 따라오고 있다면 이제 데이터베이스가 무엇이며 왜 강력한지 이해했을 것이다. 하지만 실제로 데이터베이스와 어떻게 작업할까? 그때 등장하는 것이 바로 SQL이다.

SQL(Structured Query Language, 구조화 질의 언어)은 데이터베이스와 소통하기 위한 표준 언어이다. SQL은 오직 하나의 목적, 즉 데이터베이스와 대화하기 위해 설계된 특수한 언어라고 생각하면 된다. 파리에서 프랑스어로 대화하듯이, 데이터베이스와 대화하려면 SQL을 사용해야 한다.

Excel 사용자에게는 SQL이 처음엔 다소 어렵게 느껴질 수 있지만, 사실 굉장히 논리적인 언어이다. 여러 면에서 SQL 명령어는 Excel에서 익숙한 작업들과 유사하다:

  • Excel에서 데이터를 필터링할 때, SQL의 WHERE 절과 비슷한 작업을 하는 것이다
  • Excel에서 데이터를 정렬할 때, SQL의 ORDER BY 절과 유사하다
  • Excel에서 VLOOKUP을 사용해 다른 시트에서 데이터를 가져올 때, SQL의 JOIN과 유사한 작업이다

주요 차이점은 Excel은 버튼과 메뉴가 있는 시각적 인터페이스를 사용하는 반면, SQL은 텍스트 기반 명령어를 작성한다는 것이다. 하지만 그 내부의 논리는 상당히 비슷하다.

Python = 범용 프로그래밍 언어 (자동화, 분석에 탁월)

SQL이 데이터베이스 작업에 특화된 언어라면, Python은 거의 모든 작업을 수행할 수 있는 범용 프로그래밍 언어이다. Python은 배우기 쉬우면서도 데이터 작업을 위한 강력한 라이브러리들이 있어 데이터 분석 분야에서 인기를 얻고 있다.

Python에서 데이터 작업에 자주 사용되는 라이브러리는 다음과 같다:

  • pandas: 데이터 조작 및 분석을 위한 라이브러리 (Excel의 업그레이드 버전이라고 생각하면 됨)
  • NumPy: 수치 계산 및 배열 처리
  • matplotlib, seaborn: 시각화 및 차트 작성
  • scikit-learn: 머신러닝 및 예측 모델링

Python은 자동화에 특히 강점이 있어, 데이터를 처리하고 리포트를 생성하며 데이터베이스를 자동으로 업데이트하는 스크립트를 작성할 수 있다. 또한, Excel이나 SQL만으로는 하기 힘든 복잡한 분석에도 적합하다.

Excel = 직관적인 인터페이스, 수동 조작

대부분에게 익숙한 도구인 Excel은 직관적인 시각적 인터페이스를 제공한다. 데이터를 직접 보고 셀을 클릭하여 바로 변경할 수 있어, 즉각적인 피드백이 가능하다. 이러한 특성 때문에 빠른 탐색이나 간단한 분석에는 매우 유용하다.

Excel의 강점은 다음과 같다:

  • 시각적 인터페이스와 즉각적인 피드백
  • 대부분의 비즈니스 사용자에게 익숙함
  • Ad-hoc 분석과 빠른 계산에 적합
  • 내장된 차트 및 시각화 기능
  • 기본 작업에는 코딩이 불필요

하지만 데이터 규모가 크거나 분석이 복잡해질 경우 Excel은 한계를 드러낸다. 이럴 때 SQL과 Python이 빛을 발한다.

언제 어떤 도구를 사용할까?

Excel을 사용할 때

Excel은 다음과 같은 상황에서 가장 적합하다:

  • 소규모~중간 규모 데이터셋: 스프레드시트에 무리 없이 들어갈 정도의 데이터 (보통 10만 행 이하)
  • 빠른, Ad-hoc 분석: 데이터베이스 설정이나 코드 작성 없이 빠르게 분석할 필요가 있을 때
  • 시각적 탐색: 데이터를 직접 보고 상호작용하며 탐색할 때
  • 간단한 시각화: 기본적인 차트나 그래프가 필요할 때
  • 비기술 사용자: 데이터를 다루는 사람이 코딩에 익숙하지 않을 때

SQL을 사용할 때

SQL은 다음과 같은 상황에서 강력하다:

  • 대규모 데이터셋: 수백만 행의 데이터를 다룰 때 (Excel이 버티지 못함)
  • 데이터가 데이터베이스에 있을 때: 이미 데이터베이스에 저장된 데이터 작업
  • 데이터 무결성: 값과 관계에 대한 규칙을 엄격히 유지해야 할 때
  • 다중 사용자 접근: 여러 사용자가 동시에 동일한 데이터를 작업해야 할 때
  • 복잡한 조인: 여러 테이블의 데이터를 복잡하게 결합해야 할 때
  • 표준화된 리포트: 정기적으로 반복되는 쿼리가 필요할 때

Python을 사용할 때

Python은 다음과 같은 경우에 적합하다:

  • 자동화: 동일한 분석을 반복적으로 수행해야 할 때
  • 복잡한 분석: 고급 통계나 머신러닝을 포함한 분석이 필요할 때
  • 커스텀 시각화: 고도로 커스터마이징된 혹은 인터랙티브한 시각화가 필요할 때
  • 데이터 클렌징: 복잡하고 지저분한 데이터를 전처리할 필요가 있을 때
  • 다양한 데이터 소스 처리: 데이터베이스, API, 파일, 웹 등 여러 소스를 다룰 때
  • 재현 가능한 연구: 분석 과정 전체를 기록으로 남겨야 할 때

공통 데이터 작업 비교

도구별로 자주 수행하는 데이터 작업을 어떻게 처리하는지 비교해보자:

데이터 필터링

Excel:

  1. 데이터 범위 선택
  2. [데이터] 탭에서 "필터" 클릭
  3. 드롭다운 화살표로 조건 설정

SQL:

SELECT *
FROM employees
WHERE department = 'Sales';

Python:

# employees라는 pandas DataFrame 기준
sales_employees = employees[employees['department'] == 'Sales']

데이터 정렬

Excel:

  1. 데이터 범위 선택
  2. [데이터] 탭에서 "정렬" 클릭
  3. 열과 정렬 순서 지정

SQL:

SELECT *
FROM employees
ORDER BY salary DESC;

Python:

# salary 기준 내림차순 정렬
sorted_employees = employees.sort_values(by='salary', ascending=False)

합계 계산

Excel:

  1. 합계 내고 싶은 셀 선택
  2. =SUM(B2:B10) 입력 또는 AutoSum(Σ) 클릭

SQL:

SELECT SUM(salary) AS total_salary
FROM employees;

Python:

# 총 salary 계산
total_salary = employees['salary'].sum()

피벗 테이블 / 그룹화

Excel:

  1. 데이터 선택
  2. [삽입] > [피벗 테이블]
  3. 행, 열, 값 영역에 필드 드래그

SQL:

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;

Python:

# 부서별 평균 salary 계산
dept_salaries = employees.groupby('department')['salary'].mean()

서로 다른 소스의 데이터 병합

Excel:

  1. VLOOKUP 또는 INDEX/MATCH 사용
  2. 또는 Power Query로 테이블 병합

SQL:

SELECT e.name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.id;

Python:

# employees와 departments DataFrame 병합
result = pd.merge(employees, departments, 
                  left_on='department_id', 
                  right_on='id')

세 가지 도구의 통합 사용

현실에서는 많은 데이터 전문가가 이 세 가지 도구를 함께 사용하며 각 도구의 장점을 활용한다:

  1. 데이터는 데이터베이스에 저장하고, SQL로 필요한 부분만 추출
  2. Python으로 데이터 클렌징, 분석, 자동화 수행
  3. Excel로 결과를 비즈니스 사용자에게 공유

예를 들면:

  1. SQL 쿼리로 지난달 판매 데이터를 데이터베이스에서 추출
  2. Python으로 트렌드 분석과 예측 모델 수행
  3. 결과를 Excel로 내보내서 영업팀이 확인하고 발표자료로 사용

이런 통합 접근법은 SQL의 데이터 처리 능력, Python의 분석/자동화 능력, Excel의 접근성과 친숙함을 모두 활용할 수 있게 해준다.

학습 경로 추천

Excel 사용자라면, 데이터 분석 능력을 확장하기 위한 추천 학습 경로는 다음과 같다:

  1. SQL부터 시작: SQL은 Excel에서 자연스럽게 넘어가기 좋은 다음 단계이다. 개념이 유사하고 문법도 비교적 간단하다. SELECT 쿼리, 필터링, 정렬, 기본적인 조인에 집중하자.

  2. 이후에 Python 배우기: SQL에 익숙해졌다면, 좀 더 고급 분석을 위해 Python을 배우자. 특히 pandas 라이브러리는 Excel 사용자에게 친숙하게 느껴질 수 있다.

  3. Excel은 계속 사용: Excel을 버릴 필요는 없다! 여전히 빠른 분석이나 동료들과의 결과 공유에 유용하다.

각 도구는 데이터 작업에 있어 자신만의 역할이 있다. Excel을 대체하려는 것이 아니라, Excel이 잘 못하는 영역을 다른 도구로 보완하는 것이 목표이다.

결론

Excel, SQL, Python은 데이터 전문가의 툴킷에서 서로를 보완하는 도구이다. Excel은 직관적인 시각 인터페이스를, SQL은 대규모 데이터베이스 작업을, Python은 유연성과 고급 분석 기능을 제공한다.

각 도구의 장단점을 이해함으로써 상황에 맞는 최적의 도구를 선택할 수 있다. 그리고 종종, 이들을 조합해 사용하는 것이 최고의 전략이 된다.

다음 챕터에서는 SQL의 문법과 기능에 대해 더 자세히 살펴보겠다.