pandas | Manipulación básica de series temporales

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)
Producción: 

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]))
Producción: 

<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))
Producción: 

                  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])
Salida: 
[‘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])
Producción: 

                     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

Deja una respuesta

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