Pandas : comment calculer une différence entre deux temps
Vous pouvez utiliser la syntaxe suivante pour calculer une différence entre deux heures dans un DataFrame pandas :
#calculate time difference in hours df['hours_diff'] = (df.end_time - df.start_time) / pd.Timedelta(hours=1) #calculate time difference in minutes df['min_diff'] = (df.end_time - df.start_time) / pd.Timedelta(minutes=1) #calculate time difference in seconds df['sec_diff'] = (df.end_time - df.start_time) / pd.Timedelta(seconds=1)
Cet exemple particulier calcule la différence entre les heures dans les colonnes end_time et start_time de certains pandas DataFrame.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : calculer la différence entre deux fois chez les pandas
Supposons que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df=pd.DataFrame({'start_time':pd.date_range(start='5/25/2020',periods=6,freq='15min'), 'end_time':pd.date_range(start='5/26/2020',periods=6,freq='30min')}) #view DataFrame print(df) start_time end_time 0 2020-05-25 00:00:00 2020-05-26 00:00:00 1 2020-05-25 00:15:00 2020-05-26 00:30:00 2 2020-05-25 00:30:00 2020-05-26 01:00:00 3 2020-05-25 00:45:00 2020-05-26 01:30:00 4 2020-05-25 01:00:00 2020-05-26 02:00:00 5 2020-05-25 01:15:00 2020-05-26 02:30:00
Nous pouvons utiliser la syntaxe suivante pour calculer la différence de temps entre les colonnes start_time et end_time en termes d’heures, de minutes et de secondes :
#calculate time difference in hours df['hours_diff'] = (df.end_time - df.start_time) / pd.Timedelta(hours=1) #calculate time difference in minutes df['min_diff'] = (df.end_time - df.start_time) / pd.Timedelta(minutes=1) #calculate time difference in seconds df['sec_diff'] = (df.end_time - df.start_time) / pd.Timedelta(seconds=1) #view updated DataFrame print(df) start_time end_time hours_diff min_diff sec_diff 0 2020-05-25 00:00:00 2020-05-26 00:00:00 24.00 1440.0 86400.0 1 2020-05-25 00:15:00 2020-05-26 00:30:00 24.25 1455.0 87300.0 2 2020-05-25 00:30:00 2020-05-26 01:00:00 24.50 1470.0 88200.0 3 2020-05-25 00:45:00 2020-05-26 01:30:00 24.75 1485.0 89100.0 4 2020-05-25 01:00:00 2020-05-26 02:00:00 25.00 1500.0 90000.0 5 2020-05-25 01:15:00 2020-05-26 02:30:00 25.25 1515.0 90900.0
Les nouvelles colonnes contiennent les différences de temps entre les colonnes start_time et end_time dans différentes unités.
Par exemple, considérons la première ligne :
- La différence entre l’heure de début et l’heure de fin est de 24 heures .
- La différence entre l’heure de début et l’heure de fin est de 1 440 minutes .
- La différence entre l’heure de début et l’heure de fin est de 86 400 secondes .
Notez que dans cet exemple, les colonnes start_time et end_time sont déjà formatées en datetime.
Si vos colonnes d’heure sont actuellement formatées sous forme de chaînes, vous pouvez utiliser pd.to_datetime pour convertir d’abord chaque colonne au format datetime avant de calculer la différence entre les heures :
#convert columns to datetime format
df[['start_time', 'end_time']] = df[['start_time', 'end_time]].apply(pd.to_datetime)
Vous pouvez ensuite procéder au calcul des différences horaires entre les colonnes puisqu’elles sont désormais toutes deux dans un format datetime que les pandas peuvent reconnaître.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment créer une plage de dates dans Pandas
Comment extraire le mois de la date dans Pandas
Comment convertir l’horodatage en date/heure dans Pandas