Gérer les types de données CSV
Lorsque vous travaillez avec des données CSV en Python, il est important de comprendre et de gérer les différents types de données qui peuvent être présents dans le fichier. Les fichiers CSV peuvent contenir une variété de types de données, tels que des chaînes de caractères, des entiers, des nombres à virgule flottante, voire des dates ou des horodatages.
Inférence automatique des types de données
Par défaut, la fonction csv.reader()
en Python traite toutes les données comme des chaînes de caractères. Cela signifie que si votre fichier CSV contient des valeurs numériques ou des dates/horaires, elles seront lues comme des chaînes de caractères. Pour gérer ce problème, vous pouvez utiliser la classe csv.DictReader
, qui infère automatiquement les types de données en fonction des valeurs dans le fichier 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']}")
Dans cet exemple, la classe csv.DictReader
convertit automatiquement la colonne 'Age'
en un type de données entier.
Conversion manuelle des types de données
Si vous avez besoin d'un meilleur contrôle sur les types de données, vous pouvez convertir manuellement les valeurs après avoir lu le fichier CSV. Voici un exemple :
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)
Dans cet exemple, la fonction int()
est utilisée pour convertir la colonne 'Age'
en un type de données entier.
Gérer les types de données manquants ou incorrects
Parfois, le fichier CSV peut contenir des données qui ne peuvent pas être converties automatiquement ou manuellement en le type de données souhaité. Dans de tels cas, vous pouvez gérer les exceptions et fournir des valeurs par défaut ou ignorer les lignes problématiques.
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)
Dans cet exemple, le code utilise un bloc try-except
pour gérer toute erreur IndexError
(si une ligne a moins de colonnes que prévu) ou ValueError
(si la colonne 'Age'
ne peut pas être convertie en un entier). Si une exception se produit, la ligne problématique est ignorée et le reste des données est traité.
En comprenant comment gérer différents types de données dans les fichiers CSV, vous pouvez vous assurer que votre code Python peut travailler et traiter efficacement les données, quelle que soit leur format.