Как построить выбросы с учетом уникальных идентификаторов - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть столбец item_code в моих данных и другой столбец, sales, который представляет объем продаж для конкретного товара.

Данные могут иметь определенный идентификатор товара много раз. Существуют и другие столбцы, отличающие эти записи.

Я хочу нанести только объем продаж для каждого элемента (поскольку данные имеют тысячи различных идентификаторов элементов, построение каждой записи может быть затруднено).).

Поскольку я очень новичок в этом, каков правильный способ и инструмент для этого?

1 Ответ

0 голосов
/ 12 декабря 2018

вы можете использовать панд.Вы должны выбрать метод для обнаружения выбросов, но у меня есть пример для вас:

Если вы хотите получить выбросы для всех продаж (не в группах), вы можете использовать apply с функцией (пример - лямбда-функция)иметь индексы выбросов.

import numpy as np
%matplotlib inline

df = pd.DataFrame({'item_id': [1, 1, 2, 1, 2, 1, 2],
                  'sales': [0, 2, 30, 3, 30, 30, 55]})

df[df.apply(lambda x: np.abs(x.sales - df.sales.mean()) / df.sales.std() > 1, 1)
           ].set_index('item_id').plot(style='.', color='red')

В этом примере мы сгенерировали выборку данных и индексы поиска точек, которые больше, чем среднее значение / std + 1 (вы можете попробовать другой метод).А затем просто нанесите их на график, где у - количество продаж, а х - идентификатор товара.Этот метод обнаружил точки 0 и 55. Если вы хотите искать выбросы в группах, вы можете сгруппировать данные раньше.

df.groupby('item_id').apply(lambda data: data.loc[
    data.apply(lambda x: np.abs(x.sales - data.sales.mean()) / data.sales.std() > 1, 1)
]).set_index('item_id').plot(style='.', color='red')

В этом примере у нас есть точки 30 и 55, потому что 0 не является выбросом для группы, гдеitem_id = 1, но 30 - это.

Это то, что вы хотите сделать?Надеюсь, это поможет начать с этого.

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