#python #pandas
Вопрос:
Я пытаюсь удалить значения из фрейма данных GPS-координат, которые отклоняются от «плавного маршрута».
Плавный маршрут был бы таким, чтобы все значения находились вне диапазона общего тренда.
Я бы хотел, чтобы это было просто и не использовало другой большой пакет (например scipy
). `
Одна из проблем заключается в том, что первые несколько значений могут быть неверными, поэтому их нельзя использовать. Фрейм данных может быть любого размера, от нескольких точек до нескольких тысяч. Я считаю, что с меньшим набором данных это сложнее.
Минимальный Пример:
import pandas as pd
df = pd.DataFrame({'a': {0: 52.1, 1: 5.2, 2: 5.3, 3: 5.2, 4: 5.4, 5: 0.0, 6: 5.2}, 'b': {0: 3.0, 1: 3.0, 2: 3.0, 3: 0.0, 4: 46.0, 5: 3.1, 6: 3.2}})
>>> df
a b
0 52.1 3.0
1 5.2 3.0
2 5.3 3.0
3 5.2 0.0
4 5.4 46.0
5 0.0 3.1
6 5.2 3.2
Желаемый результат:
>>> df
a b
1 5.2 3.0
2 5.3 3.0
6 5.2 3.2
Я пробовал использовать z-оценку, и это не всегда работает для всех вариантов использования, так как небольшие изменения в данных не улавливаются.
Комментарии:
1. Вам нужно будет определить «отложить» и «сгладить», чтобы это имело четко определенное решение.
2. У вас есть несколько диапазонов или вы уверены, что у вас есть только один диапазон?
3. Другой вопрос: у вас есть такой шаблон: 1,2,3,50,51? Где выбросы, если у вас несколько диапазонов? Диапазон с более длинной последовательностью, не так ли?
4. Я не совсем понимаю, что вы имеете в виду под своим первым вопросом…. Второй вопрос, я бы сказал, что диапазон с более длинной последовательностью
Ответ №1:
Рассмотрите возможность удаления верхних и нижних 10 квантилей:
>>> df[(df>=df.quantile(0.10)) amp; (df<=df.quantile(0.90))].dropna()
a b
1 5.2 3.0
2 5.3 3.0
6 5.2 3.2
Вы можете настроить квантили по мере необходимости для вашего большего набора данных.
Комментарии:
1. Что делать, если в нижнем квантиле нет значения, выходящего за пределы диапазона? Например, значения столбца (b) между 1 — 7 или все записи имеют одинаковое значение?
2. Я думаю, что его вопрос больше о том, как исключить выбросы в данных.
3. @not_speshal Спасибо вам за ваш ответ. Что делать, если в данных вообще нет выбросов, хорошие данные удаляются?