Проблема в том, что при построении ACF для разностного временного ряда (который имеет 99 наблюдений) вы устанавливаете количество лагов, равное количеству наблюдений в исходном временном ряду (которое имеет 100 наблюдений), то есть число из лагов больше, чем количество наблюдений.
Чтобы решить проблему, вам нужно заменить lags = np.arange(len(df))
на lags = np.arange(len(df) - 1)
во втором графике ACF.
Обратите внимание, что при расчете первых различий временного ряда вы теряете одно наблюдение, для которого установлено значение NaN (в частности, для первого наблюдения установлено значение NaN). Следовательно, после удаления пропущенных значений с помощью dropna()
у вас будет на одно наблюдение меньше.
import numpy as np, pandas as pd
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt
plt.rcParams.update({'figure.figsize':(9,7), 'figure.dpi':120})
# Import data
df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/wwwusage.csv', names=['value'], header=0)
# Original Series
fig, axes = plt.subplots(2, 2, sharex=True)
axes[0, 0].plot(df.value); axes[0, 0].set_title('Original Series')
plot_acf(df.value, ax=axes[0, 1], lags=np.arange(len(df)))
# 1st Differencing
axes[1, 0].plot(df.value.diff()); axes[1, 0].set_title('1st Order Differencing')
plot_acf(df.value.diff().dropna(), ax=axes[1, 1], lags=np.arange(len(df) - 1))
plt.show()