Series de tiempo en Matplotlib — 5:15 min
5:15 min | Última modificación: Octubre 6, 2021 | YouTube
En este tutorial se aborda el tema de visualización de series de tiempo.
[1]:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv(
"https://raw.githubusercontent.com/jdvelasq/datalabs/master/datasets/sutter.csv",
)
display(df.head(), df.dtypes)
time | value | |
---|---|---|
0 | 1946-01-01 | 890 |
1 | 1946-02-01 | 992 |
2 | 1946-03-01 | 979 |
3 | 1946-04-01 | 959 |
4 | 1946-05-01 | 1110 |
time object
value int64
dtype: object
[2]:
#
# Convierte la columna time a un objeto datetime
#
df.time = pd.to_datetime(df.time, errors='coerce')
#
# Convierte la columna time en el indice de las
# filas
#
df = df.set_index('time')
display(
df.head(),
df.dtypes
)
value | |
---|---|
time | |
1946-01-01 | 890 |
1946-02-01 | 992 |
1946-03-01 | 979 |
1946-04-01 | 959 |
1946-05-01 | 1110 |
value int64
dtype: object
[3]:
#
# Gráfica de la serie de tiempo usando Matplotlib
#
_ = df.plot(
color='tab:blue',
figsize=(11,4),
marker='.',
)
#
# Línea vertical
#
plt.axvline(
'1964-01-01',
color='red',
linestyle='--',
)
#
# Línea horizontal
#
plt.axhline(
3000,
color='green',
)
plt.gca().spines["left"].set_color("gray")
plt.gca().spines["bottom"].set_color("gray")
plt.gca().spines["top"].set_visible(False)
plt.gca().spines["right"].set_visible(False)
[4]:
#
# Visualización de un rango de tiempo
#
df_subset = df['1954-01-01':'1959-12-01']
_ = df_subset.plot(
color='tab:blue',
figsize=(11,4),
marker='.',
)
plt.gca().spines["left"].set_color("gray")
plt.gca().spines["bottom"].set_color("gray")
plt.gca().spines["top"].set_visible(False)
plt.gca().spines["right"].set_visible(False)
[5]:
#
# Regiones de interes
#
_ = df.plot(
color='tab:blue',
figsize=(11,4),
marker='.',
)
plt.axvspan(
'1954-01-01',
'1957-12-01',
color='tab:gray',
alpha=0.3,
)
plt.axhspan(
3000,
4000,
color='tab:cyan',
alpha=0.3,
)
plt.gca().spines["left"].set_color("gray")
plt.gca().spines["bottom"].set_color("gray")
plt.gca().spines["top"].set_visible(False)
plt.gca().spines["right"].set_visible(False)