dltmdgus/RandomForest
0
1import pandas as pd2import matplotlib.pyplot as plt3from matplotlib import font_manager4import streamlit as st5from io import BytesIO6 7# 사용자 지정 폰트 파일 경로8font_path = r"H2GTRM.TTF"9 10# 사용자 지정 폰트를 matplotlib에 추가11font_prop = font_manager.FontProperties(fname=font_path)12font_manager.fontManager.addfont(font_path)13 14# matplotlib의 기본 폰트를 사용자 지정 폰트로 설정15plt.rcParams['font.family'] = font_prop.get_name()16 17# 엑셀 파일을 읽어옵니다.18file_path = r"book_analysis_predictions_summary.xlsx"19df = pd.read_excel(file_path)20 21# 도서명 열을 인덱스로 설정합니다.22df.set_index('도서명', inplace=True)23 24# 월별 열을 추출합니다.25months = ['2024년 7월', '2024년 8월', '2024년 9월', '2024년 10월', '2024년 11월', '2024년 12월']26 27# Streamlit 애플리케이션의 UI 구성28st.title('랜덤포레스트 기반 도서 대출건수 예측')29 30# 도서명을 검색할 수 있는 입력 필드 제공31book_name = st.text_input('도서명을 입력하세요:')32 33# 도서명을 입력했을 때만 그래프 생성34if book_name:35 if book_name in df.index:36 # 도서별 그래프 생성37 fig, ax = plt.subplots()38 ax.plot(months, df.loc[book_name, months], marker='o', label=book_name)39 ax.set_title(f'{book_name} 월별 대출건수 분석')40 ax.set_xlabel('월')41 ax.set_ylabel('대출건수')42 ax.set_xticklabels(months, rotation=45)43 ax.legend(title='도서명')44 ax.grid(True)45 plt.tight_layout() # 그래프의 레이아웃을 조정46 47 # 그래프를 Streamlit에서 표시하기 위해 BytesIO로 저장48 buf = BytesIO()49 plt.savefig(buf, format='png')50 buf.seek(0)51 st.image(buf, use_column_width=True)52 53 # 그래프 파일을 저장54 plt.close(fig)55 else:56 st.error('해당 도서명을 찾을 수 없습니다.')57 