Одна из проблем при использовании сводной таблицы 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