Lectura y Escritura de Archivos de Datos
De Archivos a DataFramesEn el mundo real, los datos no se crean manualmente. Vienen de archivos CSV, hojas de Excel, bases de datos, APIs y mas. Pandas tiene funciones para leer practicamente cualquier formato de datos.
Leer Archivos CSV
CSV (Comma-Separated Values) es el formato mas comun en data science.
import pandas as pd
# Lectura basica
df = pd.read_csv('ventas_2025.csv')
# Con parametros comunes
df = pd.read_csv(
'datos.csv',
sep=';', # Separador (a veces es ; en lugar de ,)
encoding='latin-1', # Para archivos con caracteres especiales
header=0, # Fila del encabezado (0 = primera)
index_col='id', # Columna como indice
usecols=['id', 'nombre', 'monto'], # Solo leer estas columnas
nrows=1000, # Solo leer las primeras 1000 filas
na_values=['N/A', '-', ''], # Valores que son NaN
dtype={'codigo': str} # Forzar tipo de dato
)
print(df.head())
print(df.info())
Leer desde URL
# Leer un CSV directamente desde internet
url = 'https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv'
df_titanic = pd.read_csv(url)
print(f"Forma: {df_titanic.shape}")
print(f"Columnas: {df_titanic.columns.tolist()}")
print(df_titanic.head())
Datasets de practica
Estos son datasets publicos que podes usar para practicar:
# Dataset de Iris (clasificacion)
from sklearn.datasets import load_iris
iris = load_iris(as_frame=True)
df_iris = iris.frame
# Seaborn viene con datasets integrados
import seaborn as sns
df_tips = sns.load_dataset('tips') # Propinas en restaurante
df_penguins = sns.load_dataset('penguins') # Pinguinos Palmer
df_flights = sns.load_dataset('flights') # Vuelos de aerolineas
Leer Archivos Excel
# Lectura basica
df = pd.read_excel('reporte_ventas.xlsx')
# Con parametros
df = pd.read_excel(
'reporte.xlsx',
sheet_name='Enero', # Nombre de la hoja
header=1, # Encabezado en fila 2
usecols='A:E', # Solo columnas A a E
skiprows=3 # Saltar las primeras 3 filas
)
# Leer todas las hojas
todas_hojas = pd.read_excel('reporte.xlsx', sheet_name=None)
for nombre, df_hoja in todas_hojas.items():
print(f"Hoja: {nombre}, Filas: {len(df_hoja)}")
Guardar Archivos
# Guardar como CSV
df.to_csv('resultado.csv', index=False)
# Guardar como Excel
df.to_excel('resultado.xlsx', index=False, sheet_name='Datos')
# Guardar multiples hojas en Excel
with pd.ExcelWriter('reporte_completo.xlsx') as writer:
df_ventas.to_excel(writer, sheet_name='Ventas', index=False)
df_costos.to_excel(writer, sheet_name='Costos', index=False)
df_resumen.to_excel(writer, sheet_name='Resumen', index=False)
# Guardar en formato Parquet (mas eficiente para datasets grandes)
df.to_parquet('datos.parquet')
Leer desde Bases de Datos
from sqlalchemy import create_engine
# Conectar a PostgreSQL
engine = create_engine('postgresql://usuario:password@localhost:5432/mi_base')
# Leer con SQL
df = pd.read_sql('SELECT * FROM ventas WHERE fecha >= 2025-01-01', engine)
# Leer tabla completa
df = pd.read_sql_table('clientes', engine)
# Guardar DataFrame a SQL
df.to_sql('resultados', engine, if_exists='replace', index=False)
Leer desde APIs
import requests
# Ejemplo: API publica de datos
url = 'https://api.worldbank.org/v2/country/ARG/indicator/NY.GDP.MKTP.CD?format=json&per_page=50'
respuesta = requests.get(url)
datos = respuesta.json()
# Convertir JSON a DataFrame
df_pib = pd.DataFrame(datos[1]) # El segundo elemento tiene los datos
df_pib = df_pib[['date', 'value']].dropna()
df_pib.columns = ['Anio', 'PIB_USD']
df_pib['PIB_USD'] = df_pib['PIB_USD'].astype(float)
print(df_pib.head(10))
Manejo de Datos Grandes
Cuando tenes datasets de millones de filas:
# Leer en chunks (pedazos)
chunks = pd.read_csv('archivo_grande.csv', chunksize=100000)
resultados = []
for chunk in chunks:
# Procesar cada chunk
resumen = chunk.groupby('categoria')['monto'].sum()
resultados.append(resumen)
final = pd.concat(resultados).groupby(level=0).sum()
print(final)
# Solo leer las columnas que necesitas
df = pd.read_csv('grande.csv', usecols=['fecha', 'monto', 'categoria'])
# Usar dtypes eficientes
df = pd.read_csv('grande.csv', dtype={
'id': 'int32',
'monto': 'float32',
'categoria': 'category'
})
print(f"Memoria: {df.memory_usage(deep=True).sum() / 1e6:.1f} MB")
Video Recomendado
Como Leer Datos con Pandas - CSV, Excel, SQL
Ejercicio Practico
Crea un notebook 07_lectura_datos.ipynb:
- Descarga el dataset del Titanic desde la URL que vimos arriba
- Explora el dataset (head, info, describe, shape)
- Lee un dataset de Seaborn (tips o penguins)
- Guarda el resultado como CSV y como Excel
- Practica leyendo con diferentes parametros: encoding, sep, usecols
💡 Concepto Clave
Revisemos los puntos más importantes de esta lección antes de continuar.
Resumen
- read_csv(): El mas usado, para archivos CSV
- read_excel(): Para archivos .xlsx con multiples hojas
- read_sql(): Leer directamente desde bases de datos
- to_csv() / to_excel(): Guardar resultados
- Chunks: Para archivos que no caben en memoria
- dtypes: Optimizar uso de memoria con tipos eficientes
🧠 Pon a prueba tu conocimiento
¿Cuál es el aspecto más importante que aprendiste en esta lección?
- Comprendo el concepto principal y puedo explicarlo con mis palabras
- Entiendo cómo aplicarlo en mi situación específica
- Necesito repasar algunas partes antes de continuar
- Quiero ver más ejemplos prácticos del tema
✅ ¡Excelente! Continúa con la siguiente lección para profundizar más.