정기예금 상품 목록 입력하기
비주얼 스튜디오 코드에서 새로운 파일을 만들고, 파일명을 'step_3_4.py'로 지정합니다. 다음 코드를 입력한 후, 대화형 창에서 실행합니다. 정기예금 상품 데이터가 입력된 워드 파일이 생성됩니다.
ch_10/step_3_4.py
from pathlib import Path
import pandas as pd
from docx import Document
from docx.enum.table import WD_ALIGN_VERTICAL, WD_TABLE_ALIGNMENT
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Mm
from step_1_1 import OUT_DIR
from step_1_2 import OUT_1_2
from step_3_1 import apply_font
from step_3_2 import add_blank_paragraph
from step_3_3 import OUT_3_3
OUT_3_4 = OUT_DIR / f"{Path(__file__).stem}.docx"
def insert_deposit_info(n_rows: int = 10): # 15
doc = Document(OUT_3_3)
r_head = doc.add_paragraph().add_run("2. 주요 정기예금 상품 및 금리")
apply_font(r_head, size_pt=14, is_bold=True) # 폰트
add_blank_paragraph(doc, size_pt=2) # 빈 단락
table = doc.add_table(rows=1, cols=2,
style="Light Shading Accent 4") # 표
table.alignment = WD_TABLE_ALIGNMENT.CENTER # 표 가로 정렬
table.allow_autofit = False # 표 너비 자동 맞춤 해제
tr = table.rows[0] # 첫 번째 행(헤더) 반환 # 26
th_text = ["금융기관", "상품명", "이자계산",
"만기(월)", "세전금리", "최고우대"]
col_width = [Mm(40), Mm(50), Mm(20),
Mm(20), Mm(20), Mm(20)] # 열 너비
for idx, th in enumerate(tr.cells):
th.width = col_width[idx]
th.vertical_alignment = WD_ALIGN_VERTICAL.CENTER
p_th = th.paragraphs[0]
p_th.alignment = WD_ALIGN_PARAGRAPH.LEFT # 가로 정렬
r_th = p_th.add_run(f"{th_text[idx]}")
apply_font(r_th, size_pt=12, is_bold=True) # 37
df_raw = pd.read_excel(OUT_1_2) # 정기예금 데이터
df_filter = df_raw.filter(["kor_co_nm", "fin_prdt_nm", # 40
"intr_rate_type_nm", "save_trm",
"intr_rate", "intr_rate2"]) # 필터링 # 42
df_sort = df_filter.sort_values("intr_rate", # 43
ascending=False) # 정렬 # 44
for _, se_row in df_sort.head(n_rows).iterrows():
tr = table.add_row() # 행 추가
for idx, td in enumerate(tr.cells):
td.width = col_width[idx] # 셀 너비
td.vertical_alignment = WD_ALIGN_VERTICAL.CENTER # 셀 정렬
p_td = td.paragraphs[0] # 첫 번째 딘릭
if idx < 2: # 첫 두 개의 셀은 텍스트 배분 정렬 적용
p_td.alignment = WD_ALIGN_PARAGRAPH.DISTRIBUTE
p_td.paragraph_format.space_before = Mm(2) # 단락 앞 간격
p_td.paragraph_format.space_after = Mm(2) # 단락 뒤 간격
p_td.add_run(f"{se_row.iloc[idx]}") # 내용 셀 입력
add_blank_paragraph(doc, size_pt=10) # 빈 단락
doc.save(OUT_3_4)
if __name__ == "__main__":
insert_deposit_info(10) # 62
15 정기예금 상품 데이터를 입력하는 함수 insert_deposit_info()를 정의합니다. 매개변수 n_rows는 상품의 개수입니다.
26~27 표의 헤더를 사용할 데이터를 입력하고 서식을 지정합니다.
40~42 함수 filter()를 사용해서 정기예금 상품 데이터에서 필요한 열을 필터링합니다.
43~44 함수 sort_values()를 사용해서 세전금리를 기준으로 내림차순 정렬합니다.
62 금리를 기준으로 내림차순 정렬된 정기계음 상품 10개를 출력합니다.
'output' 폴더에 생성된 워드 파일 'step_3_4.docx'을 열어 정기예금 상품 데이터가 표에 잘 삽입되었는지 확인합니다. 삽입된 표에는 금융회사, 상품명, 이자계산 방법, 만기(월), 세전금리, 최고 우대 열이 순서대로 제시되었고, 표의 서식도 올바르게 적용되어 있습니다.

'프로그래밍 언어 > Python' 카테고리의 다른 글
| 법정동 데이터 수집하기 (0) | 2026.05.29 |
|---|---|
| 아파트 매매 실거래가 지도 (0) | 2026.05.26 |
| 주요 금리지표 데이터 입력하기 (0) | 2026.05.20 |
| 정기예금 금리 현황표 작성하기 - 보고서 작성하기(제목 입력) (0) | 2026.05.17 |
| 정기예금 금리 현황표 작성하기 - 보고서 작성하기(레이아웃 설정) (0) | 2026.05.14 |