본문으로 건너뛰기
실습하기

PPT 업무 자동화 체험하기

이번 수업에서는 파이썬으로 PPT 업무를 처리하고, 데이터를 활용해 표와 차트를 추가하는 방법을 소개합니다.

물론 간단한 슬라이드는 직접 만드는 것이 빠르겠지만, 대규모 데이터를 바탕으로 반복적인 작업이 필요할 때는 파이썬 프로그램으로 처리하는 것이 훨씬 효율적입니다.

앞서 말씀드린 것처럼 아직 코드를 이해하려 노력하실 필요 없습니다!

모든 코드는 AI가 작성하고, AI가 설명하고, AI가 개선할 것입니다. 🙂

코드 에디터의 초록색으로 표시된 ▶︎ 실행 버튼을 누르고, 아래 코드 설명을 가볍게 읽어보세요!


가볍게 읽는 코드 설명

코드가 큰 틀에서 어떻게 작동하는지 궁금하다면 아래 내용을 참고해 주세요.


1. 참가자 데이터 준비

아래와 같이 참가자명, 신청일, 성별, 나이로 구성된 데이터를 준비합니다.

참가자 데이터
# 참가자 데이터 정의
csv_data = [
["참가자명", "신청일", "성별", "나이"],
["참가자1", "2024-09-01", "남성", "25"],
["참가자2", "2024-09-02", "여성", "30"],
["참가자3", "2024-09-03", "남성", "35"],
["참가자4", "2024-09-04", "남성", "42"],
["참가자5", "2024-09-05", "여성", "28"],
["참가자6", "2024-09-06", "여성", "39"],
["참가자7", "2024-09-07", "남성", "24"],
]

프로그램의 목적은 아래 데이터를 바탕으로 2개의 슬라이드를 생성하는 것입니다.

  • 슬라이드 1 : 참가자 목록을 테이블(Table, 표) 형태로 표시

  • 슬라이드 2 : 성별 분포를 파이(XL_CHART_TYPE.PIE) 차트로, 연령대 분포를 막대(XL_CHART_TYPE.COLUMN_CLUSTERED) 차트로 시각화


2. CSV 데이터를 파이썬 변수로 변환

아래 코드는 정의된 데이터를 바탕으로 참가자 목록을 participants 변수에 저장합니다.

참가자 목록 생성
# 참가자 목록을 담는 변수
participants = []

# 반복문을 활용해 참가자 정보를 participants 변수에 저장
for row in csv_data[1:]:
participants.append({
"name": row[0],
"date": row[1],
"gender": row[2],
"age": int(row[3])
})

3. PowerPoint 파일 생성

이제 PowerPoint 파일을 생성하고 슬라이드를 추가해 보겠습니다.

PowerPoint 파일 생성
# python-pptx 라이브러리에서 Presentation 함수를 불러오기
from pptx import Presentation

# PowerPoint 파일 생성
prs = Presentation()

# 슬라이드 레이아웃 선택
slide_layout = prs.slide_layouts[5]

# 슬라이드 추가
slide = prs.slides.add_slide(slide_layout)

# 슬라이드 제목 추가
title = slide.shapes.title

# 슬라이드 제목 입력
title.text = "스타트업 이벤트 참가자"

이 코드를 실행하면 "스타트업 이벤트 참가자"라는 제목을 가진 슬라이드가 생성됩니다.


4. 참가자 정보를 표로 표시

아래와 같이 반복문을 활용해 참가자 정보를 슬라이드에 테이블(표) 형태로 추가할 수 있습니다.

슬라이드에 참가자 정보를 표 형태로 추가
# add_table 함수를 활용해 테이블 추가
table = slide.shapes.add_table(len(participants) + 1, 4, Inches(0.5), Inches(1.5), Inches(8), Inches(3)).table

# 테이블 헤더 추가
for col_index, heading in enumerate(csv_data[0]):
table.cell(0, col_index).text = heading

# 참가자 정보 추가
for row_index, participant in enumerate(participants, start=1):
table.cell(row_index, 0).text = participant["name"]
table.cell(row_index, 1).text = participant["date"]
table.cell(row_index, 2).text = participant["gender"]
table.cell(row_index, 3).text = str(participant["age"])

5. 데이터 시각화: 성별 분포 차트 추가

이제 파이 차트로 성별 분포를 시각화해보겠습니다.

성별 분포 파이 차트 추가
# collections 라이브러리에서 Counter 함수 불러오기
from collections import Counter

# pptx.chart.data 라이브러리에서 ChartData 함수 불러오기
from pptx.chart.data import ChartData

# pptx.enum.chart 라이브러리에서 XL_CHART_TYPE 함수 불러오기
from pptx.enum.chart import XL_CHART_TYPE

# 파이 차트 데이터
gender_count = Counter(p["gender"] for p in participants)

# ChartData 함수를 활용해 차트 데이터 생성
chart_data = ChartData()

# 차트 데이터 추가
chart_data.categories = list(gender_count.keys())

# 차트 데이터 시리즈 추가
chart_data.add_series('성별 분포', (gender_count["남성"], gender_count["여성"]))

# 파이 차트 추가
chart = slide.shapes.add_chart(XL_CHART_TYPE.PIE, Inches(0.5), Inches(1.5), Inches(4), Inches(3), chart_data).chart

이제 자동으로 참가자들의 성별 분포가 파이 차트로 그려집니다.


6. 데이터 시각화: 연령대 막대 차트 추가

참가자의 나이를 20대, 30대, 40대로 그룹화하여 막대 차트를 그립니다.

연령대 분포 막대 차트 추가
# age_groups 변수에 연령대별 참가자 수 저장
age_groups = {'20대': 0, '30대': 0, '40대': 0}

# 연령대 분포 데이터 생성
for participant in participants:
age = participant["age"]
if 20 <= age < 30:
age_groups['20대'] += 1
elif 30 <= age < 40:
age_groups['30대'] += 1
elif 40 <= age < 50:
age_groups['40대'] += 1

# CategoryChartData 함수를 활용해 차트 데이터 생성
bar_chart_data = CategoryChartData()

# 차트 데이터 추가
bar_chart_data.categories = list(age_groups.keys())

# 막대 차트 추가
bar_chart_data.add_series('연령대 분포', tuple(age_groups.values()))

# 막대 차트 추가
chart = slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, Inches(5), Inches(1.5), Inches(4), Inches(3), bar_chart_data).chart

7. pptx 파일 저장

마지막으로 아래 코드는 작업한 내용을 pptx 파일로 저장합니다.

pptx 파일 저장
# output_file.pptx 파일명으로 저장
prs.save("output_file.pptx")

앞서 말씀드린 것처럼 코드로 작업한 내용을 코드프렌즈 실습 화면에서 확인하려면, 반드시 파일명을 output_file로 지정해주세요!


파이썬 코드로 어떻게 PPT를 만들 수 있는지 감을 잡으셨나요?

다음 수업에서는 파이썬을 활용해 docx 문서를 만드는 과정을 체험해보겠습니다.