import pandas as pd import streamlit as st @st.cache_data(hash_funcs={pd.DataFrame: lambda _: None}) def load_leaderboard(file_path="data/results_df_all_tuned.csv"): """ Tải và xử lý file CSV chứa kết quả leaderboard của các mô hình. Args: file_path (str): Đường dẫn đến file CSV leaderboard. Returns: pd.DataFrame: DataFrame đã được sắp xếp, sẵn sàng để hiển thị. """ try: df = pd.read_csv(file_path) SORT_COLUMN_NAME = 'RMSE (Absolute Error)' if SORT_COLUMN_NAME in df.columns: df_sorted = df.sort_values(by=SORT_COLUMN_NAME, ascending=True) else: st.warning(f"Không tìm thấy cột '{SORT_COLUMN_NAME}' để sắp xếp leaderboard. " f"Vui lòng kiểm tra file `src/benchmark_utils.py`.") df_sorted = df return df_sorted except FileNotFoundError: st.error(f"LỖI: Không tìm thấy file leaderboard tại đường dẫn: {file_path}") return pd.DataFrame() # Trả về DataFrame rỗng nếu có lỗi except Exception as e: st.error(f"Lỗi khi tải leaderboard: {e}") return pd.DataFrame()