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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *