Anonymous
Python: поиск выбросов по тренду данных
Сообщение
Anonymous » 20 янв 2025, 21:58
Обратите внимание, что этот пост не дублируется ни в одной из следующих соответствующих частей SO:
Найти Python с выбросом четности
Python: поиск выбросов внутри списка
Нахождение выбросов с помощью z оценка
Мне предоставили данные в ходе эксперимента:
Код: Выделить всё
import matplotlib.pyplot as plt
x = [22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
y_NaOH = [94.2, 146.2, 222.2, 276.2, 336.2, 372.2, 428.2, 542.2, 576.2, 684.2, 766.2, 848.2, 904.2, 1042.2, 1136.2]
y_NaHCO3 = [232.0, 308.0, 322.0, 374.0, 436.0, 494.0, 592.0, 660.0, 704.0, 824.0, 900.0, 958.0, 1048.0, 1138.0, 1232.0]
y_BaOH2 = [493.1, 533.1, 549.1, 607.1, 665.1, 731.1, 797.1, 867.1, 971.1, 1007.1, 1091.1, 1221.1, 1311.1, 1371.1, 1497.1, ]
plt.plot(x, y_NaOH)
plt.plot(x, y_NaHCO3)
plt.plot(x, y_BaOH2)
plt.show()
Однако у меня возникли проблемы с маркировкой выбросов, вот что я попробовал:
Код: Выделить всё
import matplotlib.pyplot as plt
import statistics
x = [22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
y_NaOH = [94.2, 146.2, 222.2, 276.2, 336.2, 372.2, 428.2, 542.2, 576.2, 684.2, 766.2, 848.2, 904.2, 1042.2, 1136.2]
y_NaHCO3 = [232.0, 308.0, 322.0, 374.0, 436.0, 494.0, 592.0, 660.0, 704.0, 824.0, 900.0, 958.0, 1048.0, 1138.0, 1232.0]
y_BaOH2 = [493.1, 533.1, 549.1, 607.1, 665.1, 731.1, 797.1, 867.1, 971.1, 1007.1, 1091.1, 1221.1, 1311.1, 1371.1, 1497.1, ]
# plt.plot(x, y_NaOH)
# plt.plot(x, y_NaHCO3)
# plt.plot(x, y_BaOH2)
# plt.show()
def detect_outlier(data_1):
threshold = 1
mean_1 = statistics.mean(data_1)
std_1 = statistics.stdev(data_1)
result_dataset = [y for y in data_1 if abs((y - mean_1)/std_1)
Подробнее здесь: [url]https://stackoverflow.com/questions/64098165/python-finding-outliers-from-a-trend-of-data[/url]
1737399515
Anonymous
Обратите внимание, что этот пост не дублируется ни в одной из следующих соответствующих частей SO: [list] [*]Найти Python с выбросом четности [*]Python: поиск выбросов внутри списка [*]Нахождение выбросов с помощью z оценка [/list] Мне предоставили данные в ходе эксперимента: [code] import matplotlib.pyplot as plt x = [22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50] y_NaOH = [94.2, 146.2, 222.2, 276.2, 336.2, 372.2, 428.2, 542.2, 576.2, 684.2, 766.2, 848.2, 904.2, 1042.2, 1136.2] y_NaHCO3 = [232.0, 308.0, 322.0, 374.0, 436.0, 494.0, 592.0, 660.0, 704.0, 824.0, 900.0, 958.0, 1048.0, 1138.0, 1232.0] y_BaOH2 = [493.1, 533.1, 549.1, 607.1, 665.1, 731.1, 797.1, 867.1, 971.1, 1007.1, 1091.1, 1221.1, 1311.1, 1371.1, 1497.1, ] plt.plot(x, y_NaOH) plt.plot(x, y_NaHCO3) plt.plot(x, y_BaOH2) plt.show() [/code] [img]https://i.sstatic.net/3Aqiq.png[/img] Однако у меня возникли проблемы с маркировкой выбросов, вот что я попробовал: [code] import matplotlib.pyplot as plt import statistics x = [22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50] y_NaOH = [94.2, 146.2, 222.2, 276.2, 336.2, 372.2, 428.2, 542.2, 576.2, 684.2, 766.2, 848.2, 904.2, 1042.2, 1136.2] y_NaHCO3 = [232.0, 308.0, 322.0, 374.0, 436.0, 494.0, 592.0, 660.0, 704.0, 824.0, 900.0, 958.0, 1048.0, 1138.0, 1232.0] y_BaOH2 = [493.1, 533.1, 549.1, 607.1, 665.1, 731.1, 797.1, 867.1, 971.1, 1007.1, 1091.1, 1221.1, 1311.1, 1371.1, 1497.1, ] # plt.plot(x, y_NaOH) # plt.plot(x, y_NaHCO3) # plt.plot(x, y_BaOH2) # plt.show() def detect_outlier(data_1): threshold = 1 mean_1 = statistics.mean(data_1) std_1 = statistics.stdev(data_1) result_dataset = [y for y in data_1 if abs((y - mean_1)/std_1) Подробнее здесь: [url]https://stackoverflow.com/questions/64098165/python-finding-outliers-from-a-trend-of-data[/url]