Lectura de Datos (I/O)
En el trabajo corporativo no creamos diccionarios a mano: abrimos bases crudas de miles o millones de filas.
Estas bases suelen ser archivos CSV o respuestas SQL. Aquí dominarás read_csv(), la función
estrella para ingerir datos.
Teoría: El Input/Output de pandas
La sigla I/O (Input/Output o Entrada/Salida) se refiere a cómo la máquina virtual de Python recibe datos del exterior (Input) y los exporta modificados (Output).
A diferencia de Excel, donde tenés que dar Doble Clic sobre un ícono y esperar a que la computadora cargue una interfaz pesada y visual, pandas puede ingerir archivos ridículamente grandes ("millones de registros") silenciosamente en de un instante.
La familia read_*()
Todos los comandos de lectura en pandas empiezan con pd.read_ seguido de la extensión/formato. Los
más usados son:
pd.read_csv("archivo.csv"): Para la gran mayoría de datos exportados de DBs o sistemas. (CSV = Comma Separated Values).pd.read_excel("ventas.xlsx"): Para archivos puros de Excel con pestañas.pd.read_sql(): Para ir a buscar la tabla directamente usando una query contra un motor en vivo.pd.read_json(): Muy usado cuando consultamos un endpoint web/API.
io.StringIO que hace que Python crea que un simple texto largo
escrito en el código es un archivo real. En tu trabajo de escritorio esto no será necesario (basta con poner la
URL local).Ejemplo: Tu primer read_csv()
A continuación vamos a simular un archivo CSV extraído de las ventas regionales en sucursales en Argentina. Observá cómo transformamos el texto separado por comas directamente al poderoso DataFrame.
Hacé clic en ▶ Ejecutar
El clásico problema de delimitadores
En USA/Europa las bases de datos separan las columnas con comas (,). Pero en Argentina usamos la
coma para los decimales (ej $15,50), entonces nuestros sistemas viejos exportan CSVs separados por
puntos y comas (;) u otros caracteres.
Si intentás leer eso con "read_csv" estandar, todo colapsará. Para evitarlo la función tiene el mejor parámetro
salva-vidas: sep=";".
Hacé clic en ▶ Ejecutar
Observar la cabecera: .head() y .tail()
Cuando ingestás millones de filas de datos, si imprimís usando print(df), la pantalla se colgaría
o te mostraría tanto texto que tu cerebro se tilda. A los Data Analysts les encantan dos funciones para "ver
rapidito qué nos trajo la base de datos":
df.head(n)(Devuelve las primeras "n" filas. Por omisión: 5)df.tail(n)(Devuelve las últimas "n" filas. Excelente para ver si el reporte llegó al final adecuadamente)
Hacé clic en ▶ Ejecutar
df.head() al iniciar tus scripts (o
Notebooks) permite validar rápidamente que a) El separador esté correcto, b) Las columnas mantengan nombres
sanos, c) No haya filas de basura.Ejercicios interactivos
Manos al bloque. Practicá la ingesta del sistema simulado.
Ejercicio 1: Tu primera lectura con separador
El sistema te devuelve un texto separado por tabulaciones o barras. Acá usaremos la coma. Dejá el separador
default, decile a Pandas que lea el buffer usando read_csv() y guardalo en la variable
`df_empleados`. Luego imprimí TODO usando `print()`.
Hacé clic en ▶ Ejecutar
Ejercicio 2: Exigiendo separadores estrictos
Trabajás en un banco, y el sistema Cobis viejo reporta los balances de las cuentas usando el símbolo
ampersand &. Modificá el parámetro sep para que lea bien la base de datos y mostrá
solamente el promedio (usando .mean()) de los Saldos.
Hacé clic en ▶ Ejecutar
Ejercicio 3: Extracción exploratoria con Head
Usá .head(2) en un print para validar las primeras 2 filas. El output debe contar con la
presencia de "Apple" validándose que leímos el top 2 exitosamente.
Hacé clic en ▶ Ejecutar
Reflexión Final
Leer datos parece un paso simple, pero configurar correctamente read_csv() va a evitar que pierdas
horas limpiando caracteres fantasmas en el futuro.
Ahora que las bases de datos externas ya están en nuestro entorno local formadas como DataFrames perfectos, comienza el verdadero trabajo: cómo encontrar exactamente los clientes, fechas o productos que el gerente nos está exigiendo buscar.
Avanzá a la siguiente lección (04 · pandas: selección y filtrado) para aprender la parte de Queries y filtros.