import streamlit as st import pandas as pd import altair as alt # Streamlit 페이지 설정 st.set_page_config(page_title="도서 대출 수요 예측", layout="wide") # 페이지에 이미지 나란히 표시 st.title("도서 대출 예측 분석") # 이미지 파일 경로 image1 = "image-1.jpeg" image2 = "image-2.jpeg" # 두 개의 이미지를 나란히 배치 col1, col2 = st.columns(2) with col1: st.image(image1, caption="이미지 1", use_column_width=True) with col2: st.image(image2, caption="이미지 2", use_column_width=True) # 엑셀 파일 경로 file_path = r'book_analysis_summary.xlsx' # 엑셀 파일 읽기 df = pd.read_excel(file_path) # 그룹 선택 group_column = '연령_성별' if group_column in df.columns: st.sidebar.title("그룹 선택") groups = df[group_column].unique() selected_group = st.sidebar.selectbox("그룹 선택", groups) # 선택된 그룹의 데이터 필터링 filtered_data = df[df[group_column] == selected_group] # 필요한 열만 추출 (예측 대출건수, 실제 대출건수) filtered_data = filtered_data[['연령_성별', '예측 대출건수', '실제 대출건수']] # 필터링된 데이터 표시 st.write(f"선택한 카테고리: {selected_group}") st.write(filtered_data) # 데이터를 세로 막대 그래프로 시각화 chart_data = filtered_data.melt(id_vars='연령_성별', var_name='Type', value_name='Count') bar_chart = alt.Chart(chart_data).mark_bar().encode( x=alt.X('연령_성별:N', title='연령대 및 성별'), y=alt.Y('Count:Q', title='대출건수'), color='Type:N', column='Type:N' ).properties( width=300, height=400 ).configure_axis( labelFontSize=12, titleFontSize=14 ) st.altair_chart(bar_chart, use_container_width=True)