A la hora de estar trabajando con una gran cantidad de datos es importante conocer las diferentes maneras de poder visualizarlos ya que hace que el proceso de comprender estos sea mucho más rápido y eficaz. Es por ello que el tema de hoy trata de las gráficas de series de tiempo con Python.
Con este tutorial podrás aprender acerca de esta forma de visualizar datos basados en el tiempo y así poder crear tu primera gráfica de series de tiempo siguiendo las pasos.
¿Para qué sirven?
Las gráficas de series de tiempo se usan para encontrar patrones en sus datos que dependan del tiempo, como las tendencias. Una gráfica de serie de tiempo ayuda a elegir un análisis para modelar estos datos.
Aprende a crear gráficas de series de tiempo con Python
Paso 0: Descarga el dataset desde aquí.
Para empezar con el tutorial descarga el dataset, en el cuál podrás encontrar datos de las diferentes ventas que se hicieron a lo largo de los años; ¡este es un gran ejemplo de una variable que cambia en un período de tiempo!, porque las ventas crecen o disminuyen dependiendo del mes.
Paso 1: Importamos las bibliotecas que se necesitarán.
from datetime import datetime
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from statsmodels.tsa.seasonal import seasonal_decompose
matplotlib.rcParams['figure.figsize'] = (15, 5)
- datetime – librería de con funciones para manipular objetos de tiempo.
- pandas – librería para la manipulación y limpieza de datos.
- matplotlib – librería especializada en visualización de datos.
- statsmodel – librería que contiene funciones y modelos estadísticos para el análisis de datos.
Paso 2: Leemos el dataset que queremos analizar
¡Sigue la siguiente instrucción para poder leer el dataset que necesitas!
df = pd.read_csv('ventas_2001_2003.csv')
print(df.head(10))
Month Sales
0 2001-01 266.0
1 2001-02 145.9
2 2001-03 183.1
3 2001-04 119.3
4 2001-05 180.3
5 2001-06 168.5
6 2001-07 231.8
7 2001-08 224.5
8 2001-09 192.8
9 2001-10 122.9
Paso 3: Empezamos con la limpieza de datos.
print("# de valores vacíos:")
print(df.isnull().sum())
# de valores vacíos:
Month 0
Sales 0
dtype: int64
print(df.dtypes)
Month object
Sales float64
dtype: object
df['Month'] = pd.to_datetime(df['Month'])
print(df.head(10))
print(df.dtypes)
Month Sales
0 2001-01-01 266.0
1 2001-02-01 145.9
2 2001-03-01 183.1
3 2001-04-01 119.3
4 2001-05-01 180.3
5 2001-06-01 168.5
6 2001-07-01 231.8
7 2001-08-01 224.5
8 2001-09-01 192.8
9 2001-10-01 122.9
Month datetime64[ns]
Sales float64
dtype: object
df.set_index('Month', inplace=True)
print(df.head(10))
Sales
Month
2001-01-01 266.0
2001-02-01 145.9
2001-03-01 183.1
2001-04-01 119.3
2001-05-01 180.3
2001-06-01 168.5
2001-07-01 231.8
2001-08-01 224.5
2001-09-01 192.8
2001-10-01 122.9
Paso 4: Generamos nuestra Gráfica de serie de tiempo y analizamos.
df.plot(grid=True, figsize=(15,5))

from datetime import datetime
start_date = datetime(2003, 1, 1)
end_date = datetime(2003, 12, 31)
df[(df.index >= start_date) & (df.index

decompose = seasonal_decompose(df)
figure = decompose.plot()

fig, ax = plt.subplots()
ax.grid(True)
plt.plot(df.index, df['Sales'], c='blue')
plt.plot(decompose.trend.index, decompose.trend, c='red')

fig, ax = plt.subplots()
ax.grid(True)
# Muestra el mes con más ventas de cada año
for year in df.index.year.unique():
month = df[df.index.year == year].idxmax().loc['Sales'].month
print("Mejor mes de {} es {}".format(
year,
datetime.strptime(str(month), "%m").strftime("%B"))
))
ax.axvspan(
datetime(year, month - 1, 1),
datetime(year, month, 1),
facecolor='green',
edgecolor='none',
alpha=.5
)
plt.title("Ventas del 2001 al 2003")
plt.plot(df.index, df['Sales'], c='blue')
plt.plot(decompose.trend.index, decompose.trend, c='red')
plt.show()

Excelente Aporte