Giới thiệu
Hầu hết mọi người có thể có kinh nghiệm với các bảng trục trong Excel. Pandas cung cấp một chức năng tương tự được gọi là [đủ thích hợp]
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]9. Mặc dù nó cực kỳ hữu ích, tôi thường thấy mình phải vật lộn để nhớ cách sử dụng cú pháp để định dạng đầu ra cho nhu cầu của tôi. Bài viết này sẽ tập trung vào việc giải thích chức năng pivot_table và cách sử dụng nó cho dữ liệu của bạn & nbsp; phân tích.
Nếu bạn không quen thuộc với khái niệm này, Wikipedia giải thích nó bằng các điều khoản cấp cao. BTW, bạn có biết rằng Microsoft đã đăng ký nhãn hiệu PivotTable không? Tôi cũng không cần phải nói, tôi sẽ nói về một bảng xoay không thể xoay được!BTW, did you know that Microsoft trademarked PivotTable? Neither did I. Needless to say, I’ll be talking about a pivot table not PivotTable!
Là một phần thưởng bổ sung, tôi đã tạo ra một tờ cheat đơn giản tóm tắt pivot_table. Bạn có thể tìm thấy nó ở cuối bài này và tôi hy vọng nó phục vụ như một tài liệu tham khảo hữu ích. Hãy cho tôi biết nếu đó là & nbsp; hữu ích.
The Data
Một trong những thách thức với việc sử dụng Panda từ
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]9 là đảm bảo bạn hiểu dữ liệu của mình và những câu hỏi bạn đang cố gắng trả lời với bảng Pivot. Nó là một chức năng dường như đơn giản nhưng có thể tạo ra phân tích rất mạnh mẽ rất & nbsp; nhanh chóng.
Trong kịch bản này, tôi sẽ theo dõi một đường ống bán hàng [còn được gọi là phễu]. Vấn đề cơ bản là một số chu kỳ bán hàng rất dài [nghĩ rằng phần mềm doanh nghiệp, thiết bị vốn, v.v.] và quản lý muốn hiểu chi tiết hơn trong suốt & NBSP;
Các câu hỏi điển hình & nbsp; bao gồm:
- Bao nhiêu doanh thu trong & nbsp; đường ống?
- Những sản phẩm nào trong & nbsp; đường ống?
- Ai có những sản phẩm nào ở giai đoạn & nbsp;
- Làm thế nào có khả năng chúng ta đóng các giao dịch theo năm & nbsp; kết thúc?
Nhiều công ty sẽ có các công cụ CRM hoặc phần mềm khác mà Sales sử dụng để theo dõi quy trình. Mặc dù họ có thể có các công cụ hữu ích để phân tích dữ liệu, nhưng chắc chắn ai đó sẽ xuất dữ liệu để vượt trội và sử dụng một pivotTable để tóm tắt dữ liệu & nbsp;CRM tools or other software that sales uses to track the process. While they may have useful tools for analyzing the data, inevitably someone will export the data to Excel and use a PivotTable to summarize the data.
Sử dụng bảng Pivot Pivot có thể là một giải pháp thay thế tốt bởi vì nó & nbsp; là:
- Nhanh hơn [một khi nó được đặt & nbsp; up]
- Tự tài liệu [nhìn vào mã và bạn biết nó & nbsp; không]
- Dễ sử dụng để tạo báo cáo hoặc & nbsp; email
- Linh hoạt hơn vì bạn có thể xác định tổng hợp custome & nbsp; chức năng
Đọc trong & nbsp; dữ liệu
Hãy để thiết lập môi trường của chúng tôi & nbsp; đầu tiên.
Nếu bạn muốn theo dõi, bạn có thể tải xuống tệp Excel.
import pandas as pd import numpy as np
Cảnh báo phiên bản
API PIVOT_TABLE đã thay đổi theo thời gian, vì vậy vui lòng đảm bảo rằng bạn đã cài đặt phiên bản gần đây của gấu trúc [> 0,15] để ví dụ này hoạt động. Ví dụ này cũng sử dụng kiểu dữ liệu danh mục cũng yêu cầu phiên bản gần đây.API has changed over time so please make sure you have a recent version of pandas [ > 0.15] installed for this example to work. This example also uses the category data type which requires a recent version as well.
Đọc trong dữ liệu kênh bán hàng của chúng tôi vào & NBSP; DataFrame
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]
714466 | Trantow-Barrows | Craig Booker | Debra Henley | CPU | 1 | 30000 | trình bày |
714466 | Trantow-Barrows | Craig Booker | Debra Henley | CPU | 1 | 10000 | trình bày |
714466 | Trantow-Barrows | Craig Booker | Debra Henley | CPU | 2 | 5000 | trình bày |
737550 | Phần mềm | Craig Booker | Debra Henley | CPU | 1 | 35000 | trình bày |
146832 | Phần mềm | Sự bảo trì | Debra Henley | CPU | 2 | 65000 | trình bày |
Phần mềm
Sự bảo trì
df["Status"] = df["Status"].astype["category"] df["Status"].cat.set_categories[["won","pending","presented","declined"],inplace=True]
Xoay & nbsp; dữ liệu
Khi chúng tôi xây dựng bảng trục, tôi nghĩ rằng nó dễ dàng nhất để thực hiện từng bước một. Thêm các mục và kiểm tra từng bước để xác minh bạn đang nhận được kết quả mà bạn mong đợi. Don Tiết sợ chơi với thứ tự và các biến để xem bài thuyết trình nào có ý nghĩa nhất đối với nhu cầu của bạn.
Bảng xoay đơn giản nhất phải có khung dữ liệu và
df["Status"] = df["Status"].astype["category"] df["Status"].cat.set_categories[["won","pending","presented","declined"],inplace=True]2. Trong trường hợp này, hãy để sử dụng tên làm chỉ mục của chúng tôi.
pd.pivot_table[df,index=["Name"]]
740150 | 35000 | 1.000000 |
737550 | 35000 | 1.000000 |
141962 | 65000 | 2.000000 |
412290 | 5000 | 2.000000 |
307599 | 7000 | 3.000000 |
688981 | 100000 | 5.000000 |
146832 | 65000 | 2.000000 |
729833 | 35000 | 2.000000 |
218895 | 25000 | 1.500000 |
163416 | 30000 | 1.000000 |
239344 | 7500 | 1.000000 |
714466 | 15000 | 1.333333 |
Bạn cũng có thể có nhiều chỉ mục. Trên thực tế, hầu hết các arg
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]9 có thể lấy nhiều giá trị thông qua danh sách A & nbsp;
pd.pivot_table[df,index=["Name","Rep","Manager"]]
740150 | 35000 | 1.000000 |
737550 | 35000 | 1.000000 |
141962 | 65000 | 2.000000 |
412290 | 5000 | 2.000000 |
307599 | 7000 | 3.000000 |
688981 | 100000 | 5.000000 |
146832 | 65000 | 2.000000 |
729833 | 35000 | 2.000000 |
218895 | 25000 | 1.500000 |
163416 | 30000 | 1.000000 |
239344 | 7500 | 1.000000 |
714466 | 15000 | 1.333333 |
Kassulke, Ondricka và Metz
pd.pivot_table[df,index=["Manager","Rep"]]
720237.0 | 20000.000000 | 1.250000 |
194874.0 | 38333.333333 | 1.666667 |
576220.0 | 20000.000000 | 1.500000 |
196016.5 | 27500.000000 | 1.250000 |
614061.5 | 44250.000000 | 3.000000 |
Koepp Ltd
Kulas inc
pd.pivot_table[df,index=["Manager","Rep"],values=["Price"]]
20000 |
38333 |
20000 |
27500 |
44250 |
Koepp Ltd
pd.pivot_table[df,index=["Manager","Rep"],values=["Price"],aggfunc=np.sum]
80000 |
115000 |
40000 |
110000 |
177000 |
Koepp Ltd
pd.pivot_table[df,index=["Manager","Rep"],values=["Price"],aggfunc=[np.mean,len]]
20000 | 4 |
38333 | 3 |
20000 | 2 |
27500 | 4 |
44250 | 4 |
Koepp Ltd
Kulas inc
Stokes LLC
pd.pivot_table[df,index=["Manager","Rep"],values=["Price"], columns=["Product"],aggfunc=[np.sum]]
65000 | 5000 | Kassulke, Ondricka và Metz | 10000 |
105000 | Kassulke, Ondricka và Metz | Kassulke, Ondricka và Metz | 10000 |
35000 | 5000 | Kassulke, Ondricka và Metz | Keeling LLC |
95000 | 5000 | Kassulke, Ondricka và Metz | 10000 |
165000 | 7000 | 5000 | Keeling LLC |
Koepp Ltd
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]0
65000 | 5000 | 0 | 10000 |
105000 | 0 | 0 | 10000 |
35000 | 5000 | 0 | 0 |
95000 | 5000 | 0 | 10000 |
165000 | 7000 | 5000 | 0 |
Tôi nghĩ rằng nó sẽ hữu ích để thêm số lượng là tốt. Thêm số lượng vào danh sách
df["Status"] = df["Status"].astype["category"] df["Status"].cat.set_categories[["won","pending","presented","declined"],inplace=True]5.
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]1
65000 | 5000 | 0 | 10000 | 2 | 2 | 0 | 1 |
105000 | 0 | 0 | 10000 | 4 | 0 | 0 | 1 |
35000 | 5000 | 0 | 0 | 1 | 2 | 0 | 0 |
95000 | 5000 | 0 | 10000 | 3 | 1 | 0 | 1 |
165000 | 7000 | 5000 | 0 | 7 | 3 | 2 | 0 |
Tôi nghĩ rằng nó sẽ hữu ích để thêm số lượng là tốt. Thêm số lượng vào danh sách
df["Status"] = df["Status"].astype["category"] df["Status"].cat.set_categories[["won","pending","presented","declined"],inplace=True]5.
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]2
65000 | 2 |
5000 | 2 |
10000 | 1 |
105000 | 4 |
10000 | 1 |
35000 | 1 |
5000 | 2 |
95000 | 3 |
5000 | 1 |
10000 | 1 |
165000 | 7 |
7000 | 3 |
5000 | 2 |
Phần mềm
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]3
65000 | 2 | 32500.000000 | 1.000000 |
5000 | 2 | 5000.000000 | 2.000000 |
10000 | 1 | 10000.000000 | 1.000000 |
105000 | 4 | 52500.000000 | 2.000000 |
10000 | 1 | 10000.000000 | 1.000000 |
35000 | 1 | 35000.000000 | 1.000000 |
5000 | 2 | 5000.000000 | 2.000000 |
95000 | 3 | 47500.000000 | 1.500000 |
5000 | 1 | 5000.000000 | 1.000000 |
10000 | 1 | 10000.000000 | 1.000000 |
165000 | 7 | 82500.000000 | 3.500000 |
7000 | 3 | 7000.000000 | 3.000000 |
5000 | 2 | 5000.000000 | 2.000000 |
522000 | 30 | 30705.882353 | 1.764706 |
Số lượng
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]4
70000 |
50000 |
50000 |
65000 |
65000 |
5000 |
45000 |
172000 |
522000 |
Số lượng
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]5
70000 | 0 | 0 | 0 | 2 | 0 | 0 | 0 |
40000 | 10000 | 0 | 0 | 1 | 2 | 0 | 0 |
30000 | 0 | 0 | 20000 | 1 | 0 | 0 | 2 |
65000 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
65000 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 5000 | 0 | 0 | 0 | 1 | 0 | 0 |
30000 | 0 | 5000 | 10000 | 1 | 0 | 1 | 1 |
165000 | 7000 | 0 | 0 | 2 | 1 | 0 | 0 |
Cedric Rêu
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]6
35000 | 0 | 0 | 0 | 70000 | 0 | 0 | 0 | 2 | 0 | 0 | 0 |
40000 | 5000 | 0 | 0 | 40000 | 10000 | 0 | 0 | 1 | 2 | 0 | 0 |
30000 | 0 | 0 | 10000 | 30000 | 0 | 0 | 20000 | 1 | 0 | 0 | 2 |
65000 | 0 | 0 | 0 | 65000 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
65000 | 0 | 0 | 0 | 65000 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 5000 | 0 | 0 | 0 | 5000 | 0 | 0 | 0 | 1 | 0 | 0 |
30000 | 0 | 5000 | 10000 | 30000 | 0 | 5000 | 10000 | 1 | 0 | 1 | 1 |
82500 | 7000 | 0 | 0 | 165000 | 7000 | 0 | 0 | 2 | 1 | 0 | 0 |
Cedric Rêu
Một pivottable là một cách tương tác để nhanh chóng tóm tắt một lượng lớn dữ liệu. Bạn có thể sử dụng một pivottable để phân tích chi tiết dữ liệu số và trả lời các câu hỏi không lường trước được về dữ liệu của bạn. Một pivottable được thiết kế đặc biệt để: truy vấn một lượng lớn dữ liệu theo nhiều cách thân thiện với người dùng.
Làm thế nào để bạn truy cập các bảng xoay vòng trong Python?
Các bảng pivot trong gấu trúc được nhìn thấy phổ biến trong các tệp MS Excel. Trong Python, các bảng Pivot của Pandas DataFrames có thể được tạo bằng lệnh: pandas.pivot_table. Bạn có thể tổng hợp một cột số như một bảng chéo so với hai cột phân loại.
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]7
35000 | 0 | 0 | 0 | 70000 | 0 | 0 | 0 | 2 | 0 | 0 | 0 |
40000 | 5000 | 0 | 0 | 40000 | 10000 | 0 | 0 | 1 | 2 | 0 | 0 |
30000 | 0 | 0 | 10000 | 30000 | 0 | 0 | 20000 | 1 | 0 | 0 | 2 |
65000 | 0 | 0 | 0 | 65000 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
thắng
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]8
40000 | 5000 | 0 | 0 | 40000 | 10000 | 0 | 0 | 1 | 2 | 0 | 0 |
65000 | 0 | 0 | 0 | 65000 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
0 | 5000 | 0 | 0 | 0 | 5000 | 0 | 0 | 0 | 1 | 0 | 0 |
82500 | 7000 | 0 | 0 | 165000 | 7000 | 0 | 0 | 2 | 1 | 0 | 0 |
thắng
Chúng ta có thể xem xét tất cả các giao dịch đang chờ xử lý và won & nbsp;
Cheat Sheet
Để cố gắng tóm tắt tất cả những điều này, tôi đã tạo ra một bảng gian lận mà tôi hy vọng sẽ giúp bạn nhớ cách sử dụng gấu trúc
df = pd.read_excel["../in/sales-funnel.xlsx"] df.head[]9. Hãy xem và cho tôi biết những gì bạn & nbsp; nghĩ.
Cảm ơn và chúc may mắn với việc tạo bảng Pivot & NBSP; bảng của riêng bạn.