Tuesday, August 2, 2022

Pandas Pivot Table Explained

 Одна из проблем при использовании сводной таблицы panda заключается в том, чтобы убедиться, что вы понимаете свои данные и на какие вопросы вы пытаетесь ответить с помощью сводной таблицы. Это, казалось бы, простая функция, но она может очень быстро произвести очень мощный анализ. В этом сценарии будем отслеживать pipeline продаж (также называемую pipeline).  Основная проблема заключается в том, что некоторые циклы продаж очень длинные (например, «корпоративное программное обеспечение», капитальное оборудование и т. д.), и руководство хочет более подробно изучить его в течение года.

Типичные вопросы включают в себя:

Сколько доходов находится в стадии разработки?

Какие продукты находятся в разработке?

У кого какие продукты на каком этапе?

Насколько вероятно, что мы закроем сделки к концу года?

У многих компаний есть инструменты CRM или другое программное обеспечение, которое отдел продаж использует для отслеживания процесса. Хотя у них могут быть полезные инструменты для анализа данных, неизбежно кто-то будет экспортировать данные в Excel и использовать сводную таблицу для обобщения данных. Использование сводной таблицы панды может быть хорошей альтернативой, потому что это:

Быстрее (после настройки)

Самодокументирование (посмотрите на код, и вы знаете, что он делает)

Простота использования для создания отчета или электронной почты

Более гибкий, потому что вы можете определить индивидуальную функцию агрегации

(.env) boris@boris-All-Series:~/PIVOT$ cat pivotPandas.py

import pandas as pd

import numpy as np

import warnings

warnings.simplefilter(action='ignore', category=FutureWarning)


df = pd.read_excel("./sales-funnel.xlsx")

print(df.head())

df["Status"] = df["Status"].astype("category")

df["Status"].cat.set_categories(["won","pending","presented","declined"],inplace=True)


# Простейшая сводная таблица должна иметь фрейм данных и индекс.

# В этом случае давайте использовать имя в качестве индекса.

print(pd.pivot_table(df,index=["Name"]))


# Вы также можете иметь несколько индексов. На самом деле, большинство

# из аргументов pivot_table могут принимать несколько значений в списке.

print(pd.pivot_table(df,index=["Name","Rep","Manager"]))


# Что мы, вероятно, хотим сделать, так это посмотреть на это

# c менеджером и представителем.

# Это достаточно легко сделать, изменив индекс.

print(pd.pivot_table(df,index=["Manager","Rep"]))


# Столбец цены автоматически усредняет данные

# и  мы можем сделать подсчет или сумму.

# Добавить их просто с помощью aggfunc и np.sum

print(pd.pivot_table(df,index=["Manager","Rep"],values=["Price"],aggfunc=np.sum))


# Функции агрегации применяются к перечисляемым вами значениям.

print(pd.pivot_table(df,index=["Manager","Rep"],values=["Price"],

               columns=["Product"],aggfunc=[np.sum],fill_value=0))















(.env) boris@boris-All-Series:~/PIVOT$ python3 pivotPandas.py

   Account                          Name            Rep  ... Quantity  Price     Status

0   714466               Trantow-Barrows   Craig Booker  ...        1  30000  presented

1   714466               Trantow-Barrows   Craig Booker  ...        1  10000  presented

2   714466               Trantow-Barrows   Craig Booker  ...        2   5000    pending

3   737550  Fritsch, Russel and Anderson   Craig Booker  ...        1  35000   declined

4   146832                  Kiehn-Spinka  Daniel Hilton  ...        2  65000        won


[5 rows x 8 columns]


                              Account   Price  Quantity

Name                                                   

Barton LLC                     740150   35000  1.000000

Fritsch, Russel and Anderson   737550   35000  1.000000

Herman LLC                     141962   65000  2.000000

Jerde-Hilpert                  412290    5000  2.000000

Kassulke, Ondricka and Metz    307599    7000  3.000000

Keeling LLC                    688981  100000  5.000000

Kiehn-Spinka                   146832   65000  2.000000

Koepp Ltd                      729833   35000  2.000000

Kulas Inc                      218895   25000  1.500000

Purdy-Kunde                    163416   30000  1.000000

Stokes LLC                     239344    7500  1.000000

Trantow-Barrows                714466   15000  1.333333


                                                          Account   Price  Quantity

Name                         Rep           Manager                                 

Barton LLC                   John Smith    Debra Henley    740150   35000  1.000000

Fritsch, Russel and Anderson Craig Booker  Debra Henley    737550   35000  1.000000

Herman LLC                   Cedric Moss   Fred Anderson   141962   65000  2.000000

Jerde-Hilpert                John Smith    Debra Henley    412290    5000  2.000000

Kassulke, Ondricka and Metz  Wendy Yule    Fred Anderson   307599    7000  3.000000

Keeling LLC                  Wendy Yule    Fred Anderson   688981  100000  5.000000

Kiehn-Spinka                 Daniel Hilton Debra Henley    146832   65000  2.000000

Koepp Ltd                    Wendy Yule    Fred Anderson   729833   35000  2.000000

Kulas Inc                    Daniel Hilton Debra Henley    218895   25000  1.500000

Purdy-Kunde                  Cedric Moss   Fred Anderson   163416   30000  1.000000

Stokes LLC                   Cedric Moss   Fred Anderson   239344    7500  1.000000

Trantow-Barrows              Craig Booker  Debra Henley    714466   15000  1.333333


                              Account         Price  Quantity

Manager           Rep                                            

Debra Henley  Craig Booker   720237.0  20000.000000  1.250000

              Daniel Hilton  194874.0  38333.333333  1.666667

              John Smith     576220.0  20000.000000  1.500000

Fred Anderson Cedric Moss    196016.5  27500.000000  1.250000

              Wendy Yule     614061.5  44250.000000  3.000000

                          

                          Price

Manager            Rep                  

Debra Henley  Craig Booker   80000

                         Daniel Hilton  115000

                         John Smith      40000

Fred Anderson Cedric Moss  110000

                        Wendy Yule      177000

   

                            sum

                       Price                             

Product                         CPU Maintenance Monitor Software

Manager          Rep                                               

Debra Henley  Craig Booker    65000        5000      0    10000

                         Daniel Hilton  105000           0          0    10000

                         John Smith      35000        5000        0        0

Fred Anderson Cedric Moss     95000        5000      0    10000

              Wendy Yule     165000        7000    5000      0

















No comments:

Post a Comment