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 파일을 생성하고 슬라이드를 추가해 보겠습니다.
# 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
파일로 저장합니다.
# output_file.pptx 파일명으로 저장
prs.save("output_file.pptx")
앞서 말씀드린 것처럼 코드로 작업한 내용을 코드프렌즈 실습 화면에서 확인하려면, 반드시 파일명을
output_file
로 지정해주세요!
파이썬 코드로 어떻게 PPT를 만들 수 있는지 감을 잡으셨나요?
다음 수업에서는 파이썬을 활용해 docx 문 서
를 만드는 과정을 체험해보겠습니다.