4.4 CSV en python
4.4.1 La librería csv
La librería csv viene incluida en Python, por lo que no requiere instalación.
4.4.1.3 Escribir un CSV con csv.writer()
import csv
datos = [
["Nombre", "Edad"],
["Ana", 40],
["Diego", 41]
]
with open("salida.csv", "w", newline='', encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(datos)
```*
#### Escribir un CSV con cabeceras: `csv.DictWriter()`
```python
import csv
personas = [
{"Nombre": "Ana", "Edad": 40},
{"Nombre": "Diego", "Edad": 41}
]
with open("salida.csv", "w", newline='', encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=["Nombre", "Edad"])
writer.writeheader()
writer.writerows(personas)4.4.2 Trabajar con CSV usando pandas
pandas es la librería más potente para análisis de datos en Python.
4.4.3 Insertar datos en SQLite a partir de CSV
with open('venues.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
cursor.execute('''
INSERT INTO Venue (Name, Capacity, Street, Number, City)
VALUES (?, ?, ?, ?, ?)
''', (row['Name'], row['Capacity'], row['Street'], row['Number'], row['City']))A menudo un CSV contiene nombres en vez de IDs, por ejemplo:
with open("concerts.csv") as f:
reader = csv.DictReader(f)
for row in reader:
venue_name = row["Venue"].strip()
# Buscar VenueId
cur.execute("SELECT VenueId FROM Venue WHERE Name = ?", (venue_name,))
result = cur.fetchone()
if result is None:
print("ERROR: No existe el Venue:", venue_name)
continue
venue_id = result[0]
# Insertar en la tabla Concert
cur.execute("""
INSERT INTO Concert (ConcertId, VenueId, Name, Tickets, TicketsSold, Date)
VALUES (?, ?, ?, ?, ?, ?)
""", (
int(row["ConcertId"]),
venue_id,
row["Name"],
int(row["Tickets"]),
int(row["TicketsSold"]),
row["Date"]
))