У меня есть данные наблюдений, проводимые каждую минуту. Значения данных наблюдений постоянно увеличиваются. Иногда встречаются ошибочные данные, где data[n] < data[n-1].
Пример:
pl.DataFrame(dict(
time= ['10:00', '10:01', '10:02', '10:03', '10:04', '10:05', '10:06'],
value=[ 1000 , 10 , 22 , 22 , 50 , 1100 , 60 ]
))
Я хочу получать данные за минуту и сглаживать недопустимые значения. Итак, в этом случае, когда мы видим 10 после 1000, мы устанавливаем 1000 на 0 и разделяем разницу, поэтому 5 для 10:00 и 5 для 10:01.
Для предыдущего кадра данных результат должен быть 5, 5, 12, 0, 28, 5, 5.
Как мы можем выразить это в полярных выражениях?
Это выражение, кажется, работает, за исключением того, что оно пропускает первые два значения
df.with_columns(
pl.when(pl.col('value').shift(-1) < pl.col('value'))
.then(0)
.otherwise(pl.col('value'))
.alias('value_fixed')
).with_columns(
pl.when(pl.col('value_fixed') == 0)
.then((pl.col('value_fixed').shift() + pl.col('value_fixed').shift(-1)) / 2)
.otherwise(pl.col('value_fixed'))
.alias('value_fixed_avg')
).with_columns(
pl.col('value_fixed_avg').diff()
)
Подробнее здесь: https://stackoverflow.com/questions/759 ... ratic-data
Поляры получают значение разницы монотонно возрастающих значений с ошибочными данными. ⇐ Python
Программы на Python
1762296820
Anonymous
У меня есть данные наблюдений, проводимые каждую минуту. Значения данных наблюдений постоянно увеличиваются. Иногда встречаются ошибочные данные, где data[n] < data[n-1].
Пример:
pl.DataFrame(dict(
time= ['10:00', '10:01', '10:02', '10:03', '10:04', '10:05', '10:06'],
value=[ 1000 , 10 , 22 , 22 , 50 , 1100 , 60 ]
))
Я хочу получать данные за минуту и сглаживать недопустимые значения. Итак, в этом случае, когда мы видим 10 после 1000, мы устанавливаем 1000 на 0 и разделяем разницу, поэтому 5 для 10:00 и 5 для 10:01.
Для предыдущего кадра данных результат должен быть 5, 5, 12, 0, 28, 5, 5.
Как мы можем выразить это в полярных выражениях?
Это выражение, кажется, работает, за исключением того, что оно пропускает первые два значения
df.with_columns(
pl.when(pl.col('value').shift(-1) < pl.col('value'))
.then(0)
.otherwise(pl.col('value'))
.alias('value_fixed')
).with_columns(
pl.when(pl.col('value_fixed') == 0)
.then((pl.col('value_fixed').shift() + pl.col('value_fixed').shift(-1)) / 2)
.otherwise(pl.col('value_fixed'))
.alias('value_fixed_avg')
).with_columns(
pl.col('value_fixed_avg').diff()
)
Подробнее здесь: [url]https://stackoverflow.com/questions/75912992/polars-get-the-diff-value-of-a-monotonically-increasing-values-with-erratic-data[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия