|
|
import pandas as pd
|
|
|
from huggingface_hub import hf_hub_download
|
|
|
|
|
|
class ExcelAnalysisTool:
|
|
|
def __init__(self):
|
|
|
self.name = "ExcelAnalysisTool"
|
|
|
self.description = (
|
|
|
"Loads an Excel file from the GAIA dataset on Hugging Face and calculates "
|
|
|
"the total sales for items labeled as 'food', excluding drinks. "
|
|
|
"Provide input as a string with the filename, e.g., 'sales_data.xlsx'."
|
|
|
)
|
|
|
self.repo_id = "gaia-benchmark/GAIA"
|
|
|
|
|
|
def __call__(self, filename: str) -> str:
|
|
|
"""
|
|
|
Loads and processes the Excel file.
|
|
|
|
|
|
Args:
|
|
|
filename (str): The name of the Excel file (e.g., 'sales_data.xlsx').
|
|
|
|
|
|
Returns:
|
|
|
str: Total food sales in USD, or an error message.
|
|
|
"""
|
|
|
try:
|
|
|
|
|
|
file_path = hf_hub_download(
|
|
|
repo_id=self.repo_id,
|
|
|
filename=filename,
|
|
|
repo_type="dataset"
|
|
|
)
|
|
|
|
|
|
|
|
|
df = pd.read_excel(file_path)
|
|
|
|
|
|
|
|
|
food_sales = df[
|
|
|
(df['category'].str.lower() == 'food') &
|
|
|
(df['item'].str.lower() != 'drinks')
|
|
|
]
|
|
|
|
|
|
total_sales = food_sales['sales'].sum()
|
|
|
return f"Total sales for food items: ${total_sales:.2f}"
|
|
|
|
|
|
except FileNotFoundError:
|
|
|
return "Error: The specified file was not found."
|
|
|
except KeyError as e:
|
|
|
return f"Error: Missing expected column in the Excel file: {str(e)}"
|
|
|
except Exception as e:
|
|
|
return f"An unexpected error occurred: {str(e)}"
|
|
|
|