Saltar al contenido

Dominar fechas y marcas de tiempo en Pandas (y Python en general)

septiembre 23, 2021
0ugkz9tNs16 66dQF

Dominar fechas y marcas de tiempo en Pandas (y Python en general)

¡Todo lo que necesita para manejar fechas y marcas de tiempo en Pandas! Se proporcionan muchos ejemplos.

Matias Eiletz

4 de marzo de 2020·6 min de lectura

Contenido

  • Fechas en general

Más concretamente, operaciones de manipulación con …

  • Dias
  • Semanas
  • Meses
  • Años

Extra: Generación de rangos de fechas

  • Generar rangos de fechas secuenciales
  • Generar rangos de fechas aleatorios
0*ugkz9tNs16 66dQF

Foto de Aron Visuals en Unsplash

Fechas en general

import pandas as pd

Antes de ejecutar cualquier código, ¡importe pandas!

Cambiar el formato de fecha en un DataFrame de columna Puede elegir todos los formatos que desee, siguiendo este sencillo strftime

documentación.

1*8WpZ pDpZbpp WthChrNQA

Entonces, por ejemplo, comenzando desde este DataFrame: Cambiar elFormato de fecha

df['date'] = df['date'].apply(lambda x: pd.Timestamp(x).strftime('%Y-%m-%d'))
1*tu00dTKamkecn8rnkhU0TA

, con:

df['date'] = df['date'].apply(lambda x: pd.Timestamp(x).strftime('%B-%d-%Y %I:%M %p'))
1*HQaOs2y 0jUpULuLg74 g

O podemos ir un poco más exóticos y hacer: Recuerde, todas las variaciones de formatos de marca de tiempo que puede elegir, puede encontrarlas en este enlace:

strftime

df = pd.DataFrame({'date': ['2018-08-09 11:10:55','2019-03-02 13:15:21']})
# 4 possible options# 1
df['date'] = pd.to_datetime(df['date'])
# 2
df['date'] = df['date'].astype('datetime64[ns]')
# 3
df['date'] = df['date'].apply(lambda x: parse(x))
# 4
df['date'] = df['date'].apply(lambda x: pd.Timestamp(x))

Cambiar el tipo de columna: de Objeto / Cadena a DateTime

df = pd.DataFrame({'date': ['2018-08-09 11:10:55','2019-01-02 13:15:21']})df
df.dtypes
df['date'] = pd.to_datetime(df['date'])
df
df.dtypes

Ejemplo (probamos solo una de las 4 opciones, pero todas deberían funcionar)

1*iz4tRjTcsyhKOYr4ugd 1g

Pasar del formato de cadena al formato de fecha y del formato de fecha a cadenaExa

from dateutil.parser import parsestr_date = '2018-05-01'# String to Date:
date_1 = parse(str_date)
print ('date_1: ',date_1, type(date_1))
# Date to String:
date_2 = date_1.strftime('%Y-%m-%d')
print ('date_2: ',date_2, type(date_2))

mple con variables aisladas:

df['date'] = pd.to_datetime(df['date'],unit='s')

De Unix / Epoch time al formato de fecha legible

df = pd.DataFrame({'date': [1349720105,1349806505]})dfdf['date'] = pd.to_datetime(df['date'],unit='s')df

Ejemplo:

1*vCOc Vyq cPsFOzOMM MuQ

Sumar y restar fechas UsarTimedelta

from datetime import datetime, timedelta
from dateutil.parser import parse
parse('2019-04-07') — timedelta(days=3)# or, to get it as a string
(parse('2019-04-07') — timedelta(days=3)).strftime('%Y-%m-%d')

! Ejemplo:

# with date format 
datetime.datetime(2019, 4, 4, 0, 0)
# with string format
'2019-04-04'

Obtén la diferencia entre dos fechas

from dateutil.parser import parsed1 = parse('2018-12-01')
d2 = parse('2018-12-08')
abs((d2 - d1).days)

Convierta ambas cadenas en formato de fecha y luego haga el cálculo. Ejemplo:

7
# 7 days

Producción:

# for a column in a DataFrame
from datetime import datetime as dt
df['day'] = df['date'].dt.day
# for a single value
from dateutil.parser import parse
parse('2018-08-09').day

Obtener el día de una fecha

9

Producción:

close