resample agrupa específicamente por PERIODOS DE TIEMPO (día, mes, año), y a diferencia de groupby, SÍ incluye los periodos sin ningún dato, con NaN.
Paso 1 de 3 · ve a tu ritmo
1df.resample('M')['ventas'].sum() Agrupa por mes, EXISTA o no dato ese mes