Nhiều phân tích dữ liệu thống kê cố gắng tìm giá trị có tần suất tối đa trong một danh sách giá trị cho trước. Python cung cấp nhiều cách tiếp cận để tìm giá trị như vậy từ danh sách cho trước. Dưới đây là các cách.
Sử dụng Counter
Hàm Counter từ module collections có tùy chọn trực tiếp tìm phần tử phổ biến nhất trong danh sách cho trước. Ta có hàm most_common, truyền tham số 1 cho chỉ một phần tử tần suất cao nhất, truyền 2 nếu cần hai phần tử tần suất cao nhất.
Ví dụ
from collections import Counter # Danh sách cho trước listA = ['Mon', 'Tue','Mon', 9, 3, 3] print("Danh sách cho trước : ",listA) # Thêm phần tử khác cho mỗi phần tử Newlist1 = Counter(listA).most_common(1) Newlist2 = Counter(listA).most_common(2) # Kết quả print("Danh sách mới sau khi nhân đôi: ",Newlist1) print("Danh sách mới sau khi nhân đôi: ",Newlist2)Kết quả
Chạy mã trên cho kết quả sau −
Danh sách cho trước : ['Mon', 'Tue', 'Mon', 9, 3, 3] Danh sách mới sau khi nhân đôi: [('Mon', 2)] Danh sách mới sau khi nhân đôi: [('Mon', 2), (3, 2)]Sử dụng mode
Mode là hàm thống kê có sẵn trong module statistics của Python. Nó sẽ xuất ra phần tử có tần suất cao nhất. Nếu có nhiều phần tử như vậy, phần tử gặp đầu tiên với tần suất cao nhất sẽ là kết quả.
Ví dụ
from statistics import mode # Danh sách cho trước listA = ['Mon', 'Tue','Mon', 9, 3, 3] listB = [3,3,'Mon', 'Tue','Mon', 9] print("Danh sách cho trước A : ",listA) print("Danh sách cho trước B : ",listB) # Thêm phần tử khác cho mỗi phần tử Newlist1 = mode(listA) Newlist2 = mode(listB) # Kết quả print("Danh sách A mới sau khi nhân đôi: ",Newlist1) print("Danh sách B mới sau khi nhân đôi: ",Newlist2)Kết quả
Chạy mã trên cho kết quả sau −
Danh sách cho trước A : ['Mon', 'Tue', 'Mon', 9, 3, 3] Danh sách cho trước B : [3, 3, 'Mon', 'Tue', 'Mon', 9] Danh sách A mới sau khi nhân đôi: Mon Danh sách B mới sau khi nhân đôi: 3