Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 17, 2017 01:05:18

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Медиана от определенного числа данных

Всем привет

Очень хотелось бы понять, как можно взять медиану от определенного количества данных (скажем 300) и протянуть до конца исследуемого массива дюанных.

Смысл такой же как и в скользящем среднем, но только для медианы.

Нпраимер , есть список

 x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
мы берем медиану по 3 значениям, тоесть
 1 шаг: [1, 2, 3] и медиана 2 
2 шаг: [ 2, 3, 4] и медиана 3

Отредактировано sl0w (Дек. 17, 2017 01:05:36)

Офлайн

#2 Дек. 17, 2017 01:41:48

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Медиана от определенного числа данных

pandas.rolling_median, pandas.rolling_mean

Офлайн

#3 Дек. 17, 2017 02:53:04

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Медиана от определенного числа данных

Хм, а каким образом можно посчитать следующее : если значение

1столбца[I] >  2столбца[I] то значение 3столбца[I+1] = 1 else 0?

Не совсем понимаю моменты со смещением

Отредактировано sl0w (Дек. 17, 2017 02:53:53)

Офлайн

#4 Дек. 17, 2017 03:17:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Медиана от определенного числа данных

wiki. медиана (статистика)

Медиа́на (от лат. 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)

Офлайн

#5 Дек. 17, 2017 12:06:36

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Медиана от определенного числа данных

С медианой понятно) благодарствую

Но также хотел бы узнать, как делать сдвиги. Для другой ячейки нужно реализовать алгоритм
code ]1столбца > 2столбца то значение 3столбца = 1 else 0?

Где значения в скобках это индексы.

В общем виде ищу формулу:

Модуль(значения) > медианы (модулей значений)  то столбец [I+1] =1

Отредактировано sl0w (Дек. 17, 2017 12:08:16)

Офлайн

#6 Дек. 18, 2017 00:01:27

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Медиана от определенного числа данных

непонятно излагаете

 >>> 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]
>>> 

Офлайн

#7 Дек. 18, 2017 18:02:23

sl0w
Зарегистрирован: 2016-04-28
Сообщения: 109
Репутация: +  1  -
Профиль   Отправить e-mail  

Медиана от определенного числа данных

нашел более интересный вариант - просто зашифтить

получается аля

 from pandas import Series 
series= list(range(10))
series.shift(1) 
#а потом можно и переприсвоить аля 
series = series.shift(1)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version