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
csv.DictReaderproduce las filas como dicts con el encabezado por clave.- Los valores se parsean a float; los vacíos se saltan.
- El módulo
statisticsaporta media, mediana y desviación estándar.
Palabras clave y builtins usados aquí
asdefelsefloatforiflenopenprintraisereturnwith
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.
Paso 5 de 5 en Bis; paso 72 de 72 en Fundamentos del lenguaje.