Estadísticas de un CSV
Antes de limpiar, filtrar o cargar un conjunto de datos, necesita saber qué hay realmente en él: qué columnas están llenas de nulos, qué campo numérico tiene un valor atípico diez veces mayor que la mediana, qué columna supuestamente categórica tiene 400 valores distintos en vez de cinco. Este endpoint perfila un CSV columna por columna y devuelve exactamente ese panorama, sin que tenga que revisar una hoja de cálculo a simple vista ni escribir código de análisis desechable.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Por qué se perfila antes de confiar en un dataset
Todo profesional de datos ha aprendido esta lección por las malas al menos una vez: carga un archivo, construye algo encima, y solo después descubre que una columna clave estaba vacía en un 30%, o que un campo de fecha mezclaba tres formatos distintos, o que una columna de montos tenía valores negativos que nadie esperaba. Perfilar un dataset primero no es trabajo extra, es el paso que evita construir sobre una base que no ha inspeccionado realmente, y marca la diferencia entre encontrar un problema de calidad en cinco segundos o encontrarlo en producción.
Qué reporta realmente un perfil
Llame a POST /data/csv-stats con su archivo y la tarea devuelve, para cada columna, su tipo inferido, el conteo y porcentaje de valores nulos o vacíos, y estadísticas apropiadas según el tipo: mínimo, máximo, media y mediana para columnas numéricas; el número de valores distintos y los más frecuentes para columnas categóricas o de texto; la fecha más antigua y más reciente para columnas de fecha. Es el mismo censo que haría manualmente un analista cuidadoso con una tabla dinámica, condensado en una sola pasada automatizada sobre todo el archivo.
Las distribuciones cuentan una historia distinta a los promedios
Un promedio por sí solo puede esconder exactamente el problema que está buscando: un valor promedio de pedido de $85 parece normal hasta que la distribución muestra que la mayoría de los pedidos rondan los $20 y un puñado de valores atípicos cercanos a $2,000 están jalando el promedio hacia arriba. Reportar la forma de la distribución y la frecuencia de valores junto a las estadísticas resumidas, en vez de un simple promedio, es lo que convierte un perfil en algo que realmente señala dónde un dataset merece una mirada más cercana.
Una disciplina más antigua que las herramientas que la automatizan
El análisis exploratorio de datos como disciplina formal se remonta al trabajo del estadístico John Tukey en los años setenta, construido sobre la idea de que hay que entender la forma de un dataset antes de modelarlo o sacar conclusiones de él. Lo que antes requería calcular estadísticas resumidas a mano o construir histogramas manualmente, hoy lo puede producir una sola llamada automatizada, pero el principio de fondo no ha cambiado: mirar antes de lanzarse al análisis, la limpieza o una importación a producción.
Su lugar dentro de un flujo de datos
Como el perfilado corre de forma asíncrona y devuelve un task_id de inmediato, encaja de forma natural como primer paso antes de que cualquier otra cosa toque un dataset nuevo: ejecútelo sobre un archivo de un socio al recibirlo para detectar problemas de calidad antes de un paso de transformación o unión, o ejecútelo periódicamente sobre la exportación de una tabla para monitorear cómo cambia su forma con el tiempo. Los resultados llegan por webhook firmado o por un enlace firmado válido por 24 horas, listos para alimentar una compuerta de calidad automatizada o simplemente ayudar a una persona a decidir si un archivo es suficientemente confiable para cargarlo.
Qué puede hacer con ella
Compuerta de calidad para archivos entrantes
Perfile cada CSV de un socio al recibirlo y marque automáticamente los archivos donde una columna obligatoria supera un porcentaje aceptable de nulos, antes de que llegue a un trabajo de importación.
Análisis exploratorio antes de modelar
Obtenga distribuciones y rangos de valores atípicos por columna de un dataset nuevo en segundos, en vez de construir tablas dinámicas a mano para entender su forma.
Monitoreo de deriva de esquema
Corra estadísticas sobre una exportación recurrente a lo largo del tiempo para detectar cuando el número de valores distintos o la tasa de nulos de una columna cambia en silencio, señal de un cambio en el sistema de origen.
Priorización de limpieza de datos
Identifique qué columnas realmente necesitan atención, ordenadas por porcentaje de nulos y presencia de valores atípicos, en lugar de limpiar todas las columnas por igual.
Preguntas frecuentes
¿Qué estadísticas devuelve esta api de estadisticas de un csv por columna?
Para cada columna devuelve el tipo inferido, el conteo y porcentaje de nulos, además de estadísticas según el tipo: mínimo, máximo, media y mediana para números, valores distintos y más frecuentes para texto, y fecha más antigua y más reciente para fechas.
¿Detecta valores atípicos?
Muestra la distribución y el rango de valores de las columnas numéricas, incluyendo mínimo y máximo, lo que hace visibles los valores atípicos junto a la media y la mediana en vez de esconderlos detrás de un solo promedio.
¿Hay un plan gratuito para probar el endpoint csv-stats?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Puedo perfilar un archivo CSV muy grande?
Sí, envíelo como una solicitud asíncrona y reciba un task_id de inmediato, así el perfil se calcula en segundo plano sin importar el tamaño del archivo.
¿Esto modifica o limpia mis datos?
No, csv-stats solo analiza y reporta; nunca altera el archivo de origen, así que es seguro ejecutarlo sobre exportaciones de producción antes de decidir qué limpiar.
¿En qué se diferencia de simplemente abrir el archivo en una hoja de cálculo?
Una hoja de cálculo requiere construir tablas dinámicas o fórmulas a mano por columna y se traba después de unos cientos de miles de filas; este endpoint perfila cada columna automáticamente sin importar el tamaño del archivo.
¿Cómo recibo el reporte de estadísticas?
A través de un webhook firmado, recomendado para flujos automatizados, o un enlace firmado válido por 24 horas para revisarlo manualmente.
¿Cuánto cuesta la API de estadísticas de CSV?
$0.002 por solicitud, cobrado únicamente cuando la tarea de perfilado se completa con éxito.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/csv-stats \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/csv-stats", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/csv-stats",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/csv-stats", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/csv-stats", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.csv_stats",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |