Guidelines

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 λ¬Έμ„œλ₯Ό λ§Œλ“œλŠ” 과정을 μ²΄ν—˜ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

Mission
0 / 1

Run the code and check the results.

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result

Result

The document is empty.

Try running the code.