terceiroAgente / tools /statistical_graph_analyzer.py
Lar159's picture
Update tools/statistical_graph_analyzer.py
8260d44 verified
Raw
History Blame Contribute Delete
1.78 kB
import numpy as np
from scipy import stats
from smolagents.tools import tool
from typing import List, Dict, Any
@tool
def analyze_dataset(data: List[float]) -> Dict[str, Any]:
"""
Analisa um conjunto de dados numéricos e retorna as principais medidas estatísticas.
Esta função é útil para interpretar e comparar conjuntos de dados (EM13MAT407).
Args:
data: Uma lista de números (int ou float) para ser analisada.
Returns:
Um dicionário contendo as medidas de tendência central (média, mediana, moda),
a amplitude e as medidas de dispersão (variância, desvio padrão).
"""
if not data:
return {"erro": "A lista de dados não pode estar vazia."}
try:
# Medidas de Tendência Central
mean_val = np.mean(data)
median_val = np.median(data)
# A moda pode ter múltiplos valores ou nenhum
mode_result = stats.mode(data, keepdims=False)
mode_val = mode_result.mode.tolist() if mode_result.count > 0 else 'Não há moda única'
# Amplitude
amplitude = np.ptp(data)# (max - min)
# Medidas de Dispersão
variance_val = np.var(data)
std_dev_val = np.std(data)
return {
"medidas_de_tendencia_central": {
"media": round(mean_val, 2),
"mediana": round(median_val, 2),
"moda": mode_val
},
"amplitude": round(amplitude, 2),
"medidas_de_dispersao": {
"variancia": round(variance_val, 2),
"desvio_padrao": round(std_dev_val, 2)
},
"total_de_elementos": len(data)
}
except Exception as e:
return {"erro": f"Erro ao analisar os dados: {str(e)}"}