Spaces:
Sleeping
Sleeping
File size: 1,777 Bytes
8641c96 8260d44 8641c96 8de24b5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 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)}"}
|