Tiempo de procesamiento con Pandas DataFrame

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_rangelas que generar secuencias de fechas y períodos de tiempo de frecuencia fija. Luego usamos pandas.Series.dtpara 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_datetimey 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_namepara 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

Deja una respuesta

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