Fonction Pandas pd.Timedelta()

Pandas 通用函数Fonctions courantes de Pandas


pd.Timedelta()est utilisée dans la bibliothèque Pandas pourcréer des deltas temporels.Cette fonction représente la durée entre deux instants et peut être utilisée pour des opérations d'addition et de soustraction de datetime.

Timedelta est un outil puissant pour gérer la durée temporelle, couramment utilisé dans des scénarios tels que le calcul de la différence entre deux dates, l'ajout ou la soustraction de durées spécifiques, etc.

Signification du mot: TimedeltaIl s'agit d'une combinaison de « time » et « delta » (quantité de changement), signifiant « incrément temporel », c'est-à-dire la durée d'une période.


Syntaxe de base et paramètres

pd.Timedelta()Il s'agit d'une fonction de haut niveau de la bibliothèque Pandas, utilisée pour créer des objets de delta temporel.

Format de syntaxe

pd.Timedelta(value, unit='ns', **kwargs)

Description du paramètre

Paramètre Type Requis Description Valeur par défaut
value String, int, float, datetime.timedelta Optional La valeur de delta temporel à convertir. Aucune
unité String Optional Unité lorsque la valeur est un nombre : 'D' (jours), 'h' (heures), 'm' (minutes), 's' (secondes), 'ms' (millisecondes), 'us' (microsecondes), 'ns' (nanosecondes). 'ns'
jours Integer Optional Nombre de jours. 0
hours Integer Optional Nombre d'heures. 0
minutes Integer Optional Nombre de minutes. 0
seconds Integer Optional Nombre de secondes. 0
milliseconds Integer Optional Nombre de millisecondes. 0
microsecondes Integer Optional Nombre de microsecondes. 0
nanosecondes Integer Optional Nombre de nanosecondes. 0

Description de la valeur de retour

  • Valeur de retour: Renvoie un objet Timedelta, représentant l'intervalle de temps.
  • Effet: Peut être utilisé pour des opérations d'addition et de soustraction sur les horodatages, ou pour calculer la différence entre deux points dans le temps.

Exemples

Maîtrisons à fond, à travers une série d'exemples du plus simple au plus complexe,pd.Timedelta()son utilisation.

Exemple 1 : Utilisation de base - Création d'un delta temporel

Exemples

import pandas as pd

# 1. Créer un Timedelta à partir d'une chaîne
print("=== Création d'un delta temporel avec une chaîne ===")
td1 = pd.Timedelta('1 days')
print(f"pd.Timedelta('1 days'): {td1}")

td2 = pd.Timedelta('2 hours 30 minutes')
print(f"pd.Timedelta('2 hours 30 minutes'): {td2}")

td3 = pd.Timedelta('1 days 02:30:45')
print(f"pd.Timedelta('1 days 02:30:45'): {td3}")

td4 = pd.Timedelta('2 weeks')
print(f"pd.Timedelta('2 weeks'): {td4}")

# 2. Créer à l'aide d'arguments nommés
print("n=== Création avec des arguments nommés ===")
td5 = pd.Timedelta(days=5, hours=10, minutes=30)
print(f"pd.Timedelta(days=5, hours=10, minutes=30): {td5}")

td6 = pd.Timedelta(hours=1.5)
print(f"pd.Timedelta(hours=1.5): {td6}")

# 3. Créer à l'aide d'une valeur numérique et d'une unité
print("n=== Création avec une valeur numérique et une unité ===")
td7 = pd.Timedelta(10, unit='D')
print(f"pd.Timedelta(10, unit='D'): {td7}")

td8 = pd.Timedelta(30, unit='m')
print(f"pd.Timedelta(30, unit='m'): {td8}")

# 4. Convertir depuis datetime.timedelta
print("n=== Conversion depuis datetime.timedelta ===")
import datetime
dt_td = datetime.timedelta(days=3, hours=6)
td9 = pd.Timedelta(dt_td)
print(f"Depuis datetime.timedelta : {td9}")

# 5. Afficher les attributs de Timedelta
print("n=== Attributs de Timedelta ===")
td = pd.Timedelta('3 days 12 hours 30 minutes 45 seconds')
print(f"Delta de temps : {td}")
print(f"Total des jours : {td.days}")
print(f"Total des secondes : {td.seconds}")
print(f"Total des microsecondes : {td.microseconds}")
print(f"Nombre total de secondes (partie décimale incluse) : {td.total_seconds()}")
print(f"Converti en heures : {td.total_seconds() / 3600}")

Sortie :

=== 字符串创建时间差 ===
pd.Timedelta('1 days'): 1 days, 0:00:00
pd.Timedelta('2 hours 30 minutes'): 0 days, 2:30:00
pd.Timedelta('1 days 02:30:45'): 1 days 02:30:45
pd.Timedelta('2 weeks'): 14 days, 0:00:00

=== 关键字参数创建 ===
pd.Timedelta(days=5, hours=10, minutes=30): 5 days 10:30:00
pd.Timedelta(hours=1.5): 0 days, 01:30:00

=== 数值和单位创建 ===
pd.Timedelta(10, unit='D'): 10 days, 0:00:00
pd.Timedelta(30, unit='m'): 0 days, 0:30:00

=== 从 datetime.timedelta 转换 ===
从 datetime.timedelta: 3 days 06:00:00

=== Timedelta 属性 ===
时间差: 3 days 12:30:45
总天数: 3
总秒数: 45045
总微秒数: 45000
总秒数 (含小数): 303045.0
84.17916666666667

Explication du code :

  1. pd.Timedelta()Plusieurs méthodes de création sont prises en charge : chaîne, arguments nommés, numérique + unité, datetime.timedelta.
  2. Le format de chaîne est très flexible, prenant en charge '1 days', '2 weeks', '1 days 02:30:45', etc.
  3. total_seconds()La méthode renvoie le nombre total de secondes (partie décimale incluse).

Exemple 2 : Opérations sur les deltas de temps

Exemples

import pandas as pd
import numpy as np

# 1. Ajouter/soustraire un horodatage et un delta de temps
print("=== Opérations sur les horodatages et les deltas de temps ===")
ts = pd.Timestamp('2023-01-01 12:00:00')

td = pd.Timedelta(days=5, hours=3)
print(f"Horodatage : {ts}")
print(f"Delta de temps : {td}")
print(f"ts + td : {ts + td}")
print(f"ts - td : {ts - td}")

# 2. Soustraire deux horodatages pour obtenir le delta temporel
print("n=== Soustraction de deux horodatages ===")
ts1 = pd.Timestamp('2023-01-15 18:00:00')
ts2 = pd.Timestamp('2023-01-10 09:00:00')

tdiff = ts1 - ts2
print(f"ts1: {ts1}")
print(f"ts2: {ts2}")
print(f"ts1 - ts2: {tdiff}")
print(f"Différence en jours : {tdiff.days}")
print(f"Différence en heures : {tdiff.total_seconds() / 3600}")

# 3. Opérations entre deltas temporels
print("n=== Opérations entre deltas temporels ===")
td1 = pd.Timedelta(days=2)
td2 = pd.Timedelta(hours=12)

print(f"td1: {td1}")
print(f"td2: {td2}")
print(f"td1 + td2: {td1 + td2}")
print(f"td1 - td2: {td1 - td2}")
print(f"td1 * 2: {td1 * 2}")
print(f"td1 / 2: {td1 / 2}")

# 4. Opérations entre un delta de temps et une valeur numérique
print("n=== Delta de temps et opérations numériques ===")
td = pd.Timedelta(hours=10)
print(f"10 heures * 3 = {td * 3}")
print(f"10 hours / 2 = {td / 2}")
print(f"10 hours // 3 = {td // 3}")

Sortie :

=== 时间戳与时间差运算 ===
时间戳: 2023-01-01 12:00:00
时间差: 5 days 03:00:00
ts + td: 2023-01-06 15:00:00
ts - td: 2022-12-27 09:00:00

=== 两个时间戳相减 ===
ts1: 2023-01-15 18:00:00
ts2: 2023-01-10 09:00:00
ts1 - ts2: 5 days 09:00:00
天数差: 5
小时差: 129.0

=== 时间差之间的运算 ===
td1: 2 days, 0:00:00
td2: 12:00:00
td1 + td2: 2 days 12:00:00
td1 - td2: 1 day, 12:00:00
td1 * 2: 4 days, 0:00:00
td1 / 2: 1 day, 0:00:00

=== 时间差与数值运算 ===
10小时 * 3 = 1 day, 3:00:00
10小时 / 2 = 5:00:00
10小时 // 3 = 3:20:00

Explication du code :

  • L'ajout d'un delta de temps à un horodatage produit un nouvel horodatage.
  • La soustraction de deux horodatages produit un delta de temps.
  • Les deltas de temps peuvent être ajoutés et soustraits entre eux.
  • Les deltas de temps peuvent être multipliés et divisés par des valeurs numériques.

Exemple 3 : Utilisation de delta de temps dans un DataFrame

Exemples

import pandas as pd
import numpy as np

# 1. Créer un DataFrame avec un delta de temps
print("=== Analyse du temps de traitement des commandes ===")

# Simuler des données de commande
df = pd.DataFrame({
    'order_id': ['A001', 'A002', 'A003', 'A004', 'A005'],
    'order_time': pd.date_range('2023-01-01 09:00', periods=5, freq='2H'),
    'process_time_min': [30, 45, 60, 20, 90]
})

# Convertir le temps de traitement en Timedelta
df['process_timedelta'] = pd.to_timedelta(df['process_time_min'], unit='m')

# Calculer l'heure d'achèvement
df['complete_time'] = df['order_time'] + df['process_timedelta']

print(df)

# 2. Calculer les statistiques de durée de traitement des commandes
print("n=== Statistiques de durée de traitement ===")
total_time = df['process_timedelta'].sum()
avg_time = df['process_timedelta'].mean()
print(f"Temps total de traitement : {total_time}")
print(f"Temps de traitement moyen : {avg_time}")

# 3. Calculer l'heure d'échéance
print("n=== Calculer l'heure d'échéance (en supposant que la commande doit être terminée dans les 24 heures) ===")
deadline = pd.Timedelta(hours=24)
df['deadline'] = df['order_time'] + deadline
df['is_ontime'] = df['complete_time'] <= df['deadline']
print(df[['order_id', 'order_time', 'complete_time', 'deadline', 'is_ontime']])

# 4. Filtrer les commandes en retard
print("n===Commandes en retard===")
late_orders = df[~df['is_ontime']]
print(f"Nombre de commandes en retard :{len(late_orders)}")
print(late_orders[['order_id', 'complete_time', 'deadline']])

Sortie :

=== 订单处理时间分析 ===
      order_id           order_time  process_time_min          complete_time
0      A001 2023-01-01 09:00:00                 30 2023-01-01 09:30:00
1      A002 2023-01-01 11:00:00                 45 2023-01-01 11:45:00
2      A003 2023-01-01 13:00:00                 60 2023-01-01 14:00:00
3      A004 2023-01-01 15:00:00                 20 2023-01-01 15:20:00
4      A005 2023-01-01 17:00:00                 90 2023-01-01 18:30:00

=== 处理时长统计 ===
总处理时间: 0 days 04:05:00
平均处理时间: 0 days 00:49:00

=== 计算到期时间(假设订单需要在24小时内完成)===
           order_id           order_time         complete_time         deadline  is_ontime
0  A001  2023-01-01 09:00:00  2023-01-01 09:30:00  2023-01-02 09:00:00      True
1  A002  2023-01-01 11:00:00  2023-01-01 11:45:00  2023-01-02 11:00:00      True
2  A003  2023-01-01 13:00:00  2023-01-01 14:00:00  2023-02-01 13:00:00      True
3  A004  2023-01-01 15:00:00  2023-01-01 15:20:00  2023-02-01 15:00:00      True
4  A005 2023-01-01 17:00:00  2023-01-01 18:30:00  2023-02-01 17:00:00      True

=== 超时订单 ===
超时订单数: 0

Explication du code :

  • pd.to_timedelta()Les valeurs numériques peuvent être converties en Timedelta.
  • Les deltas temporels peuvent être facilement ajoutés ou soustraits aux horodatages.
  • Des statistiques telles que le temps de traitement total et le temps de traitement moyen peuvent être facilement calculées.

Notes

Remarques importantes :

  • pd.TimedeltaIl stocke des intervalles de temps, et non des points précis dans le temps.
  • Les deltas temporels peuvent être positifs (futur) ou négatifs (passé).
  • etpd.NaTDe même, il existepd.NaTqui représente un delta temporel manquant.
  • Lors de l'utilisation de launitparamètre, assurez-vous que le type numérique est correct.

Pandas 通用函数Fonctions courantes de Pandas

Autres extensions