import streamlit as st import pandas as pd # 파일 경로 설정 FILE_PATH = "book_topics_output_modified.xlsx" # 엑셀 파일을 읽어오는 함수 def load_data(file_path): return pd.read_excel(file_path) # Streamlit 애플리케이션 def main(): st.title("키워드 기반 도서 추천") # 데이터 로드 data = load_data(FILE_PATH) # 최종토픽 열이 있는지 확인 if '최종토픽' not in data.columns: st.error("최종토픽 열이 데이터에 없습니다.") return # 최종토픽 카테고리 선택 topic_category = st.selectbox( "최종토픽을 선택하세요:", sorted(data['최종토픽'].unique()) ) # 선택된 토픽에 해당하는 도서 목록 필터링 filtered_data = data[data['최종토픽'] == topic_category] # 도서명 열이 있는지 확인 if '도서명' not in data.columns: st.error("도서명 열이 데이터에 없습니다.") return # 숫자 열이 있는지 확인 numeric_cols = [col for col in filtered_data.columns if pd.api.types.is_numeric_dtype(filtered_data[col])] if not numeric_cols: st.error("숫자 열이 없습니다.") return # 가장 높은 값을 가진 숫자 열 선택 number_col = numeric_cols[0] # 첫 번째 숫자 열 사용 # 상위 10개 도서명 추출 top_books = filtered_data.nlargest(20, number_col)[['도서명', number_col]] # 도서명만 출력 st.write(f"최종토픽 '{topic_category}'에 해당하는 상위 20개 도서명:") st.dataframe(top_books[['도서명']]) # 도서명만 표시 if __name__ == "__main__": main()