Manejo de tipos de datos CSV
Cuando se trabaja con datos CSV en Python, es importante entender y manejar los diferentes tipos de datos que pueden estar presentes en el archivo. Los archivos CSV pueden contener una variedad de tipos de datos, como cadenas de texto, enteros, números de punto flotante e incluso fechas o marcas de tiempo.
Inferencia automática de tipos de datos
Por defecto, la función csv.reader()
en Python trata todos los datos como cadenas de texto. Esto significa que si tu archivo CSV contiene valores numéricos o de fecha/hora, se leerán como cadenas de texto. Para manejar esto, puedes utilizar la clase csv.DictReader
, que infiere automáticamente los tipos de datos en función de los valores en el archivo CSV.
import csv
with open('data.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
print(f"Name: {row['Name']}, Age: {row['Age']}, Email: {row['Email']}")
En este ejemplo, la clase csv.DictReader
convierte automáticamente la columna 'Age'
a un tipo de dato entero.
Conversión manual de tipos de datos
Si necesitas más control sobre los tipos de datos, puedes convertir manualmente los valores después de leer el archivo CSV. Aquí tienes un ejemplo:
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
header = next(reader)
data = []
for row in reader:
data_row = {
'Name': row[0],
'Age': int(row[1]),
'Email': row[2]
}
data.append(data_row)
print(data)
En este ejemplo, se utiliza la función int()
para convertir la columna 'Age'
a un tipo de dato entero.
Manejo de tipos de datos faltantes o incorrectos
A veces, el archivo CSV puede contener datos que no se pueden convertir automática o manualmente al tipo de dato deseado. En tales casos, puedes manejar las excepciones y proporcionar valores predeterminados o omitir las filas problemáticas.
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
header = next(reader)
data = []
for row in reader:
try:
data_row = {
'Name': row[0],
'Age': int(row[1]),
'Email': row[2]
}
data.append(data_row)
except (IndexError, ValueError):
print(f"Skipping row: {row}")
continue
print(data)
En este ejemplo, el código utiliza un bloque try-except
para manejar cualquier IndexError
(si una fila tiene menos columnas de las esperadas) o ValueError
(si la columna 'Age'
no se puede convertir a un entero). Si se produce una excepción, se omite la fila problemática y se procesa el resto de los datos.
Al entender cómo manejar diferentes tipos de datos en archivos CSV, puedes asegurarte de que tu código de Python pueda trabajar y procesar los datos de manera efectiva, independientemente de su formato.