Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

Excel과 Python을 활용한 고급 데이터 과학 워크플로 완벽 가이드

Excel과 Python을 활용한 고급 데이터 과학 워크플로 완벽 가이드

많은 데이터 애널리스트에게 Excel은 간편함과 유연성 덕분에 여전히 필수적인 도구입니다. 하지만 대용량 데이터 처리, 반복 작업, 복잡한 분석에는 Python이 속도, 자동화, 고급 분석 면에서 훨씬 뛰어난 성능을 발휘합니다. Excel과 Python을 통합하면 두 도구의 장점을 동시에 활용할 수 있습니다.

이 튜토리얼에서는 Excel과 Python을 결합해 강력한 데이터 과학 워크플로를 구축하는 방법을 단계별로 소개합니다.

필수 도구 및 환경 설정

Excel과 Python을 연동하기 전에 먼저 환경을 설정해야 합니다. 이렇게 하면 첫 단계부터 원활하고 생산적인 워크플로를 유지할 수 있습니다.

사전 준비물:

  • Microsoft Excel: 초기 데이터 검토 및 보고서 작성용
  • Python 3.x: 데이터 과학 워크플로의 엔진 역할
  • Python 라이브러리:
    • pandas: 데이터 분석
    • matplotlib: 차트 생성
    • openpyxl(선택 사항): Excel 파일 쓰기
    • numpy: 수치 계산
    • matplotlib/seaborn: 데이터 시각화

Python 라이브러리 설치:

pip install pandas matplotlib openpyxl

1. Python으로 데이터 불러오기

pandas를 사용하면 Excel 파일의 데이터를 손쉽게 불러와 조작하고 분석할 수 있습니다.

import pandas as pd
# Excel 파일에서 데이터 읽기
df = pd.read_excel('SalesData.xlsx')
# 데이터 미리 보기
print(df.head()) # 데이터의 첫 5행 출력
print(df.info()) # 열 정보, 데이터 타입, 결측치 현황 출력
  • pd.read_excel()은 Excel 파일을 pandas DataFrame으로 불러옵니다.
  • df.head()는 첫 5개 행을 표시하며 빠른 데이터 확인에 유용합니다.
  • df.info()는 행·열 개수와 데이터 타입 등 데이터셋의 전체 구조를 보여줍니다.

실행하면 매출 데이터의 앞부분과 아래 같은 요약 정보를 확인할 수 있습니다:

 TransactionID Date CustomerID ProductID ProductName Category Quantity UnitPrice Region Channel SalesRep
0 100001 2024-01-02 C-100 P-101 Laptop Electronics 2.0 800.0 East Online Smith
1 100002 2024-01-02 C-101 P-102 Printer Electronics 1.0 200.0 West Retail Johnson
2 100003 2024-01-03 C-102 P-103 Mouse Electronics 5.0 25.0 North Online Lee
3 100004 2024-01-04 C-103 P-104 Desk Furniture 1.0 150.0 South Retail Brown
4 100005 2024-01-05 C-104 P-105 Monitor Electronics 3.0 175.0 NaN Online Davis
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 63 entries, 0 to 62
Data columns (total 11 columns):
 # Column Non-Null Count Dtype
--- ------ -------------- -----
 0 TransactionID 63 non-null int64
 1 Date 62 non-null datetime64[ns]
 2 CustomerID 62 non-null object 
 3 ProductID 61 non-null object 
 4 ProductName 63 non-null object 
 5 Category 61 non-null object 
 6 Quantity 61 non-null float64 
 7 UnitPrice 62 non-null float64
 8 Region 62 non-null object
 9 Channel 62 non-null object
 10 SalesRep 62 non-null object
dtypes: datetime64[ns](1), float64(2), int64(1), object(7)
memory usage: 5.5+ KB
None

2. 데이터 정제 및 변환

원본 데이터는 분석에 바로 쓸 수 있는 경우가 드뭅니다. 이 단계에서는 결측치를 처리하고, 열의 데이터 타입을 올바르게 변환하며, 새로운 계산 필드를 추가합니다.

중복 제거:

# 중복 행 제거
df = df.drop_duplicates()
  • 중복된 값을 삭제합니다.

결측치 확인:

# 열별 결측치 개수 출력
print(df.isnull().sum())
  • 각 열에 몇 개의 결측값(NaN)이 있는지 보여줍니다. 결측치가 있다면 삭제할지, 대체할지 판단할 수 있습니다.
#출력:
TransactionID 0
Date 1
CustomerID 1
ProductID 2
ProductName 0
Category 2
Quantity 2
UnitPrice 1
Region 1
Channel 1
SalesRep 1
dtype: int64

데이터 타입 변환:

# 필터링과 그룹화를 쉽게 하기 위해 'Date' 열을 pandas datetime 타입으로 변환
df['Date'] = pd.to_datetime(df['Date'])
  • Date 열을 텍스트에서 pandas datetime 형식으로 변환해 필터링과 그룹화를 쉽게 만듭니다.

'TotalSales' 열 생성:

# 새 열 추가: 거래별 총 매출액
df['TotalSales'] = df['Quantity'] * df['UnitPrice']
  • 거래 건별 총 매출액을 나타내는 새 열을 추가합니다.

시계열 분석을 위한 월(Month) 추출:

df['Month'] = df['Date'].dt.to_period('M')
  • 월별로 매출을 그룹화하고 분석할 수 있는 Month 열을 생성합니다.
  • 이후 print(df.head())로 정제된 데이터를 미리 확인하세요.
#출력:
TransactionID Date CustomerID ProductID ProductName Category ... UnitPrice Region Channel SalesRep TotalSales Month
0 100001 2024-01-02 C-100 P-101 Laptop Electronics ... 800.0 East Online Smith 1600.0 2024-01
1 100002 2024-01-02 C-101 P-102 Printer Electronics ... 200.0 West Retail Johnson 200.0 2024-01
2 100003 2024-01-03 C-102 P-103 Mouse Electronics ... 25.0 North Online Lee 125.0 2024-01
3 100004 2024-01-04 C-103 P-104 Desk Furniture ... 150.0 South Retail Brown 150.0 2024-01
4 100005 2024-01-05 C-104 P-105 Monitor Electronics ... 175.0 NaN Online Davis 525.0 2024-01

3. 데이터 분석하기

깨끗하게 정제된 데이터셋이 준비되면, 비즈니스 가치를 창출하는 인사이트를 도출할 수 있습니다. 월별, 제품별, 지역별 매출 집계가 대표적인 예입니다.

월별 총 매출:

# 월별로 그룹화하여 각 달의 총 매출 합산
monthly_sales = df.groupby('Month')['TotalSales'].sum()
print(monthly_sales)
  • 데이터를 Month 기준으로 그룹화하고 각 월의 TotalSales를 합산합니다.
#출력:
Month
2024-01 9075.0
2024-02 9800.0
2024-03 9075.0
Freq: M, Name: TotalSales, dtype: float64

인기 판매 제품:

# 제품별로 그룹화해 총 매출을 합산한 뒤 높은 순으로 정렬
product_sales = df.groupby('ProductName')['TotalSales'].sum().sort_values(ascending=False)
print(product_sales)
  • 제품별 매출을 합산한 후 판매량이 많은 순서대로 정렬합니다.
#출력:
ProductName
Laptop 15200.0
Monitor 3850.0
Printer 3200.0
Desk 2550.0
Chair 2325.0
Mouse 1125.0
Name: TotalSales, dtype: float64

지역별 매출:

# 지역별로 그룹화해 지역별 총 매출 합산
region_sales = df.groupby('Region')['TotalSales'].sum()
print(region_sales)
  • 지역별 총 매출을 집계합니다.
#출력:
Region
East 6075.0
North 5925.0
South 8225.0
West 7500.0

4. 핵심 인사이트 시각화

데이터는 시각화될 때 더 큰 힘을 발휘합니다. 간단한 차트를 만들어 핵심 트렌드를 한눈에 파악할 수 있도록 해보겠습니다.

4.1. 월별 매출 추이

import matplotlib.pyplot as plt # 시각화를 위한 임포트
# 월별 매출 막대그래프 생성
monthly_sales.plot(
 kind='bar', 
 title='Total Sales by Month', 
 ylabel='Sales ($)', 
 xlabel='Month'
)
plt.tight_layout() # 라벨 겹침 방지
plt.savefig('monthly_sales.png') # PNG 파일로 저장
plt.show() # 차트 화면에 표시
  • 월별 매출을 막대그래프로 표현합니다.
  • plt.savefig는 보고서용으로 차트를 저장합니다.
  • 막대그래프를 통해 매월 매출 변화를 확인할 수 있습니다.

Excel과 Python을 활용한 고급 데이터 과학 워크플로 완벽 가이드

4.2. 지역별 매출

# 지역별 매출 원그래프
region_sales.plot(
 kind='pie', 
 autopct='%1.1f%%', 
 title='Sales Distribution by Region'
)
plt.ylabel('') # 기본 y축 라벨 제거
plt.tight_layout()
plt.savefig('region_sales.png')
plt.show()
  • 지역별 매출 비중을 원그래프로 보여주며, 경영진이나 마케팅팀 보고에 적합합니다.

Excel과 Python을 활용한 고급 데이터 과학 워크플로 완벽 가이드

5. 고급 분석 및 모델링

기본적인 그룹화와 요약을 넘어, Python은 몇 줄의 코드만으로 고급 통계 분석, 피벗 테이블, 심지어 머신러닝까지 가능하게 해줍니다. 데이터를 더 깊이 파헤쳐 추가 인사이트를 찾아보겠습니다.

5.1. 기술통계

기술통계는 데이터셋의 빠른 요약을 제공하며, 수치형 열의 평균, 표준편차, 사분위수 등을 보여줍니다.

# 수치형 열의 요약 통계 출력 (평균, 표준편차, 최솟값, 최댓값, 사분위수 등)
print(df.describe())
  • df.describe()는 모든 수치형 열(Quantity, UnitPrice, TotalSales 등)을 빠르게 요약합니다.
#출력:
 TransactionID Quantity UnitPrice TotalSales
count 61.000000 59.000000 60.000000 59.000000
mean 100030.180328 2.542373 262.083333 478.813559
std 17.497150 1.534905 277.339497 527.085627
min 100001.000000 1.000000 25.000000 75.000000
25% 100015.000000 1.000000 75.000000 162.500000
50% 100030.000000 2.000000 175.000000 300.000000
75% 100045.000000 3.000000 200.000000 525.000000
max 100060.000000 7.000000 800.000000 2400.000000

5.2. pandas 피벗 테이블

피벗 테이블은 Excel에서 대화형 보고서를 만들 때 강력한 기능인데, pandas로도 동일하게 구현할 수 있습니다.

# 피벗 테이블 생성: 지역별 TotalSales 합계
pivot = df.pivot_table(index='Region', values='TotalSales', aggfunc='sum')
print(pivot)
  • pivot_table()은 Excel의 피벗 테이블처럼 지역별 TotalSales를 요약합니다.
#출력
 TotalSales
Region
East 6075.0
North 5925.0
South 8225.0
West 7500.0

5.3. 간단한 머신러닝 예제

판매 수량만으로 총 매출을 예측할 수 있는지 간단한 선형 회귀(머신러닝) 모델을 통해 확인해 보겠습니다.

from sklearn.linear_model import LinearRegression # scikit-learn에서 선형 회귀 임포트
# 특징 변수와 타깃 변수 준비
X = df[['Quantity']] # 특징: 판매 수량
y = df['TotalSales'] # 타깃: 총 매출액
# 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X, y)
# 회귀 계수(기울기) 출력
print('Coefficient:', model.coef_)
# 절편(수량이 0일 때의 기본값) 출력
print('Intercept:', model.intercept_)
  • scikit-learn에서 LinearRegression을 임포트합니다.
  • Quantity를 사용해 TotalSales를 예측합니다.
  • 모델을 학습시키고 계수(판매 수량이 1개 늘어날 때 매출 증가분)를 출력합니다.
#출력:
Coefficient: [-37.65294772]
Intercept: 596.8483500185391

6. 정제·분석된 데이터를 Excel로 내보내기

데이터의 정제, 분석, 모델링이 끝나면 요약 테이블과 인사이트를 여러 시트로 구성된 Excel 파일로 내보낼 수 있습니다. 핵심 결과물을 한곳에 모아 Excel에서 바로 검토할 수 있습니다.

# 요약 및 고급 분석 테이블을 다중 시트 Excel 파일로 내보내기
with pd.ExcelWriter('sales_summary.xlsx') as writer:
 # 월별 요약
 monthly_sales.to_frame().to_excel(writer, sheet_name='Monthly Sales')
 # 제품별 요약
 product_sales.to_frame().to_excel(writer, sheet_name='Product Sales')
 # 지역별 요약
 region_sales.to_frame().to_excel(writer, sheet_name='Region Sales')
 # 피벗 테이블 (지역별 총 매출)
 pivot.to_excel(writer, sheet_name='Pivot Table')
 # 선택 사항: 기술통계 내보내기
 df.describe().to_excel(writer, sheet_name='Descriptive Stats')
  • 컨텍스트 매니저(with … as writer): 작성 후 Excel 파일이 올바르게 저장되고 닫히도록 보장합니다.
  • 테이블별 .to_excel(): 각 DataFrame 또는 요약을 별도 시트에 저장해 접근성을 높입니다.
  • 커스텀 시트 이름: 분석 단계에 맞게 각 시트에 명확한 이름을 부여합니다.

Excel과 Python을 활용한 고급 데이터 과학 워크플로 완벽 가이드

  • Excel에서 sales_summary.xlsx 파일을 엽니다.
  • Monthly Sales, Product Sales, Region Sales, Pivot Table, Descriptive Statistics 시트가 각각 나뉘어 저장된 것을 확인할 수 있습니다.

Excel과 Python을 활용한 고급 데이터 과학 워크플로 완벽 가이드

7. 워크플로 자동화 및 확장

Python을 활용하면 반복되는 보고서나 분석 작업을 자동화할 수 있습니다. 다음에 새 Excel 파일을 받으면 파일만 교체하고 스크립트를 다시 실행하면 됩니다. 모든 분석과 보고서가 즉시 갱신됩니다.

  • 모든 분석 코드를 하나의 Python 파일에 유지합니다.
  • 보고서를 업데이트하려면 CSV 파일을 교체하고 다음 명령을 실행합니다:
python Excel_to_Python.py

Excel과 Python을 활용한 고급 데이터 과학 워크플로 완벽 가이드

  • 더 나아가 이 작업을 주간 또는 월간 스케줄로 예약 실행할 수도 있습니다.

결론

Excel의 직관적인 데이터 입력 및 보고 기능과 Python의 강력한 데이터 과학 역량을 결합하면, 방대하고 지저분한 데이터셋도 효율적으로 처리·분석할 수 있습니다. 반복적인 보고 작업이 자동화되고, 머신러닝과 고급 시각화의 문도 열립니다. Python 전문가가 되기 위해 밤새 공부할 필요는 없습니다. 간단한 작업 하나부터 시작하고, 성공하면 한 단계씩 추가하세요. 어느새 복잡한 보고서까지 자동화하고 있는 자신을 발견하게 될 것입니다.

무료 Excel 고급 연습 문제와 해설을 받아보세요!