Форум сайта python.su
Всем привет
Очень хотелось бы понять, как можно взять медиану от определенного количества данных (скажем 300) и протянуть до конца исследуемого массива дюанных.
Смысл такой же как и в скользящем среднем, но только для медианы.
Нпраимер , есть список
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1 шаг: [1, 2, 3] и медиана 2 2 шаг: [ 2, 3, 4] и медиана 3
Отредактировано sl0w (Дек. 17, 2017 01:05:36)
Офлайн
pandas.rolling_median, pandas.rolling_mean
Офлайн
Хм, а каким образом можно посчитать следующее : если значение
1столбца[I] > 2столбца[I] то значение 3столбца[I+1] = 1 else 0?
Отредактировано sl0w (Дек. 17, 2017 02:53:53)
Офлайн
Медиа́на (от лат. mediāna — середина) в математической статистике — число, характеризующее выборку (например, набор чисел). Если все элементы выборки различны, то медиана — это такое число выборки, что ровно половина из элементов выборки больше него, а другая половина меньше него. В более общем случае медиану можно найти, упорядочив элементы выборки по возрастанию или убыванию и взяв средний элемент. Например, выборка {11, 9, 3, 5, 5} после упорядочивания превращается в {3, 5, 5, 9, 11} и её медианой является число 5. Если в выборке чётное число элементов, медиана может быть не определена однозначно: для числовых данных чаще всего используют полусумму двух соседних значений (то есть медиану набора {1, 3, 5, 7} принимают равной 4), подробнее см. ниже.Если у тебя данные в виде (100 100 100 3 2 1 100 100 100), то как бы ты ни ходил по этому массиву, тебе его в любом случае надо сначала весь отсортировать. А если ты его отсортировал, то количество данных в нём известно и он где-то хранится, поэтому можно просто поделить длину массива на два и сразу получить медиану из хранилища. Если же у тебя поступает отсортированный массив неизвестного размера, то ты можешь обновлять медиану на каждом шаге, построив минимальное индуктивное расширение. Но оно не такое, как ты думаешь, потому что сортировать ничего не нужно. Будет браться один следующий элемент массива и сразу будет обновляться текущая медиана. Таким образом к концу перебора всех элементов медиана будет уже получена и не нужно будеть ни делить массив пополам, ни хранить его в памяти.
Отредактировано py.user.next (Дек. 17, 2017 03:17:27)
Офлайн
С медианой понятно) благодарствую
Но также хотел бы узнать, как делать сдвиги. Для другой ячейки нужно реализовать алгоритм
code ]1столбца > 2столбца то значение 3столбца = 1 else 0?
Где значения в скобках это индексы.
В общем виде ищу формулу:
Модуль(значения) > медианы (модулей значений) то столбец [I+1] =1
Отредактировано sl0w (Дек. 17, 2017 12:08:16)
Офлайн
непонятно излагаете
>>> l = [i for i in range(20)] >>> for i in range(len(l) - 2): print(l[i:i+3]) [0, 1, 2] [1, 2, 3] [2, 3, 4] [3, 4, 5] [4, 5, 6] [5, 6, 7] [6, 7, 8] [7, 8, 9] [8, 9, 10] [9, 10, 11] [10, 11, 12] [11, 12, 13] [12, 13, 14] [13, 14, 15] [14, 15, 16] [15, 16, 17] [16, 17, 18] [17, 18, 19] >>>
Офлайн
нашел более интересный вариант - просто зашифтить
получается аля
from pandas import Series series= list(range(10)) series.shift(1) #а потом можно и переприсвоить аля series = series.shift(1)
Офлайн