Pandas Groupby Aggregate

Pandas Groupby Aggregate



Kỹ thuật chia nhóm rất cần thiết vì nó tổng hợp dữ liệu tốt như thế nào về cả hiệu suất và kích thước mã. Thuật ngữ 'theo nhóm' thường mô tả một quy trình bao gồm các bước sau:

  • Chia tách : Bằng cách áp dụng các điều kiện nhất định cho tập dữ liệu, chúng ta có thể chia dữ liệu thành các nhóm.
  • Đang áp dụng : Một quy trình mà chúng tôi áp dụng riêng một phương pháp cho mọi nhóm.
  • Kết hợp : Một thủ tục để kết hợp các bộ dữ liệu khác nhau để tạo thành một cấu trúc dữ liệu sau khi sử dụng phương thức groupby ().

Trong quá trình tổng hợp, một thống kê tóm tắt cho mỗi nhóm sẽ được tính toán. Đối với mỗi nhóm, phương thức tổng hợp trả về một giá trị tổng hợp (giá trị đơn lẻ). Chúng ta có thể thực hiện một số hoạt động tổng hợp trên dữ liệu được nhóm sau khi chia dữ liệu thành các nhóm bằng cách sử dụng chức năng groupby.







Tại sao gấu trúc cung cấp nhiều phương pháp tổng hợp dữ liệu?

Gấu trúc cung cấp một loạt các tính năng và chức năng để giúp phân tích và tổng hợp dữ liệu. Ví dụ: việc sử dụng các phương thức pivot (), groupby () và pivot_table (), mỗi phương thức cung cấp một quan điểm khác nhau về cách dữ liệu sẽ được tổng hợp. Chúng cung cấp các cách tiếp cận thực tế để thực hiện các nhiệm vụ khác nhau thay vì chỉ đơn giản là đóng gói lại.



Cách sử dụng hàm .agg () trong gấu trúc

Giá trị trung bình hoặc tổng đơn giản là hàm tổng hợp được sử dụng thường xuyên nhất. Bạn có thể sử dụng một cột của khung dữ liệu hoặc nhiều cột để gọi một hàm tổng hợp. Bạn sẽ thấy nhiều cách để tổng hợp dữ liệu bằng phương pháp nhóm theo nhóm Pandas. Để chứng minh quy trình này dễ dàng hơn bao nhiêu, hãy xem một số ví dụ được đưa ra bên dưới. Các phép toán cơ bản như tổng, tối thiểu, tối đa, độ lệch tuyệt đối trung bình, độ lệch chuẩn, giá trị trung bình, trung vị, phương sai và tích là một trong những hàm tổng hợp tích hợp được sử dụng thường xuyên nhất. Để tóm tắt dữ liệu, chúng ta có thể kết hợp groupby và hàm agg ().



Ví dụ # 01: Xác định Tổng các Cột bằng cách Nhóm Dữ liệu Sử dụng Hàm groupby.agg ()

Trước tiên, chúng tôi sẽ tạo khung dữ liệu bằng cách sử dụng hàm pd.DataFrame () để chúng tôi có thể nhóm dữ liệu từ cột hoặc các cột của khung dữ liệu và sau đó xác định giá trị trung bình của chúng. Chúng ta phải nhập các mô-đun của gấu trúc và thư viện numpy trước khi tạo khung dữ liệu.





Như bạn có thể thấy, chúng tôi đã sử dụng từ điển gấu trúc để tạo khung dữ liệu của mình. Khung dữ liệu df của chúng tôi có bốn cột: “bệnh nhân” “nhóm”, “tuổi” và “chai máu”. Các giá trị dữ liệu ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') được chứa trong cột 'bệnh nhân' trong khi các giá trị dữ liệu ('A ',' A ',' B ',' C ',' A ',' C ',' C ',' B '), (21, 22, 24, 21, 20, 24, 22, 22) và ( 2, 3, 1, 1, 2, 3, 2, 1) lần lượt được chứa trong các cột “nhóm”, “tuổi” và “nhóm máu”. Giả sử chúng ta phải xác định tổng các giá trị trong cột 'blood_bottles' bằng cách nhóm các giá trị trong cột 'group'.



Đối với dữ liệu nhóm ‘A’, tổng các giá trị của ‘blood_bottles’ là 7. Đối với các giá trị nhóm ‘B’ và ‘C’, tổng các giá trị của ‘blood_bottles’ tương ứng là 2 và 6. Chúng ta cũng có thể nhóm nhiều cột để xác định tổng cho mỗi nhóm.

Như có thể quan sát, chúng tôi đã chuyển một danh sách các nhãn cột, tức là [‘bệnh nhân’, ‘nhóm’] bên trong hàm groupby () để tạo các nhóm danh mục trong mỗi cột được chỉ định. Đối với mỗi nhóm cột được chỉ định, chúng tôi đã xác định tổng giá trị trong ‘blood_bottles’. Ví dụ: ‘Ali’ nằm trong giá trị cột ‘nhóm’ A và C. Trong nhóm A, tổng giá trị của ‘máu_bottles’ cho Ali là 2 và 5 trong nhóm ‘C’.

Ví dụ # 02: Áp dụng nhiều hàm trên một cột duy nhất của khung dữ liệu bằng cách sử dụng hàm groupby.agg ()

Nhiều tập hợp có thể được áp dụng với phương thức 'groupby ()' bằng cách sử dụng hàm pandas agg (). Một danh sách có thể gọi có thể được chuyển cho phương thức. Hãy xem cách chúng tôi có thể tổng hợp dữ liệu của mình bằng các phương pháp tích hợp sẵn của thư viện numpy. Không giống như ví dụ trước, chúng ta sẽ áp dụng nhiều hàm cho một cột duy nhất của khung dữ liệu. Hàm pd.DataFrame () sẽ được sử dụng để tạo khung dữ liệu cho việc này với ít nhất một cột chứa các giá trị số.


Khung dữ liệu bắt buộc đã được tạo với một cột số, tức là 'đánh dấu' với các giá trị 41, 40, 35, 39, 49, 31, 34 và 42. Có thêm 3 cột 'sinh viên', 'đối tượng' và 'bằng cấp' trong khung dữ liệu của chúng tôi có thể được chia thành các nhóm bằng cách sử dụng hàm groupby (). Các giá trị trong cột 'sinh viên' và 'đối tượng' là ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') và ('C ++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C ++', 'AI'). Trong khi mức độ cột chứa các giá trị dữ liệu dưới dạng chuỗi, tức là, (‘Ms’, ‘Bs’, ‘Bs’, ‘Ms’, ‘Ms’, ‘Ms’, ‘Bs’, ‘Bs’). Giả sử chúng ta phải nhóm dữ liệu của cột ‘chủ thể’ và xác định cả giá trị trung bình và tổng của cột ‘nhãn hiệu’ cho mỗi dữ liệu được nhóm.

Chúng tôi đã chỉ định tên của cột ‘chủ thể’ dưới dạng một chuỗi bên trong hàm groupby () để chuyển đổi dữ liệu thành các nhóm danh mục. Đối với cột nhãn hiệu, chúng tôi đã sử dụng phương thức agg () và bên trong hàm agg (), chúng tôi đã chỉ định các hàm numpy np.sum và np.mean để tìm tổng và trung bình các điểm của mỗi nhóm dữ liệu trong các chủ đề cột. Tổng và giá trị trung bình cho giá trị nhóm ‘AI’ lần lượt là 91 và 45,5. Tổng các dấu cho giá trị ‘C ++’ là 75 và giá trị trung bình là 37,5. Đối với nhóm JAVA, tổng các dấu là 71 và giá trị trung bình là 35,5, trong khi tổng và giá trị trung bình cho Python lần lượt là 74 và 37.

Ví dụ # 03: Áp dụng nhiều hàm trên nhiều cột của khung dữ liệu bằng cách sử dụng hàm groupby.agg ()

Thay vì áp dụng các hàm khác nhau cho một cột của khung dữ liệu, chúng tôi có thể áp dụng nhiều hàm cho các cột số khác nhau. Chúng tôi có thể sử dụng từ điển trong hàm agg () làm đầu vào để áp dụng phương pháp tổng hợp cụ thể cho các cột của khung dữ liệu khác nhau. Hãy nhập gấu trúc và thư viện số trước khi tạo khung dữ liệu với nhiều cột số.

Có bốn cột trong khung dữ liệu mới được tạo với các tên “cầu thủ”, “điểm số thấp nhất”, “điểm số cao nhất” và “vị trí”. Trong cột 'player', chúng tôi đã lưu trữ tên của một số người chơi dưới dạng giá trị dữ liệu chuỗi ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin '), trong cột' điểm_cao nhất 'có điểm số thấp nhất của các cầu thủ trong một số trận đấu (12, 34, 2, 21, 9, 1, 0, 34), trong khi ở cột 'điểm số cao nhất', chúng tôi có điểm số cao nhất của các cầu thủ (12, 34, 2, 21, 9, 1, 0, 34) và trong cột 'vị trí' có tên các địa điểm nơi các cầu thủ đã chơi các trận đấu của họ ('Pháp', 'Anh', 'Dubai', ' Dubai ',' Anh ',' Pháp ',' Dubai ',' Pháp ').

Giả sử sau khi nhóm dữ liệu vào cột 'người chơi', chúng ta phải tìm giá trị trung bình cho các giá trị cột 'điểm ít nhất' và tổng cho các giá trị dữ liệu 'hightest_score' cho mỗi nhóm.

Bên trong hàm agg (), chúng tôi đã truyền một từ điển python {‘Maximum_score’: ‘sum’, ‘less_score’: ‘mean’} để tìm tổng và giá trị trung bình cho một cột được chỉ định so với mỗi nhóm. Có thể thấy rằng giá trị được nhóm Alex có tổng của giá trị ‘cao nhất_score’ là 132 và giá trị trung bình của giá trị ‘điểm_cấp nhất’ là 17,5. Đối với ‘Fin’, tổng các giá trị là 199 và giá trị trung bình là 18.3333333 trong các cột tương ứng là ‘điểm_số cao nhất’ và ‘điểm số thấp nhất’. Giá trị nhóm Leo có tổng giá trị là 180 ở ‘điểm_cao nhất’ và giá trị trung bình là 7.666667 trong ‘điểm số thấp nhất’.

Sự kết luận

Trong hướng dẫn này, chúng ta đã thảo luận về các hàm groupby () và tổng hợp trong gấu trúc. Chúng ta cũng đã thảo luận về cách sử dụng hàm groupby.agg (). Chúng tôi đã triển khai ba ví dụ trong bài viết này để hướng dẫn bạn cách sử dụng một hàm tổng hợp duy nhất trên một cột khung dữ liệu bằng cách nhóm dữ liệu của một cột và nhiều cột, cách áp dụng nhiều hàm tổng hợp trên một cột duy nhất của khung dữ liệu và cách áp dụng nhiều các hàm tổng hợp trên nhiều cột của khung dữ liệu bằng cách sử dụng hàm groupby.agg ().