Получите наибольшую разницу в группе - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь выяснить, как рассчитать 5 лучших продуктов с наибольшим изменением в продажах за предыдущий месяц. Ниже приведен небольшой фрагмент моих данных, здесь Vendor_SKU и Order_Month - это индексы, созданные pd.groupby.

amz = amz.groupby(['Vendor_SKU', 'Order_Month'])['Quantity'].sum()

                          Vendor_SKU  Order_Month
                          DLEBL140    2018-11-01       17.0
                                      2018-12-01       13.0
                          DLEBL90     2018-11-01       29.0
                                      2018-12-01       39.0
                          DLEBR160    2018-11-01       16.0
                                      2018-12-01       17.0
                          DLEG180     2018-11-01       30.0
                                      2018-12-01       20.0
                          DLER150     2018-11-01       22.0
                                      2018-12-01       23.0
                          DLEW110     2018-11-01       49.0
                                      2018-12-01       41.0
                          DLEY130     2018-11-01       32.0
                                      2018-12-01       20.0

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

                  Vendor_SKU  
                  DLEBL140      -4.0
                  DLEBL90       10.0
                  DLEBR160       1.0     
                  DLEG180      -10.0
                  DLER150        1.0
                  DLEW110       -8.0           
                  DLEY130      -12.0

С этим результатом я могу выяснить изменения в топ-5. Есть идеи? Спасибо!

Благодаря быстрому ответу от вас, ребята, я попробовал groupby.diff, прежде чем опубликовать этот вопрос, но получил пакет NaN без индекса, просто столбец NaN с несколькими случайными числами. Позже я понял, что могут быть продукты, купленные только в ноябре или декабре, как первые две строки ниже, а затем вместо разницы между двумя месяцами я получил только NaN с diff ().

Vendor_SKU Order_Month  Quantity
0          C142  2018-12-01       2.0
1        CC-18P  2018-11-01       5.0
2      DLEBL140  2018-11-01      17.0
3      DLEBL140  2018-12-01      13.0
4       DLEBL90  2018-11-01      29.0
5       DLEBL90  2018-12-01      39.0

Полагаю, мне нужно вставить несколько строк с количеством 0, а затем попробовать diff ().

1 Ответ

0 голосов
/ 18 января 2019

Начните с groupby и diff, так как вы хотите самый большой diff для каждого поставщика:

amz.groupby(level=0).diff(1).max(level=0)

Vendor_SKU
DLEBL140    -4.0
DLEBL90     10.0
DLEBR160     1.0
DLEG180    -10.0
DLER150      1.0
DLEW110     -8.0
DLEY130    -12.0
Name: Quantity, dtype: float64

Отсюда, если вы хотите найти 5 лучших отличий, вы можете использовать nlargest:

amz.groupby(level=0).diff(1).max(level=0).nlargest(5)

Vendor_SKU
DLEBL90     10.0
DLEBR160     1.0
DLER150      1.0
DLEBL140    -4.0
DLEW110     -8.0
Name: Quantity, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...