Trong số này, bước tách là đơn giản nhất. Trên thực tế, trong nhiều tình huống, chúng tôi có thể muốn chia tập dữ liệu thành các nhóm và làm điều gì đó với các nhóm đó. Trong bước áp dụng, chúng tôi có thể muốn thực hiện một trong những điều sau đây
tổng hợp. tính toán thống kê tóm tắt [hoặc thống kê] cho mỗi nhóm. Vài ví dụ
Tính tổng hoặc phương tiện của nhóm
Tính toán kích thước / số lượng nhóm
chuyển đổi. thực hiện một số tính toán dành riêng cho nhóm và trả về một đối tượng được lập chỉ mục giống như. Vài ví dụ
Chuẩn hóa dữ liệu [zscore] trong một nhóm
Điền NA trong các nhóm với một giá trị bắt nguồn từ mỗi nhóm
lọc. loại bỏ một số nhóm, theo tính toán của nhóm để đánh giá Đúng hoặc Sai. Vài ví dụ
Loại bỏ dữ liệu thuộc về các nhóm chỉ có một vài thành viên
Lọc ra dữ liệu dựa trên tổng hoặc giá trị trung bình của nhóm
Một số kết hợp của những điều trên. GroupBy sẽ kiểm tra kết quả của bước áp dụng và cố gắng trả lại kết quả được kết hợp hợp lý nếu kết quả đó không phù hợp với một trong hai loại trên
Vì tập hợp các phương thức thể hiện đối tượng trên cấu trúc dữ liệu gấu trúc nói chung là phong phú và biểu cảm, nên chúng ta thường chỉ muốn gọi một hàm DataFrame trên mỗi nhóm. Cái tên GroupBy hẳn đã khá quen thuộc với những ai đã sử dụng công cụ dựa trên SQL [hoặc
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]02], trong đó bạn có thể viết mã như
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2
Chúng tôi mong muốn thực hiện các thao tác như thế này một cách tự nhiên và dễ dàng thể hiện bằng cách sử dụng gấu trúc. Chúng tôi sẽ giải quyết từng lĩnh vực của chức năng GroupBy, sau đó cung cấp một số ví dụ/trường hợp sử dụng không tầm thường
Xem sách dạy nấu ăn để biết một số chiến lược nâng cao.
Tách một đối tượng thành các nhóm#
các đối tượng gấu trúc có thể được phân chia trên bất kỳ trục nào của chúng. Định nghĩa trừu tượng của nhóm là cung cấp ánh xạ nhãn tới tên nhóm. Để tạo một đối tượng GroupBy [sẽ nói thêm về đối tượng GroupBy ở phần sau], bạn có thể làm như sau
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
Ánh xạ có thể được chỉ định theo nhiều cách khác nhau
Một hàm Python, được gọi trên mỗi nhãn trục
Một danh sách hoặc mảng NumPy có cùng độ dài với trục đã chọn
Một lệnh hoặc
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
03, cung cấp ánh xạIn [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
04Đối với các đối tượng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
05, một chuỗi cho biết tên cột hoặc tên cấp chỉ mục được sử dụng để nhómIn [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
06 chỉ là đường cú pháp choIn [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
07Một danh sách của bất kỳ những điều trên
Nói chung, chúng tôi gọi các đối tượng nhóm là các khóa. Ví dụ, hãy xem xét
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05 sau đây
Ghi chú
Một chuỗi được truyền tới
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]09 có thể đề cập đến một cột hoặc một cấp độ chỉ mục. Nếu một chuỗi khớp với cả tên cột và tên cấp chỉ mục, thì sẽ xuất hiện
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]10
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column21
Trên DataFrame, chúng tôi có được một đối tượng GroupBy bằng cách gọi
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]11. Chúng ta có thể nhóm một cách tự nhiên theo cột
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]12 hoặc
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]13 hoặc cả hai
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column25
Nếu chúng tôi cũng có MultiIndex trên các cột
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]12 và
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]13, chúng tôi có thể nhóm theo tất cả trừ các cột được chỉ định
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column28
Chúng sẽ phân chia DataFrame trên chỉ mục của nó [hàng]. Chúng tôi cũng có thể chia theo các cột
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column29
đối tượng pandas
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]16 hỗ trợ các giá trị trùng lặp. Nếu một chỉ mục không phải là duy nhất được sử dụng làm khóa nhóm trong thao tác theo nhóm, thì tất cả các giá trị cho cùng một giá trị chỉ mục sẽ được coi là nằm trong một nhóm và do đó, đầu ra của các hàm tổng hợp sẽ chỉ chứa các giá trị chỉ mục duy nhất
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]1
Lưu ý rằng không có sự phân chia nào xảy ra cho đến khi cần thiết. Việc tạo đối tượng GroupBy chỉ xác minh rằng bạn đã vượt qua một ánh xạ hợp lệ
Ghi chú
Nhiều loại thao tác dữ liệu phức tạp có thể được thể hiện dưới dạng hoạt động của GroupBy [mặc dù không thể đảm bảo hiệu quả nhất]. Bạn có thể khá sáng tạo với các chức năng ánh xạ nhãn
Sắp xếp theo nhóm#
Theo mặc định, các phím nhóm được sắp xếp trong quá trình hoạt động của
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]09. Tuy nhiên, bạn có thể vượt qua
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]18 để tăng tốc tiềm năng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]4
Lưu ý rằng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]09 sẽ giữ nguyên thứ tự sắp xếp các quan sát trong mỗi nhóm. Ví dụ: các nhóm được tạo bởi
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]11 bên dưới theo thứ tự xuất hiện trong bản gốc
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]8
Mới trong phiên bản 1. 1. 0
GroupBy dropna#
Theo mặc định, các giá trị
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]22 được loại trừ khỏi các khóa nhóm trong quá trình vận hành
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]09. Tuy nhiên, trong trường hợp bạn muốn bao gồm các giá trị
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]22 trong khóa nhóm, bạn có thể vượt qua
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]25 để đạt được điều đó
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]3
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]0
Cài đặt mặc định của đối số
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]26 là
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]27 có nghĩa là
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]22 không được bao gồm trong khóa nhóm
Thuộc tính đối tượng GroupBy #
Thuộc tính
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]29 là một lệnh có các khóa là các nhóm duy nhất được tính toán và các giá trị tương ứng là các nhãn trục thuộc mỗi nhóm. Trong ví dụ trên chúng ta có
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]1
Việc gọi hàm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]30 tiêu chuẩn của Python trên đối tượng GroupBy chỉ trả về độ dài của lệnh
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]29, do đó, phần lớn chỉ là một tiện ích
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]2
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]32 sẽ hoàn thành tab tên cột [và các thuộc tính khác]
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]3
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]4
GroupBy với MultiIndex#
Với dữ liệu được lập chỉ mục theo thứ bậc , việc nhóm theo một trong các cấp của thứ bậc là điều hoàn toàn bình thường.
Hãy tạo một Sê-ri với một
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]33 hai cấp
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]5
Sau đó, chúng tôi có thể nhóm theo một trong các cấp độ trong
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]34
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]6
Nếu MultiIndex có tên được chỉ định, chúng có thể được chuyển thay vì số cấp
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]7
Nhóm với nhiều cấp độ được hỗ trợ
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]8
Tên cấp chỉ mục có thể được cung cấp dưới dạng khóa
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]9
Thông tin thêm về hàm và tổng hợp
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]35 sau
Nhóm DataFrame với các mức Chỉ mục và cột #
Một DataFrame có thể được nhóm theo sự kết hợp của các cột và cấp chỉ mục bằng cách chỉ định tên cột là chuỗi và cấp chỉ mục là đối tượng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]36
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column210
Ví dụ sau đây nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]37 theo cấp chỉ mục
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]38 và cột
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]12
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column211
Các mức chỉ mục cũng có thể được chỉ định theo tên
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column212
Tên cấp chỉ mục có thể được chỉ định làm khóa trực tiếp cho
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]09
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column213
Lựa chọn cột DataFrame trong GroupBy#
Khi bạn đã tạo đối tượng GroupBy từ DataFrame, bạn có thể muốn làm điều gì đó khác cho từng cột. Do đó, sử dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]41 tương tự như lấy một cột từ DataFrame, bạn có thể làm
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column214
Đây chủ yếu là đường cú pháp cho sự thay thế và dài dòng hơn nhiều
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column215
Ngoài ra, phương pháp này tránh tính toán lại thông tin nhóm nội bộ bắt nguồn từ khóa đã truyền
Lặp lại thông qua các nhóm #
Với đối tượng GroupBy trong tay, việc lặp qua dữ liệu được nhóm là rất tự nhiên và hoạt động tương tự như
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]42
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column216
Trong trường hợp nhóm theo nhiều khóa, tên nhóm sẽ là một bộ
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column217
Xem Lặp qua các nhóm .
Chọn một nhóm #
Có thể chọn một nhóm duy nhất bằng cách sử dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]43
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column218
Hoặc đối với một đối tượng được nhóm trên nhiều cột
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column219
tập hợp #
Khi đối tượng GroupBy đã được tạo, một số phương thức có sẵn để thực hiện tính toán trên dữ liệu được nhóm. Các hoạt động này tương tự như API tổng hợp , API cửa sổ và < . resample API.
Một điều hiển nhiên là tổng hợp thông qua phương pháp
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]44 hoặc tương đương với phương pháp
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]45
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column250
Như bạn có thể thấy, kết quả của phép cộng sẽ có tên nhóm dưới dạng chỉ mục mới dọc theo trục được nhóm. Trong trường hợp có nhiều khóa, kết quả là MultiIndex theo mặc định, mặc dù điều này có thể được thay đổi bằng cách sử dụng tùy chọn
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]46.
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column251
Lưu ý rằng bạn có thể sử dụng hàm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]47 DataFrame để đạt được kết quả tương tự vì tên cột được lưu trữ trong kết quả
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]33
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column252
Một ví dụ tổng hợp đơn giản khác là tính toán kích thước của mỗi nhóm. Điều này được bao gồm trong GroupBy dưới dạng phương thức
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]49. Nó trả về một Sê-ri có chỉ mục là tên nhóm và có giá trị là kích thước của mỗi nhóm
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column253
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column254
Một ví dụ tổng hợp khác là tính toán số lượng giá trị duy nhất của mỗi nhóm. Điều này tương tự như hàm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]50, ngoại trừ việc nó chỉ tính các giá trị duy nhất
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column255
Ghi chú
Các hàm tổng hợp sẽ không trả về các nhóm mà bạn đang tổng hợp nếu chúng được đặt tên theo cột, khi
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]51, giá trị mặc định. Các cột được nhóm sẽ là chỉ số của đối tượng được trả về
Vượt qua
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]52 sẽ trả về các nhóm mà bạn đang tổng hợp, nếu chúng được đặt tên theo cột
Các hàm tổng hợp là những hàm làm giảm kích thước của các đối tượng được trả về. Một số chức năng tổng hợp phổ biến được lập bảng dưới đây
Hàm số
Sự mô tả
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]53
Tính giá trị trung bình của các nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]54
Tính tổng các giá trị nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]55
Tính toán kích thước nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]56
Tính số lượng nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]57
Độ lệch chuẩn của các nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]58
Tính toán phương sai của các nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]59
Sai số chuẩn của giá trị trung bình của các nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]60
Tạo thống kê mô tả
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]61
Tính toán đầu tiên của các giá trị nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]62
Tính giá trị cuối cùng của nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]63
Lấy giá trị thứ n hoặc tập hợp con nếu n là danh sách
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]64
Tính giá trị tối thiểu của nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]65
Tính giá trị tối đa của nhóm
Các hàm tổng hợp ở trên sẽ loại trừ các giá trị NA. Bất kỳ hàm nào làm giảm giá trị của
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]03 thành giá trị vô hướng đều là hàm tổng hợp và sẽ hoạt động, một ví dụ tầm thường là
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]67. Lưu ý rằng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]63 có thể đóng vai trò là bộ giảm tốc hoặc bộ lọc, xem tại đây .
Áp dụng nhiều chức năng cùng lúc#
Với
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]03 được nhóm, bạn cũng có thể chuyển một danh sách hoặc lệnh của các hàm để thực hiện tổng hợp, xuất ra một DataFrame
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column256
Trên một
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05 được nhóm, bạn có thể chuyển một danh sách các hàm để áp dụng cho từng cột, danh sách này tạo ra kết quả tổng hợp với chỉ mục phân cấp
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column257
Các tập hợp kết quả được đặt tên cho chính các chức năng. Nếu bạn cần đổi tên, thì bạn có thể thêm vào một chuỗi hoạt động cho một
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]03 như thế này
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column258
Đối với một
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05 được nhóm, bạn có thể đổi tên theo cách tương tự
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column259
Ghi chú
Nói chung, tên cột đầu ra phải là duy nhất. Bạn không thể áp dụng cùng một hàm [hoặc hai hàm trùng tên] cho cùng một cột
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column280
gấu trúc không cho phép bạn cung cấp nhiều lambdas. Trong trường hợp này, gấu trúc sẽ xáo trộn tên của các hàm lambda [không tên], nối thêm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]73 vào mỗi lambda tiếp theo
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column281
Tập hợp được đặt tên #
Mới trong phiên bản 0. 25. 0
Để hỗ trợ tập hợp theo cột cụ thể với quyền kiểm soát tên cột đầu ra, gấu trúc chấp nhận cú pháp đặc biệt trong
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]74, được gọi là "tập hợp được đặt tên", trong đó
Các từ khóa là tên cột đầu ra
Các giá trị là các bộ có phần tử đầu tiên là cột cần chọn và phần tử thứ hai là tập hợp để áp dụng cho cột đó. pandas cung cấp bộ tên
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
75 với các trườngIn [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
76 để làm rõ hơn các đối số là gì. Như thường lệ, tập hợp có thể là bí danh chuỗi hoặc có thể gọi được
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column282
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]75 chỉ là một
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]78. Bộ dữ liệu đơn giản cũng được cho phép
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column283
Nếu tên cột đầu ra mong muốn của bạn không phải là từ khóa Python hợp lệ, hãy tạo một từ điển và giải nén các đối số từ khóa
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column284
Các đối số từ khóa bổ sung không được chuyển qua các hàm tổng hợp. Chỉ các cặp
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]79 mới được chuyển thành
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]80. Nếu các hàm tổng hợp của bạn yêu cầu các đối số bổ sung, hãy áp dụng một phần chúng với
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]81
Ghi chú
Đối với Trăn 3. 5 trở về trước, thứ tự của
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]80 trong một hàm không được giữ nguyên. Điều này có nghĩa là thứ tự cột đầu ra sẽ không nhất quán. Để đảm bảo thứ tự nhất quán, các khóa [và các cột đầu ra] sẽ luôn được sắp xếp cho Python 3. 5
Tập hợp được đặt tên cũng hợp lệ cho tập hợp theo nhóm Sê-ri. Trong trường hợp này không có lựa chọn cột, vì vậy các giá trị chỉ là các hàm
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column285
Áp dụng các hàm khác nhau cho các cột DataFrame#
Bằng cách chuyển lệnh tới
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]83, bạn có thể áp dụng một tập hợp khác cho các cột của Khung dữ liệu
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column286
Tên hàm cũng có thể là chuỗi. Để một chuỗi hợp lệ, chuỗi đó phải được triển khai trên GroupBy hoặc có sẵn thông qua điều phối .
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column287
Hàm tổng hợp được tối ưu hóa cho Cython#
Một số tập hợp phổ biến, hiện chỉ có
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]35,
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]85,
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]86 và
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]87, đã tối ưu hóa việc triển khai Cython
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column288
Tất nhiên,
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]35 và
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]85 được triển khai trên các đối tượng gấu trúc, vì vậy đoạn mã trên sẽ hoạt động ngay cả khi không có phiên bản đặc biệt thông qua công văn [xem bên dưới]
Tập hợp với hàm do người dùng xác định#
Người dùng cũng có thể cung cấp các chức năng của riêng họ cho tập hợp tùy chỉnh. Khi tổng hợp bằng Hàm do người dùng xác định [UDF], UDF không được thay đổi
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]03 đã cung cấp, hãy xem Xoá biến bằng các phương pháp Hàm do người dùng xác định [UDF] để biết .
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column289
Dtype kết quả sẽ phản ánh của hàm tổng hợp. Nếu kết quả từ các nhóm khác nhau có các loại khác nhau, thì một loại chung sẽ được xác định giống như cách xây dựng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column290
chuyển đổi #
Phương thức
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]92 trả về một đối tượng được lập chỉ mục giống như đối tượng được nhóm. Hàm biến đổi phải
Trả về một kết quả có cùng kích thước với đoạn nhóm hoặc có thể phát rộng bằng kích thước của đoạn nhóm [e. g. , vô hướng,
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
93]Thao tác theo từng cột trên đoạn nhóm. Biến đổi được áp dụng cho đoạn nhóm đầu tiên bằng cách sử dụng đoạn. ứng dụng
Không thực hiện các thao tác tại chỗ trên đoạn nhóm. Các đoạn nhóm nên được coi là bất biến và các thay đổi đối với một đoạn nhóm có thể tạo ra kết quả không mong muốn. Ví dụ: khi sử dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
94, thìIn [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
95 phải làIn [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
96 [In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]
97][Tùy chọn] hoạt động trên toàn bộ đoạn nhóm. Nếu điều này được hỗ trợ, một đường dẫn nhanh sẽ được sử dụng bắt đầu từ đoạn thứ hai
Không dùng nữa kể từ phiên bản 1. 5. 0. Khi sử dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]98 trên một Khung dữ liệu được nhóm và hàm chuyển đổi trả về một Khung dữ liệu, gấu trúc hiện tại không căn chỉnh chỉ mục của kết quả với chỉ mục của đầu vào. Hành vi này không được dùng nữa và việc căn chỉnh sẽ được thực hiện trong phiên bản gấu trúc trong tương lai. Bạn có thể áp dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]99 cho kết quả của hàm biến đổi để tránh căn chỉnh.
Tương tự như Tập hợp có hàm do người dùng xác định , kiểu kết quả sẽ phản ánh kiểu của hàm biến đổi. Nếu kết quả từ các nhóm khác nhau có các loại khác nhau, thì một loại chung sẽ được xác định giống như cách xây dựng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05.
Giả sử chúng ta muốn chuẩn hóa dữ liệu trong mỗi nhóm
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column291
Chúng tôi hy vọng kết quả bây giờ có nghĩa là 0 và độ lệch chuẩn 1 trong mỗi nhóm, chúng tôi có thể dễ dàng kiểm tra
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column292
Chúng ta cũng có thể so sánh trực quan tập dữ liệu gốc và tập dữ liệu đã chuyển đổi
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column293
Các hàm chuyển đổi có đầu ra kích thước thấp hơn được phát sóng để phù hợp với hình dạng của mảng đầu vào
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column294
Ngoài ra, các phương thức tích hợp có thể được sử dụng để tạo ra các đầu ra giống nhau
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column295
Một biến đổi dữ liệu phổ biến khác là thay thế dữ liệu bị thiếu bằng giá trị trung bình của nhóm
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column296
Chúng tôi có thể xác minh rằng phương tiện nhóm không thay đổi trong dữ liệu được chuyển đổi và dữ liệu được chuyển đổi không chứa NA
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column297
Ghi chú
Một số hàm sẽ tự động chuyển đổi đầu vào khi được áp dụng cho đối tượng GroupBy, nhưng trả về đối tượng có hình dạng giống như ban đầu. Vượt qua
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]52 sẽ không ảnh hưởng đến các phương thức chuyển đổi này
Ví dụ.
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2102
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column298
Thao tác cửa sổ và lấy mẫu lại#
Có thể sử dụng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2103,
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2104 và
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2105 làm phương thức trên nhóm
Ví dụ dưới đây sẽ áp dụng phương pháp
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2105 trên các mẫu của cột B dựa trên các nhóm của cột A
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column299
Phương thức
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2104 sẽ tích lũy một thao tác nhất định [trong ví dụ là ____054] cho tất cả các thành viên của từng nhóm cụ thể
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]10
Giả sử bạn muốn sử dụng phương pháp
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2103 để nhận tần suất hàng ngày trong mỗi nhóm của khung dữ liệu của mình và muốn hoàn thành các giá trị còn thiếu bằng phương pháp
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2110
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]11
lọc #
Phương thức
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2111 trả về một tập hợp con của đối tượng ban đầu. Giả sử chúng ta chỉ muốn lấy các phần tử thuộc về các nhóm có tổng nhóm lớn hơn 2
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]12
Đối số của
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2111 phải là một hàm, được áp dụng cho toàn bộ nhóm, trả về
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]27 hoặc
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]96
Một thao tác hữu ích khác là lọc ra các phần tử thuộc nhóm chỉ có một vài thành viên
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]13
Ngoài ra, thay vì loại bỏ các nhóm vi phạm, chúng ta có thể trả về một đối tượng được lập chỉ mục tương tự trong đó các nhóm không vượt qua bộ lọc chứa đầy NaN
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]14
Đối với DataFrames có nhiều cột, các bộ lọc phải chỉ định rõ ràng một cột làm tiêu chí lọc
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]15
Ghi chú
Một số hàm khi được áp dụng cho một đối tượng nhóm sẽ hoạt động như một bộ lọc trên đầu vào, trả về hình dạng thu nhỏ của bản gốc [và có khả năng loại bỏ các nhóm], nhưng với chỉ mục không thay đổi. Vượt qua
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]52 sẽ không ảnh hưởng đến các phương thức chuyển đổi này
Ví dụ.
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2116
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]16
Gửi đến các phương thức ví dụ #
Khi thực hiện tổng hợp hoặc chuyển đổi, bạn có thể chỉ muốn gọi một phương thức thể hiện trên mỗi nhóm dữ liệu. Điều này khá dễ thực hiện bằng cách chuyển các hàm lambda
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]17
Tuy nhiên, nó khá dài dòng và có thể lộn xộn nếu bạn cần chuyển các đối số bổ sung. Sử dụng một chút thông minh về siêu lập trình, GroupBy hiện có khả năng “gửi” các lệnh gọi phương thức đến các nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]18
Điều đang thực sự xảy ra ở đây là một trình bao hàm đang được tạo. Khi được gọi, nó nhận mọi đối số đã truyền và gọi hàm với bất kỳ đối số nào trên mỗi nhóm [trong ví dụ trên là hàm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]86]. Các kết quả sau đó được kết hợp với nhau nhiều theo kiểu
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2118 và
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]92 [nó thực sự sử dụng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2120 để suy ra cách dán, tài liệu tiếp theo]. Điều này cho phép một số hoạt động được thực hiện khá ngắn gọn
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]19
Trong ví dụ này, chúng tôi đã cắt tập hợp chuỗi thời gian thành các phần theo năm, sau đó gọi độc lập fillna trên các nhóm.
Các phương thức
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2121 và
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2122 hoạt động trên các nhóm kiểu
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]03
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]40
Linh hoạt SELECT Column1, Column2, mean[Column3], sum[Column4]
FROM SomeTable
GROUP BY Column1, Column2
120#
Một số thao tác trên dữ liệu được nhóm có thể không phù hợp với danh mục tổng hợp hoặc biến đổi. Hoặc, bạn có thể chỉ muốn GroupBy suy ra cách kết hợp các kết quả. Đối với những điều này, hãy sử dụng hàm
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2120, có thể thay thế cho cả
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]83 và
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]92 trong nhiều trường hợp sử dụng tiêu chuẩn. Tuy nhiên,
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2120 có thể xử lý một số trường hợp sử dụng đặc biệt
Ghi chú
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2120 có thể hoạt động như chức năng giảm tốc, biến áp hoặc lọc, tùy thuộc vào chính xác những gì được truyền cho nó. Nó có thể phụ thuộc vào hàm đã truyền và chính xác những gì bạn đang nhóm. Do đó, [các] cột được nhóm có thể được bao gồm trong đầu ra cũng như đặt các chỉ số
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]41
Kích thước của kết quả trả về cũng có thể thay đổi
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]42
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2120 trên Sê-ri có thể hoạt động dựa trên giá trị được trả về từ hàm được áp dụng, chính nó là một sê-ri và có thể đưa kết quả lên một Khung dữ liệu
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]43
Kiểm soát vị trí [các] cột được nhóm với SELECT Column1, Column2, mean[Column3], sum[Column4]
FROM SomeTable
GROUP BY Column1, Column2
131#
Ghi chú
Nếu
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2132 được chỉ định khi gọi
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]11, các chức năng được chuyển đến
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2120 trả về các đầu ra được lập chỉ mục tương tự sẽ có các khóa nhóm được thêm vào chỉ mục kết quả. Các phiên bản trước của gấu trúc sẽ chỉ thêm các khóa nhóm khi kết quả từ hàm được áp dụng có chỉ mục khác với đầu vào. Nếu
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2131 không được chỉ định, các khóa nhóm sẽ không được thêm cho các đầu ra được lập chỉ mục tương tự. Trong tương lai, hành vi này sẽ thay đổi thành luôn tôn trọng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2131, mặc định là
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]27
Thay đổi trong phiên bản 1. 5. 0
Để kiểm soát xem [các] cột được nhóm có được bao gồm trong chỉ mục hay không, bạn có thể sử dụng đối số
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2131. So sánh
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]44
với
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]45
Tương tự như Tập hợp có hàm do người dùng xác định , dtype kết quả sẽ phản ánh dtype của hàm apply. Nếu kết quả từ các nhóm khác nhau có các loại khác nhau, thì một loại chung sẽ được xác định giống như cách xây dựng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05.
Các thói quen tăng tốc Numba #
Mới trong phiên bản 1. 1
Nếu Numba được cài đặt dưới dạng phụ thuộc tùy chọn, các phương thức
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]92 và
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]83 hỗ trợ các đối số
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2142 và
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2143. Xem nâng cao hiệu suất với Numba để biết cách sử dụng chung các đối số và xem xét hiệu suất.
Chữ ký hàm phải bắt đầu bằng chính xác
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2144 vì dữ liệu thuộc từng nhóm sẽ được chuyển vào
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2145 và chỉ mục nhóm sẽ được chuyển vào
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2146
Cảnh báo
Khi sử dụng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2142, sẽ không có hành vi “dự phòng” nào trong nội bộ. Dữ liệu nhóm và chỉ mục nhóm sẽ được chuyển dưới dạng mảng NumPy cho hàm do người dùng xác định JITed và sẽ không có lần thử thực thi thay thế nào được thử
Các tính năng hữu ích khác#
Tự động loại trừ các cột “phiền toái”#
Một lần nữa hãy xem xét ví dụ về DataFrame mà chúng tôi đã xem xét
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]46
Giả sử chúng ta muốn tính độ lệch chuẩn được nhóm theo cột
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]12. Có một vấn đề nhỏ, cụ thể là chúng tôi không quan tâm đến dữ liệu trong cột
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]13. Chúng tôi gọi đây là cột "phiền toái". Bạn có thể tránh các cột phiền toái bằng cách chỉ định
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2150
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]47
Lưu ý rằng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2151 hiệu quả hơn
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2152, vì vậy nếu kết quả của hàm tổng hợp chỉ thú vị trên một cột [ở đây là
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2153], nó có thể được lọc trước khi áp dụng hàm tổng hợp
Ghi chú
Bất kỳ cột đối tượng nào, kể cả nếu nó chứa các giá trị số như đối tượng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2154, đều được coi là cột "phiền toái". Chúng được tự động loại trừ khỏi các chức năng tổng hợp trong groupby
Nếu bạn muốn bao gồm các cột thập phân hoặc cột đối tượng trong một tập hợp với các kiểu dữ liệu không phiền toái khác, bạn phải làm như vậy một cách rõ ràng
Cảnh báo
Tính năng tự động loại bỏ các cột phiền toái đã không còn được dùng nữa và sẽ bị xóa trong phiên bản tương lai của pandas. Nếu các cột được bao gồm mà không thể thao tác được, thay vào đó, gấu trúc sẽ gây ra lỗi. Để tránh điều này, hãy chọn các cột bạn muốn thao tác hoặc chỉ định
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2150
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]48
Xử lý các giá trị Phân loại [không] được quan sát#
Khi sử dụng nhóm cá mú
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2156 [với tư cách là một nhóm duy nhất hoặc là một phần của nhiều nhóm], từ khóa
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2157 kiểm soát việc trả về tích cartesian của tất cả các giá trị có thể có của nhóm [
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2158] hay chỉ những giá trị được quan sát của nhóm [
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2159]
Hiển thị tất cả các giá trị
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]49
Chỉ hiển thị các giá trị được quan sát
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]80
dtype được trả về của nhóm sẽ luôn bao gồm tất cả các danh mục đã được nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]81
Xử lý nhóm NA và NaT#
Nếu có bất kỳ giá trị NaN hoặc NaT nào trong khóa nhóm, chúng sẽ tự động bị loại trừ. Nói cách khác, sẽ không bao giờ có “nhóm NA” hay “nhóm NaT”. Đây không phải là trường hợp trong các phiên bản gấu trúc cũ hơn, nhưng người dùng thường loại bỏ nhóm NA [và hỗ trợ nó là một vấn đề đau đầu khi triển khai]
Nhóm với các yếu tố được sắp xếp #
Các biến phân loại được biểu diễn dưới dạng thể hiện của lớp
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2156 của gấu trúc có thể được sử dụng làm khóa nhóm. Nếu vậy, thứ tự của các cấp độ sẽ được giữ nguyên
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]82
Nhóm với một đặc điểm kỹ thuật cá mú #
Bạn có thể cần chỉ định thêm một chút dữ liệu để nhóm chính xác. Bạn có thể sử dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]36 để cung cấp điều khiển cục bộ này
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]83
Nhóm một cột cụ thể với tần suất mong muốn. Điều này giống như lấy mẫu lại
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]84
Bạn có một thông số kỹ thuật không rõ ràng ở chỗ bạn có một chỉ mục được đặt tên và một cột có thể là các nhóm tiềm năng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]85
Lấy hàng đầu tiên của mỗi nhóm #
Giống như đối với DataFrame hoặc Sê-ri, bạn có thể gọi đầu và đuôi trên một nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]86
Điều này hiển thị n hàng đầu tiên hoặc cuối cùng từ mỗi nhóm
Lấy hàng thứ n của mỗi nhóm#
Để chọn từ DataFrame hoặc Sê-ri mục thứ n, hãy sử dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]63. Đây là phương pháp rút gọn và sẽ trả về một hàng [hoặc không có hàng] cho mỗi nhóm nếu bạn chuyển một int cho n
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]87
Nếu bạn muốn chọn mục không null thứ n, hãy sử dụng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]26 kwarg. Đối với DataFrame, đây phải là
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2164 hoặc
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2165 giống như bạn sẽ chuyển đến dropna
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]88
Như với các phương pháp khác, vượt qua
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]52, sẽ đạt được quá trình lọc, trả về hàng được nhóm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]89
Bạn cũng có thể chọn nhiều hàng từ mỗi nhóm bằng cách chỉ định nhiều giá trị thứ n dưới dạng danh sách các số nguyên
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]30
Liệt kê các mục nhóm #
Để xem thứ tự xuất hiện của mỗi hàng trong nhóm của nó, hãy sử dụng phương pháp
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2167
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]31
Liệt kê các nhóm #
Để xem thứ tự của các nhóm [trái ngược với thứ tự của các hàng trong một nhóm do
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2167 đưa ra], bạn có thể sử dụng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2169
Lưu ý rằng các số được cung cấp cho các nhóm khớp với thứ tự mà các nhóm sẽ được nhìn thấy khi lặp qua đối tượng nhóm, không phải thứ tự chúng được quan sát lần đầu tiên
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]32
âm mưu #
Groupby cũng hoạt động với một số phương pháp vẽ đồ thị. Ví dụ: giả sử chúng tôi nghi ngờ rằng một số tính năng trong DataFrame có thể khác nhau theo nhóm, trong trường hợp này, các giá trị trong cột 1 trong đó nhóm là “B” trung bình cao hơn 3
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]33
Chúng ta có thể dễ dàng hình dung điều này với một boxplot
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]34
Kết quả của việc gọi
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2170 là một từ điển có khóa là các giá trị của cột nhóm của chúng tôi
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2171 [“A” và “B”]. Các giá trị của từ điển kết quả có thể được kiểm soát bởi từ khóa
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2172 của
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2170. Xem tài liệu trực quan hóa để biết thêm.
Cảnh báo
Vì lý do lịch sử,
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2174 không tương đương với
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2175. Xem tại đây để biết giải thích.
Gọi chức năng đường ống #
Tương tự như chức năng được cung cấp bởi
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]05 và
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]03, các hàm nhận các đối tượng
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]32 có thể được kết nối với nhau bằng cách sử dụng phương thức
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2179 để cho phép cú pháp rõ ràng hơn, dễ đọc hơn. Để đọc về
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2180 theo thuật ngữ chung, hãy xem tại đây .
Kết hợp
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2181 và
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2180 thường hữu ích khi bạn cần sử dụng lại các đối tượng GroupBy
Ví dụ: hãy tưởng tượng có một Khung dữ liệu với các cột cho cửa hàng, sản phẩm, doanh thu và số lượng đã bán. Chúng tôi muốn tính giá theo nhóm [tôi. e. doanh thu/số lượng] trên mỗi cửa hàng và trên mỗi sản phẩm. Chúng ta có thể thực hiện điều này trong một thao tác gồm nhiều bước, nhưng việc thể hiện nó dưới dạng đường ống có thể làm cho mã dễ đọc hơn. Đầu tiên chúng tôi thiết lập dữ liệu
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]35
Bây giờ, để tìm giá cho mỗi cửa hàng/sản phẩm, chúng ta chỉ cần làm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]36
Đường ống cũng có thể mang tính biểu cảm khi bạn muốn phân phối một đối tượng được nhóm cho một số chức năng tùy ý, chẳng hạn
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]37
trong đó
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]85 lấy một đối tượng GroupBy và tìm giá trị trung bình của các cột Doanh thu và Số lượng tương ứng cho từng kết hợp Sản phẩm-Cửa hàng. Hàm
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]85 có thể là bất kỳ hàm nào nhận đối tượng GroupBy;
Ví dụ#
Tập hợp lại theo yếu tố #
Nhóm lại các cột của DataFrame theo tổng của chúng và tính tổng các cột được tổng hợp
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]38
Thừa số nhiều cột#
Bằng cách sử dụng
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2169, chúng tôi có thể trích xuất thông tin về các nhóm theo cách tương tự như
SELECT Column1, Column2, mean[Column3], sum[Column4] FROM SomeTable GROUP BY Column1, Column2187 [như được mô tả thêm trong API định hình lại ] nhưng . Điều này có thể hữu ích như một bước trung gian giống như phân loại trong quá trình xử lý, khi mối quan hệ giữa các hàng trong nhóm quan trọng hơn nội dung của chúng hoặc làm đầu vào cho một thuật toán chỉ chấp nhận mã hóa số nguyên. [Để biết thêm thông tin về hỗ trợ trong pandas cho dữ liệu phân loại đầy đủ, hãy xem Giới thiệu phân loại và tài liệu API . ] . ] . ] . ] . ] . ] . ] . ] . ] . ] . ] . ] . ] . ] . ] . ] . ].]
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]39
Nhóm theo bộ chỉ mục để 'lấy mẫu lại' dữ liệu#
Lấy mẫu lại tạo ra các mẫu giả thuyết mới [mẫu lại] từ dữ liệu đã quan sát hiện có hoặc từ một mô hình tạo dữ liệu. Những mẫu mới này tương tự như những mẫu đã có từ trước
Để lấy mẫu lại để hoạt động trên các chỉ số không giống với thời gian, có thể sử dụng quy trình sau
Trong các ví dụ sau, df. chỉ mục // 5 trả về một mảng nhị phân được sử dụng để xác định những gì được chọn cho thao tác nhóm
Ghi chú
Ví dụ dưới đây cho thấy cách chúng tôi có thể giảm mẫu bằng cách hợp nhất các mẫu thành ít mẫu hơn. Ở đây bằng cách sử dụng df. chỉ mục // 5, chúng tôi đang tổng hợp các mẫu trong thùng. Bằng cách áp dụng hàm std[], chúng tôi tổng hợp thông tin có trong nhiều mẫu thành một tập hợp con nhỏ các giá trị là độ lệch chuẩn của chúng, do đó làm giảm số lượng mẫu
In [1]: df = pd.DataFrame[ ...: [ ...: ["bird", "Falconiformes", 389.0], ...: ["bird", "Psittaciformes", 24.0], ...: ["mammal", "Carnivora", 80.2], ...: ["mammal", "Primates", np.nan], ...: ["mammal", "Carnivora", 58], ...: ], ...: index=["falcon", "parrot", "lion", "monkey", "leopard"], ...: columns=["class", "order", "max_speed"], ...: ] ...: In [2]: df Out[2]: class order max_speed falcon bird Falconiformes 389.0 parrot bird Psittaciformes 24.0 lion mammal Carnivora 80.2 monkey mammal Primates NaN leopard mammal Carnivora 58.0 # default is axis=0 In [3]: grouped = df.groupby["class"] In [4]: grouped = df.groupby["order", axis="columns"] In [5]: grouped = df.groupby[["class", "order"]]00
Trả lại một Sê-ri để truyền tên #
Nhóm các cột DataFrame, tính toán một tập hợp các chỉ số và trả về một Chuỗi có tên. Tên sê-ri được sử dụng làm tên cho chỉ mục cột. Điều này đặc biệt hữu ích khi kết hợp với các hoạt động định hình lại chẳng hạn như xếp chồng trong đó tên chỉ mục cột sẽ được sử dụng làm tên của cột được chèn