У меня есть кадр данных, который выглядит следующим образом:
print(df.head(10))
day CO2
1 549.500000
2 663.541667
3 830.416667
4 799.695652
5 813.850000
6 769.583333
7 681.941176
8 653.333333
9 845.666667
10 436.086957
Затем я использую следующую функцию и строки кода, чтобы получить выбросы из столбца CO2:
def estimate_gaussian(dataset):
mu = np.mean(dataset)#moyenne cf mu
sigma = np.std(dataset)#écart_type/standard deviation
limit = sigma * 1.5
min_threshold = mu - limit
max_threshold = mu + limit
return mu, sigma, min_threshold, max_threshold
mu, sigma, min_threshold, max_threshold = estimate_gaussian(df['CO2'].values)
condition1 = (dataset < min_threshold)
condition2 = (dataset > max_threshold)
outliers1 = np.extract(condition1, dataset)
outliers2 = np.extract(condition2, dataset)
outliers = np.concatenate((outliers1, outliers2), axis=0)
Какойдает мне следующий результат:
print(outliers)
[830.41666667 799.69565217 813.85 769.58333333 845.66666667]
Теперь я хотел бы отметить эти выбросы красным цветом на графике рассеяния.
Ниже приведен код, который я использовал длявыделите один выброс в красном на графике рассеяния, но я не могу найти способ сделать это для каждого элемента списка выбросов, который является numpy.ndarray:
y = df['CO2']
x = df['day']
col = np.where(x<0,'k',np.where(y<845.66666667,'b','r'))
plt.scatter(x, y, c=col, s=5, linewidth=3)
plt.show()
Вот что я получу, но я быкак тот же результат всех выбросов. Не могли бы вы помочь мне?
https://ibb.co/Ns9V7Zz