Cómo utilizar python para trazar las series temporales de datos para la ciencia

Nada es verdad estática, especialmente en la ciencia de datos. Al ver la mayoría de los datos con Python, se ve un instante de tiempo - una instantánea de cómo aparecieron los datos en un momento determinado. Por supuesto, estos puntos de vista son a la vez común y útil. Sin embargo, a veces es necesario para ver los datos mientras se mueve a través del tiempo - para ver que a medida que cambia. Sólo mediante la visualización de los datos a medida que cambia se puede esperar comprender las fuerzas subyacentes que lo conforman.

tiempo en ejes que representa

Muchas veces, es necesario presentar los datos a través del tiempo. Los datos podrían ser de muchas formas, pero generalmente tienen algún tipo de señal de tiempo (una unidad de tiempo), seguido de una o más características que describen lo que sucede durante ese tic particular. El siguiente ejemplo muestra un conjunto simple de día y las ventas en esos días para un artículo en particular en cantidades (entero) enteros.

fecha y hora de importación como dtimport pandas como matplotlib.pyplot pdimport como pltdf = pd.DataFrame (columnas = ( `Time`, `Ventas`)) = fecha_inicial dt.datetime (2015, 7,1) = fecha_final dt.datetime (2015, 7 , 10) daterange = pd.date_range (fecha_inicial, fecha_final) para single_date en daterange: fila = dict (zip ([ `Time`, `Sales`], [single_date, int (50 * np.random.rand (1)) ])) row_s = pd.Series (fila) row_s.name = single_date.strftime ( `% b% d`) df = df.append (row_s) df.ix [ `Jul 01`: `Jul 07`, [` Time`, ``(, 50 0) plt.xlabel]]. plot () plt.ylim ( `Fecha de Ventas`) plt.ylabel ( `Valor de Venta`) plt.title ( `tiempo de trazado`) plt.show Ventas ()

El ejemplo comienza creando una Marco de datos para contener la información. La fuente de la información podría ser cualquier cosa, pero el ejemplo que genera aleatoriamente. Observe que el ejemplo se crea una rango de fechas para mantener el marco de tiempo la fecha de inicio y finalización para el procesamiento más fácil el uso de un para lazo.

Una parte esencial de este ejemplo es la creación de filas individuales. Cada fila tiene un valor de tiempo real, de modo que no se pierde información. Sin embargo, observe que el índice (row_s.name propiedad) es una cadena. Esta cadena debe aparecer en la forma que desea que aparezcan las fechas cuando se presenta en la trama.

Utilizando ix [] le permite seleccionar un rango de fechas a partir del número total de entradas disponibles. Tenga en cuenta que este ejemplo utiliza sólo algunos de los datos generados para la salida. A continuación, agrega un poco de información acerca de la amplificación de la trama y lo muestra en pantalla. Aquí está la salida típica de los datos generados al azar.

Utilizar gráficos de líneas para mostrar el flujo de datos en el tiempo.
Utilizar gráficos de líneas para mostrar el flujo de datos en el tiempo.

Trazado de tendencias en el tiempo

Al igual que con cualquier otra presentación de los datos, a veces realmente no se puede ver qué dirección los datos se dirigió en sin ayuda. En el siguiente ejemplo se inicia con la trama desde arriba y añade una línea de tendencia a la misma:

fecha y hora de importación como dtimport pandas como matplotlib.pyplot pdimport como numpy pltimport como npimport matplotlib.pylab como plbdf = pd.DataFrame (columnas = ( `Time`, `Ventas`)) = fecha_inicial dt.datetime (2015, 7,1) fecha_final = dt.datetime (2015, 7,10) = daterange pd.date_range (fecha_inicial, fecha_final) para single_date en daterange: fila = dict (zip ([ `Time`, `Ventas`], [single_date, int (50 * np .random.rand (1))])) row_s = pd.Series (fila) row_s.name = single_date.strftime ( `% b% d`) df = df.append (row_s) df.ix [ `Jul 01` :. `Jul 10`, [ `Time`, `Ventas`]] plot () z = np.polyfit (. rango (0, 10), df.as_matrix ([ `Sales`]) aplanar (), 1) p = np.poly1d (z) plb.plot (df.as_matrix ([ `Sales`]), p (df.as_matrix ([ `Sales`])), `m -`) plt.ylim (0, 50) plt.xlabel ( `Fecha de Ventas`) plt.ylabel ( `Valor de Venta`) plt.title ( `Tiempo de trazado`) plt.legend ([ `Ventas`, `tendencia`]) plt.show ()

Debido a que los datos aparecen en un Marco de datos, debe exportarlo usando as_matrix () y luego aplanar la matriz resultante usando aplanar() antes de poder usarlo como entrada a polyfit (). Del mismo modo, debe exportar los datos antes de poder llamar trama() para visualizar la pantalla de línea de tendencia.

Al trazar los datos iniciales, la llamada a trama() genera automáticamente una leyenda para usted. Matplotlib no agrega automáticamente la línea de tendencia, por lo que también debe crear una nueva leyenda de la trama. Aquí hay salida típica de este ejemplo utilizando datos generados aleatoriamente.

Añadir una línea de tendencia para mostrar la dirección promedio del cambio en un diagrama o gráfico.
Añadir una línea de tendencia para mostrar la dirección promedio del cambio en un diagrama o gráfico.
Artículos Relacionados