Панды: пометьте значения столбцов больше / меньше 1 стандартного отклонения по всем столбцам в сводной таблице - PullRequest
0 голосов
/ 17 ноября 2018

Структура моей сводной таблицы:

            Crypto Exchange      ABUCOINS     BINANCE ... ZAIF   Average   StdDeviation
Transaction time_period_start
            01:00:00 PM          13762.75     NaN     ...  NaN   13482.51  700.253
            02:00:00 AM          13563.53     NaN          NaN   13591.80  782.476
BTC_USD          .
                 .
            12:00:00 PM          13630.80     NaN     ...  NaN   13595.96  497.21


.
.
.

ZYD_USD     01:00:00 AM           NaN        0.045    ...  NaN   0.032     0.02 
                 .
            12:00:00 PM          

Фрейм данных содержит более 5000 транзакций на 23 платформах Crypto Exchange. Сводная таблица индексируется Transaction и time_period_start по столбцам Crypto Exchange

Чтобы определить выброс, я хочу отметить отдельную цену во всех столбцах, которые имеют значение меньше (или больше) значения StdDeviation для этой строки.

Я просмотрел различные вопросы, которые уже присутствовали, и предложил следующую функцию:

def findOutlier(x):
    for i in range(len(x)-1):
         if x[i] is not None and abs(x[i] - x[-2]) > x[-1]:
             x[i] = True

    return x[0] 

Тогда

df_temp = df_with_sd.apply(findOutlier, axis=1)

Проблемы с этим подходом:

  1. Потеря первоначальной цены - значения изменяются на 1,0, в то время как я хочу найти способ отметить каждую цену, не теряя ее ценовое значение. (Может быть, добавив знак + после значений?)
  2. Функция работает аналогично даже после изменения условий

Как я могу получить требуемые результаты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...