Pandas se creó con respecto al modelado financiero, por lo que, como es de esperar, contiene una cantidad realmente amplia de herramientas para trabajar con fechas y horas. A veces, el formato dado de fecha y hora en nuestro conjunto de datos no se puede usar directamente para el análisis, por lo que procesamos previamente estos valores de tiempo para obtener características como fecha, mes, año, horas, minutos y segundos.
Analicemos todas las diferentes formas de procesar la fecha y la hora con el marco de datos de Pandas.
Divida la fecha y la hora en varias funciones:
cree cinco fechas y horas con pd.date_range
las que generar secuencias de fechas y períodos de tiempo de frecuencia fija. Luego usamos pandas.Series.dt
para extraer las características.
Python3
# Load library import pandas as pd # calling DataFrame constructor df = pd.DataFrame() # Create 6 dates df['time'] = pd.date_range('2/5/2019', periods = 6, freq ='2H') print(df['time']) # print dataframe # Extract features - year, month, day, hour, and minute df['year'] = df['time'].dt.year df['month'] = df['time'].dt.month df['day'] = df['time'].dt.day df['hour'] = df['time'].dt.hour df['minute'] = df['time'].dt.minute # Show six rows df.head(6)
Producción:
0 2019-02-05 00:00:00 1 2019-02-05 02:00:00 2 2019-02-05 04:00:00 3 2019-02-05 06:00:00 4 2019-02-05 08:00:00 5 2019-02-05 10:00:00 Name: time, dtype: datetime64[ns] time year month day hour minute 0 2019-02-05 00:00:00 2019 2 5 0 0 1 2019-02-05 02:00:00 2019 2 5 2 0 2 2019-02-05 04:00:00 2019 2 5 4 0 3 2019-02-05 06:00:00 2019 2 5 6 0 4 2019-02-05 08:00:00 2019 2 5 8 0 5 2019-02-05 10:00:00 2019 2 5 10 0
Convertir strings en marcas de tiempo:
convertimos las strings dadas al formato de fecha y hora usando pd.to_datetime
y luego podemos extraer diferentes características de la fecha y hora usando el primer método.
Python3
# Load libraries import numpy as np import pandas as pd # Create time Strings dt_strings = np.array(['04-03-2019 12:35 PM', '22-06-2017 11:01 AM', '05-09-2009 07:09 PM']) # Convert to datetime format timestamps = [pd.to_datetime(date, format ="%d-%m-%Y%I:%M %p", errors ="coerce") for date in dt_strings] # Convert to datetimes timestamps = [pd.to_datetime(date, format ="%d-%m-%Y %I:%M %p", errors ="coerce") for date in dt_strings]
Producción:
[Marca de tiempo(‘2019-03-04 12:35:00’), Marca de tiempo(‘2017-06-22 11:01:00’), Marca de tiempo(‘2009-09-05 19:09:00’)]
Extraer los días de la semana a partir de la fecha dada:
Usamos Series.dt.weekday_name
para encontrar el nombre del día en una semana a partir de la fecha dada.
Python3
# Load library import pandas as pd df = pd.DataFrame() # Create 6 dates dates = pd.pd.Series(date_range('2/5/2019', periods = 6, freq ='M')) print(dates) # Extract days of week and then print print(dates.dt.weekday_name)
Producción:
0 2019-02-28 1 2019-03-31 2 2019-04-30 3 2019-05-31 4 2019-06-30 5 2019-07-31 dtype: datetime64[ns] 0 Thursday 1 Sunday 2 Tuesday 3 Friday 4 Sunday 5 Wednesday dtype: object
Extraer datos en rangos de fecha y hora:
podemos obtener las filas que se encuentran en un rango de tiempo particular del conjunto de datos dado.
Método #1: si el conjunto de datos no está indexado con el tiempo.
Python3
# Load library import pandas as pd # Create data frame df = pd.DataFrame() # Create datetimes df['date'] = pd.date_range('1/1/2012', periods = 1000, freq ='H') print(df.head(5)) # Select observations between two datetimes x = df[(df['date'] > '2012-1-1 01:00:00') & (df['date'] <= '2012-1-1 11:00:00')] print(x)
Producción:
date 0 2012-01-01 00:00:00 1 2012-01-01 01:00:00 // 5 rows of Timestamps out of 1000 2 2012-01-01 02:00:00 3 2012-01-01 03:00:00 4 2012-01-01 04:00:00 date 2 2012-01-01 02:00:00 3 2012-01-01 03:00:00 4 2012-01-01 04:00:00 5 2012-01-01 05:00:00 //Timestamps in the given range 6 2012-01-01 06:00:00 7 2012-01-01 07:00:00 8 2012-01-01 08:00:00 9 2012-01-01 09:00:00 10 2012-01-01 10:00:00 11 2012-01-01 11:00:00
Método #2: si el conjunto de datos está indexado con el tiempo
Python3
# Load library import pandas as pd # Create data frame df = pd.DataFrame() # Create datetimes df['date'] = pd.date_range('1/1/2012', periods = 1000, freq ='H') # Set index df = df.set_index(df['date']) print(df.head(5)) # Select observations between two datetimes x = df.loc['2012-1-1 04:00:00':'2012-1-1 12:00:00'] print(x)
Producción:
date date 2012-01-01 00:00:00 2012-01-01 00:00:00 2012-01-01 01:00:00 2012-01-01 01:00:00 2012-01-01 02:00:00 2012-01-01 02:00:00 2012-01-01 03:00:00 2012-01-01 03:00:00 // 5 rows of Timestamps out of 1000 2012-01-01 04:00:00 2012-01-01 04:00:00 date date 2012-01-01 04:00:00 2012-01-01 04:00:00 2012-01-01 05:00:00 2012-01-01 05:00:00 2012-01-01 06:00:00 2012-01-01 06:00:00 2012-01-01 07:00:00 2012-01-01 07:00:00 2012-01-01 08:00:00 2012-01-01 08:00:00 2012-01-01 09:00:00 2012-01-01 09:00:00 //Timestamps in the given range 2012-01-01 10:00:00 2012-01-01 10:00:00 2012-01-01 11:00:00 2012-01-01 11:00:00 2012-01-01 12:00:00 2012-01-01 12:00:00
Publicación traducida automáticamente
Artículo escrito por aakarsha_chugh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA