Análisis de strings de fecha y hora que contienen nanosegundos en Python

La mayoría de las aplicaciones requieren una precisión de hasta segundos, pero también hay algunas aplicaciones críticas que requieren una precisión de nanosegundos, especialmente aquellas que pueden realizar cálculos extremadamente rápidos. Puede ayudar a proporcionar información sobre ciertos factores relacionados con el espacio de tiempo para la aplicación. Veamos cómo podemos analizar las strings DateTime que contienen nanosegundos. Python tiene una lista de directivas que se pueden usar para analizar las strings como objetos de fecha y hora. Echemos un vistazo a algunos de ellos que usaremos en nuestros códigos.

Directiva Descripción Ejemplo
% Y Año 2021
%metro Número de mes 7
%d fecha del mes 5
%H formato de 24 horas dieciséis
%METRO Minuto 51
%F Microsegundo 234567

Imagen de demostración del objeto DateTime:

Representación de imagen del análisis

Tomemos el formato de marca de tiempo predeterminado de Python: «2021-08-05 15:25:56.792554» como ejemplo para trabajar.

Método 1: Usar el módulo DateTime

En este ejemplo, veremos que el valor de los nanosegundos es 792554 . La directiva » %f » se utiliza para analizar los nanosegundos. Lo mismo se verifica de forma cruzada convirtiendo la directiva » %f » en el valor de string de su representación para el objeto de fecha y hora mediante el método strftime() .

Python

from datetime import datetime
  
# Parse the default python timestamp format
dt_obj = datetime.strptime("2021-08-05 15:25:56.792554",
                           "%Y-%m-%d %H:%M:%S.%f")
  
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
  
# Print the value of nano seconds
print(nano_secs)

Producción

792554

Método 2: Usar la biblioteca Pandas

Aquí usaremos los métodos pandas.to_datetime() para analizar strings DateTime que contengan nanosegundos.

Sintaxis:

pandas.to_datetime (arg, errores=’raise’, dayfirst=False, yearfirst=False, utc=Ninguno, box=Verdadero, formato=Ninguno, exacto=Verdadero, unidad=Ninguno, infer_datetime_format=False, origin=’unix’, caché=falso)

 Parámetros:

arg: un objeto entero, de string, flotante, de lista o dictado para convertirlo en un objeto de fecha y hora.
dayfirst: valor booleano, coloca el día primero si es verdadero.
yearfirst: valor booleano, coloca el año primero si es verdadero.
utc: valor booleano, devuelve el tiempo en UTC si es verdadero.
formato: Entrada de string para indicar la posición del día, mes y año.

Python

import pandas as pd
  
# Parse the timestamp string by
# providing the format of timestamp string
dt_obj = pd.to_datetime("2021-08-05 15:25:56.792554", 
                        format="%Y-%m-%d %H:%M:%S.%f")
  
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
  
# Print the value of nano seconds
print(nano_secs)

Producción:

792554

El ejemplo anterior es similar al anterior excepto por el hecho de que hemos usado la biblioteca pandas en lugar del módulo de fecha y hora . Esto puede resultar útil cuando estamos trabajando con marcos de datos de pandas . Una cosa hermosa de esta biblioteca es que es posible que no necesitemos proporcionar el formato manualmente. El parámetro infer_datetime_format en el método pandas.to_datetime() puede encargarse de eso automáticamente si se proporciona como True . En algunos casos, puede aumentar la velocidad de análisis en ~5-10x . A continuación se muestra un ejemplo de la misma.

Python

import pandas as pd
  
# Parse the timestamp string by
# providing infer_datetime_format as True
dt_obj = pd.to_datetime("2021-08-05 15:25:56.792554", 
                        infer_datetime_format=True)
  
# Verify the value for nano seconds
nano_secs = dt_obj.strftime("%f")
  
# Print the value of nano seconds
print(nano_secs)

Producción:

792554

Publicación traducida automáticamente

Artículo escrito por apathak092 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *