A-Mistral-Agent / src /tools /analyze_excel.py
mriusero
feat: improve tools
dc1621b
from src.utils.tooling import tool
import pandas as pd
@tool
def analyze_excel(file_path: str, sheet_name: str = None, specific_columns: list = None) -> str:
"""
Analyzes data from an Excel file to extract specific information.
Args:
file_path (str): The path to the Excel file to analyze.
sheet_name (str, optional): The name of the sheet to read. If None, the first sheet is used.
specific_columns (list, optional): A list of column names to extract. If None, all columns are extracted.
Returns:
str: Extracted information in text or structured data format.
"""
try:
if sheet_name:
df = pd.read_excel(file_path, sheet_name=sheet_name)
else:
df = pd.read_excel(file_path)
if specific_columns:
df = df[specific_columns]
result = f"# Excel file loaded successfully !\n\n"
result += f"## Structure of the data\n * `{len(df)} rows`\n * `{len(df.columns)} columns`\n\n"
result += f"## Columns\n\n {', '.join(df.columns)}\n\n"
result += "## Raw table\n\n"
result += df.to_markdown(index=False)
result += "\n\n"
#result += "## Summary statistics\n\n"
#result += df.describe().to_markdown()
#result += "\n\n"
result += "## Recommendations\n\n(WARNING) Identify the columns that are relevant to your analysis before proceed to any calculus.\n\n"
return result
except FileNotFoundError:
return "File not found. Please check the file path."
except pd.errors.EmptyDataError:
return "The Excel file is empty."
except pd.errors.ParserError:
return "Error parsing the Excel file."
except Exception as e:
return f"An error occurred: {str(e)}"