Construire une base de données relationnelle

Partie 3
Chapitre 3 sur 5
Partie 3 – Explorer et préparer les données avec Python

Préparation de données : dates, remplir, convertir, remplacer

Transformer une colonne date en format datetime

pd.to_datetime(pd.Series) : converti la colonne en datetime.

air_quality['Date Time'] = pd.to_datetime(air_quality['Date Time'])
air_quality['Generated'] = pd.to_datetime(air_quality['Generated'])

Modifier le format de la date

pd.Series.dt.strftime().astype() : converti la date avec le format spécifié.

– Series.dt.strftime() : transforme la colonne date en caractère avec le format spécifié.
– Series.astype() : converti la série avec le type spécifié.

air_quality['Date Time'] = air_quality['Date Time'].dt.strftime('%Y-%m-%d').astype('datetime64[ns]')
air_quality['Generated'] = air_quality['Generated'].dt.strftime('%Y-%m-%d').astype('datetime64[ns]')

NB : Vous pouvez enchainer les deux codes précédents comme : pd.to_datetime(air_quality['Date Time']).dt.strftime('%Y-%m-%d').astype('datetime64[ns]').

Vous vous demandez peut-être pourquoi nous avons utilisé pd.to_datetime la première fois puis astype('datetime64[ns]') la seconde fois. Les deux méthodes sont globalement les mêmes, cependant il y a des différences et la méthode to_datetime de pandas permet une multitude de fonctionnalités que la méthode de conversion astype ne permet pas. Par exemple, to_datetime permet la gestion des valeurs aberrantes avec l’argument errors = 'coerce' qui remplace la valeur par un NaT (valeur nulle pour les dates). De plus, afin de personnaliser notre format date, nous avons utilisé pd.Series.dt.strftime() qui transforme le format date en string. Si nous avions converti la date avec to_datetime(), le format aurait été celui par défaut et nous aurions donc perdu notre modification. Ici, pd.Series.astype() permet de convertir une colonne en date en gardant le format attribué. Enfin, gardez en tête que pd.Series.astype() est plus performante que la première méthode (je ne parle pas d’efficacité, mais bien de performance).

to_datetime() : plus de fonctionnalités
Series.astype() : plus performant

Remplir des valeurs NULL

pd.Series.fillna() : remplir les valeurs manquantes par les valeurs spécifiées.

– Ajouter le paramètre ‘method’ permet de spécifier une méthode de remplissage comme :
– ‘method = bfill’ (rempli les valeurs manquantes avec la valeur suivante valide)
– ‘method = ffill’ (rempli les valeurs manquantes avec la valeur précédente valide).

for c in air_quality.columns:
if c.endswith("Value"):
air_quality[c] = air_quality[c].fillna(0)

Convertir le type d’une colonne

pd.Series.astype() : convertir la série avec le type spécifié.

for c in air_quality.columns:
if c.endswith("Value"):
air_quality[c] = air_quality[c].astype('int')

 

Remplacer des valeurs

pd.Series.replace() : remplacer les valeurs spécifiées (valeurs avant, valeurs après).

– Ajouter le paramètre ‘method’ permet de spécifier une méthode de remplacement comme :
– ‘method = bfill’ (remplace les valeurs avec la valeur suivante valide)
– ‘method = ffill’ (remplace les valeurs avec la valeur précédente valide).

replace_values = {'Good' : 2, 'Moderate' : 1, '--' : 0 }
air_quality['Air Quality'] = air_quality['Air Quality'].replace(replace_values)