как добавить линию тренда на такой код в питоне

Рейтинг: -1Ответов: 2Опубликовано: 23.03.2023
# NINO
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
import pandas as pd
noaa_nino3 = pd.read_csv('https://www.cpc.ncep.noaa.gov/data/indices/sstoi.indices',
                      sep=r" ", skipinitialspace=True,
                      parse_dates={'time': ['YR','MON']},
                      index_col='time')['NINO3']
noaa_nino3.head()
noaa_nino3.plot()
plt.grid(axis="y")
plt.grid(axis="x")
plt.show()
#####################################

Ответы

▲ 1
# NINO
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
import pandas as pd
noaa_nino3 = pd.read_csv('https://www.cpc.ncep.noaa.gov/data/indices/sstoi.indices',
                      sep=r" ", skipinitialspace=True,
                      parse_dates={'time': ['YR','MON']},
                      index_col='time')['NINO3']
noaa_nino3.head()
noaa_nino3.plot()
plt.grid(axis="y")
plt.grid(axis="x")
noaa_nino3_mavg20 = noaa_nino3.rolling(window=20, center=False).mean() # new
plt.plot(noaa_nino3_mavg20.index, noaa_nino3_mavg20.values) # new
plt.show()

Результат

введите сюда описание изображения

▲ 0

Пример с использованием Seaborn:

import numpy as np
import seaborn as sns
import pandas as pd

df = pd.DataFrame({'data': np.random.rand(100) + np.linspace(0, 1, 100)})
df.iloc[10] = 2
df.iloc[80] = 0
sns.regplot(x=df.index, y=df['data'])

введите сюда описание изображения

Если у вас на графике есть выбросы, то линия тренда может нарисоваться не совсем правильно, тогда рекомендуется использовать параметр robust:

sns.regplot(x=df.index, y=df['data'], robust=True)

Больше примеров тут.