typestar

csv_stats.py en Python

Estadísticas de resumen para una columna CSV, solo con la stdlib.

import csv
import statistics
import sys


def estadisticas_columna(ruta, columna):
    with open(ruta, newline="") as f:
        valores = [float(fila[columna]) for fila in csv.DictReader(f)
                  if fila.get(columna)]
    if not valores:
        raise SystemExit(f"sin valores en la columna {columna!r}")
    return {
        "conteo": len(valores),
        "media": statistics.mean(valores),
        "mediana": statistics.median(valores),
        "desvest": statistics.stdev(valores) if len(valores) > 1 else 0.0,
    }


def principal():
    if len(sys.argv) != 3:
        raise SystemExit(f"uso: {sys.argv[0]} ARCHIVO COLUMNA")
    ruta, columna = sys.argv[1], sys.argv[2]
    for nombre, valor in estadisticas_columna(ruta, columna).items():
        print(f"{nombre:>8}: {valor:.3f}")


if __name__ == "__main__":
    principal()

Cómo funciona

  1. csv.DictReader produce las filas como dicts con el encabezado por clave.
  2. Los valores se parsean a float; los vacíos se saltan.
  3. El módulo statistics aporta media, mediana y desviación estándar.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
29
Caracteres a escribir
732
Tokens
215
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 117 segundos.

Escribe este fragmento

Paso 5 de 5 en Bis; paso 72 de 72 en Fundamentos del lenguaje.

← Anterior