Я пытаюсь найти способ применить алгоритм, предназначенный для работы с большими фреймами данных, к очень маленькому фрейму данных, так как идея состоит в том, чтобы получать каждую строку данных динамически от беспроводного датчика, и он должен работать только для фреймов данных только 2 или 3 ряда.
Проблема, с которой я столкнулся, заключается в том, что метод обнаружения выбросов, который я использую в алгоритме, похоже, не работает для фреймов данных, которые имеют меньше 10 строк.
Данные, которые я использую, взяты из .xlsx файл с тремя столбцами: «ID», «Температура» и «Дата». Тест на выбросы, который я применяю к своему алгоритму, - это среднее абсолютное отклонение:
dfn=df[(np.abs(stats.zscore(df['Temperature']))<4)]
Сообщение об ошибке, которое я получаю при попытке использовать алгоритм для 9 строк данных, выглядит следующим образом:
/home/.../scipy/stats/stats.py:2419: RuntimeWarning: invalid value encountered in true_divide
return (a - mns) / sstd
Metodo3in.py:20: RuntimeWarning: invalid value encountered in less
Тогда код все равно выполняется, но я получаю:
Empty DataFrame
Columns: [ID,Temperature,Date]
Index:[]
Вопросы
- Почему 10 - минимальное количество строк данных для stats.zscore на работу?
- Есть ли какие-нибудь альтернативы, которые можно применить к меньшим фреймам данных? Возможна потеря точности.
Любая помощь будет принята с благодарностью!