import pandas as pd import matplotlib.pyplot as plt from matplotlib import font_manager import streamlit as st from io import BytesIO # 사용자 지정 폰트 파일 경로 font_path = r"H2GTRM.TTF" # 사용자 지정 폰트를 matplotlib에 추가 font_prop = font_manager.FontProperties(fname=font_path) font_manager.fontManager.addfont(font_path) # matplotlib의 기본 폰트를 사용자 지정 폰트로 설정 plt.rcParams['font.family'] = font_prop.get_name() # 엑셀 파일을 읽어옵니다. file_path = r"book_analysis_predictions_summary.xlsx" df = pd.read_excel(file_path) # 도서명 열을 인덱스로 설정합니다. df.set_index('도서명', inplace=True) # 월별 열을 추출합니다. months = ['2024년 7월', '2024년 8월', '2024년 9월', '2024년 10월', '2024년 11월', '2024년 12월'] # Streamlit 애플리케이션의 UI 구성 st.title('랜덤포레스트 기반 도서 대출건수 예측') # 도서명을 검색할 수 있는 입력 필드 제공 book_name = st.text_input('도서명을 입력하세요:') # 도서명을 입력했을 때만 그래프 생성 if book_name: if book_name in df.index: # 도서별 그래프 생성 fig, ax = plt.subplots() ax.plot(months, df.loc[book_name, months], marker='o', label=book_name) ax.set_title(f'{book_name} 월별 대출건수 분석') ax.set_xlabel('월') ax.set_ylabel('대출건수') ax.set_xticklabels(months, rotation=45) ax.legend(title='도서명') ax.grid(True) plt.tight_layout() # 그래프의 레이아웃을 조정 # 그래프를 Streamlit에서 표시하기 위해 BytesIO로 저장 buf = BytesIO() plt.savefig(buf, format='png') buf.seek(0) st.image(buf, use_column_width=True) # 그래프 파일을 저장 plt.close(fig) else: st.error('해당 도서명을 찾을 수 없습니다.')