Aunque la serie temporal también está disponible en scikit-learn, Pandas tiene algún tipo de características compiladas. En este módulo de Pandas, podemos incluir la fecha y la hora de cada registro y obtener los registros del marco de datos. Podemos encontrar los datos dentro de un cierto rango de fecha y hora usando el módulo pandas llamado Serie de tiempo . Analicemos algunos objetivos principales para presentar el análisis de series temporales de pandas.
Objetivos del análisis de series de tiempo
- Crear la serie de fecha
- Trabajar con marca de tiempo de datos
- Convertir datos de string a marca de tiempo
- Segmentación de datos mediante marca de tiempo
- Vuelva a muestrear su serie de tiempo para diferentes agregados de período de tiempo/estadísticas resumidas
- Trabajar con datos faltantes
Ahora, hagamos un análisis práctico de algunos datos para demostrar el uso de series temporales de pandas.
Código #1:
Python3
import pandas as pd from datetime import datetime import numpy as np range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019', freq ='Min') print(range_date)
DatetimeIndex(['2019-01-01 00:00:00', '2019-01-01 00:01:00', '2019-01-01 00:02:00', '2019-01-01 00:03:00', '2019-01-01 00:04:00', '2019-01-01 00:05:00', '2019-01-01 00:06:00', '2019-01-01 00:07:00', '2019-01-01 00:08:00', '2019-01-01 00:09:00', ... '2019-01-07 23:51:00', '2019-01-07 23:52:00', '2019-01-07 23:53:00', '2019-01-07 23:54:00', '2019-01-07 23:55:00', '2019-01-07 23:56:00', '2019-01-07 23:57:00', '2019-01-07 23:58:00', '2019-01-07 23:59:00', '2019-01-08 00:00:00'], dtype='datetime64[ns]', length=10081, freq='T')
Explicación:
Aquí, en este código, hemos creado la marca de tiempo en base a minutos para rangos de fechas del 1/1/2019 al 1/8/2019 . Podemos variar la frecuencia de horas a minutos o segundos. Esta función lo ayudará a rastrear el registro de datos almacenados por minuto. Como podemos ver en la salida, la longitud de la marca de fecha y hora es 10081. Recuerde que los pandas usan el tipo de datos como datetime64[ns] .
Código #2:
Python3
import pandas as pd from datetime import datetime import numpy as np range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019', freq ='Min') print(type(range_date[110]))
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
Explicación:
estamos comprobando el tipo de nuestro objeto denominado range_date .
Código #3:
Python3
import pandas as pd from datetime import datetime import numpy as np range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019', freq ='Min') df = pd.DataFrame(range_date, columns =['date']) df['data'] = np.random.randint(0, 100, size =(len(range_date))) print(df.head(10))
date data 0 2019-01-01 00:00:00 49 1 2019-01-01 00:01:00 58 2 2019-01-01 00:02:00 48 3 2019-01-01 00:03:00 96 4 2019-01-01 00:04:00 42 5 2019-01-01 00:05:00 8 6 2019-01-01 00:06:00 20 7 2019-01-01 00:07:00 96 8 2019-01-01 00:08:00 48 9 2019-01-01 00:09:00 78
Explicación:
Primero creamos una serie de tiempo, luego convertimos estos datos en un marco de datos y usamos la función aleatoria para generar los datos aleatorios y mapear sobre el marco de datos. Luego, para verificar el resultado, usamos la función de impresión.
Para realizar la manipulación de series temporales, necesitamos tener un índice de fecha y hora para que el marco de datos se indexe en la marca de tiempo. Aquí, estamos agregando una nueva columna más en el marco de datos de pandas.
Código #4:
Python3
import pandas as pd from datetime import datetime import numpy as np range_date = pd.date_range(start ='1/1/2019', end ='1/08/2019', freq ='Min') df = pd.DataFrame(range_date, columns =['date']) df['data'] = np.random.randint(0, 100, size =(len(range_date))) string_data = [str(x) for x in range_date] print(string_data[1:11])
[‘2019-01-01 00:01:00’, ‘2019-01-01 00:02:00’, ‘2019-01-01 00:03:00’, ‘2019-01-01 00: 04:00’, ‘2019-01-01 00:05:00’, ‘2019-01-01 00:06:00’, ‘2019-01-01 00:07:00’, ‘2019-01-01 00:08:00’, ‘2019-01-01 00:09:00’, ‘2019-01-01 00:10:00’]
Explicación:
este código solo usa los elementos de data_rng y los convierte en strings y, debido a la gran cantidad de datos, cortamos los datos e imprimimos la lista de los primeros diez valores string_data . Al usar for each loop in list, obtuvimos todos los valores que están en la serie range_date . Cuando usamos rango de fechas, siempre tenemos que especificar la fecha de inicio y finalización.
Ejemplo:
Python3
import pandas as pd from datetime import datetime import numpy as np range_data = pd.date_range(start ='1/1/2019', end ='1/08/2019', freq ='Min') df = pd.DataFrame(range_data, columns =['date']) df['data'] = np.random.randint(0, 100, size =(len(range_data))) df['datetime'] = pd.to_datetime(df['date']) df = df.set_index('datetime') df.drop(['date'], axis = 1, inplace = True) print(df['2019-01-05'][1:11])
data datetime 2019-01-05 00:01:00 99 2019-01-05 00:02:00 21 2019-01-05 00:03:00 29 2019-01-05 00:04:00 98 2019-01-05 00:05:00 0 2019-01-05 00:06:00 72 2019-01-05 00:07:00 69 2019-01-05 00:08:00 53 2019-01-05 00:09:00 3 2019-01-05 00:10:00 37
Publicación traducida automáticamente
Artículo escrito por Jitender_1998 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA