Giá trị nhóm Python

Data binning, còn được gọi là bucketing hoặc discretization, là một kỹ thuật được sử dụng trong xử lý và thống kê dữ liệu. Binning có thể được sử dụng chẳng hạn, nếu có nhiều điểm dữ liệu có thể hơn các điểm dữ liệu được quan sát. Một ví dụ là phân loại chiều cao cơ thể của mọi người thành các khoảng hoặc danh mục. Giả sử, chúng ta lấy chiều cao của 30 người. Các giá trị độ dài có thể nằm trong khoảng - đoán đại khái - 1. 30 mét đến 2. 50 mét. Về mặt lý thuyết, có thể có 120 giá trị cm khác nhau, nhưng chúng tôi có thể có tối đa 30 giá trị khác nhau từ nhóm mẫu của mình. Một cách để nhóm chúng có thể là đặt các giá trị đo được vào các ngăn từ 1. 30 - 1. 50 mét, 1. 50 - 1. 70 mét, 1. 70 - 1. 90 mét và như vậy. Điều này có nghĩa là các giá trị dữ liệu ban đầu sẽ được gán cho một thùng phù hợp với kích thước của chúng. Các giá trị ban đầu sẽ được thay thế bằng các giá trị đại diện cho các khoảng tương ứng. Binning là một hình thức lượng tử hóa

Các thùng không nhất thiết phải là số, chúng có thể là các giá trị phân loại thuộc bất kỳ loại nào, chẳng hạn như "chó", "mèo", "hamster", v.v.

Binning cũng được sử dụng trong xử lý ảnh, binning. Nó có thể được sử dụng để giảm lượng dữ liệu, bằng cách kết hợp các pixel lân cận thành các pixel đơn lẻ. kxk binning giảm diện tích k x k pixel thành pixel đơn

Pandas cung cấp các cách dễ dàng để tạo thùng và dữ liệu thùng. Trước khi mô tả các chức năng này của Pandas, chúng tôi sẽ giới thiệu các hàm cơ bản của Python, hoạt động trên các danh sách và bộ dữ liệu Python

Đào tạo Python trực tiếp

Giá trị nhóm Python

Thưởng thức trang này?

Thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Tạo thùng trong Python

Hàm Python sau có thể được sử dụng để tạo thùng

def create_bins(lower_bound, width, quantity):
    """ create_bins returns an equal-width (distance) partitioning. 
        It returns an ascending list of tuples, representing the intervals.
        A tuple bins[i], i.e. (bins[i][0], bins[i][1])  with i > 0 
        and i < quantity, satisfies the following conditions:
            (1) bins[i][0] + width == bins[i][1]
            (2) bins[i-1][0] + width == bins[i][0] and
                bins[i-1][1] + width == bins[i][1]
    """
    

    bins = []
    for low in range(lower_bound, 
                     lower_bound + quantity*width + 1, width):
        bins.append((low, low+width))
    return bins

Bây giờ chúng ta sẽ tạo năm thùng (số lượng=5) với chiều rộng là 10 (chiều rộng=10) bắt đầu từ 10 (lower_bound=10)

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins

ĐẦU RA

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]

Hàm tiếp theo 'find_bin' được gọi với một danh sách hoặc bộ bin 'bins', phải là hai bộ hoặc danh sách gồm hai phần tử. Hàm tìm chỉ mục của khoảng, nơi chứa giá trị 'giá trị'

def find_bin(value, bins):
    """ bins is a list of tuples, like [(0,20), (20, 40), (40, 60)],
        binning returns the smallest index i of bins so that
        bin[i][0] <= value < bin[i][1]
    """
    
    for i in range(0, len(bins)):
        if bins[i][0] <= value < bins[i][1]:
            return i
    return -1

from collections import Counter

bins = create_bins(lower_bound=50,
                   width=4,
                   quantity=10)

print(bins)

weights_of_persons = [73.4, 69.3, 64.9, 75.6, 74.9, 80.3, 
                      78.6, 84.1, 88.9, 90.3, 83.4, 69.3, 
                      52.4, 58.3, 67.4, 74.0, 89.3, 63.4]

binned_weights = []

for value in weights_of_persons:
    bin_index = find_bin(value, bins)
    print(value, bin_index, bins[bin_index])
    binned_weights.append(bin_index)
    
frequencies = Counter(binned_weights)
print(frequencies)

ĐẦU RA

[(50, 54), (54, 58), (58, 62), (62, 66), (66, 70), (70, 74), (74, 78), (78, 82), (82, 86), (86, 90), (90, 94)]
73.4 5 (70, 74)
69.3 4 (66, 70)
64.9 3 (62, 66)
75.6 6 (74, 78)
74.9 6 (74, 78)
80.3 7 (78, 82)
78.6 7 (78, 82)
84.1 8 (82, 86)
88.9 9 (86, 90)
90.3 10 (90, 94)
83.4 8 (82, 86)
69.3 4 (66, 70)
52.4 0 (50, 54)
58.3 2 (58, 62)
67.4 4 (66, 70)
74.0 6 (74, 78)
89.3 9 (86, 90)
63.4 3 (62, 66)
Counter({4: 3, 6: 3, 3: 2, 7: 2, 8: 2, 9: 2, 5: 1, 10: 1, 0: 1, 2: 1})

Binning với gấu trúc

Mô-đun Pandas của Python cung cấp các chức năng mạnh mẽ để tạo dữ liệu. Chúng tôi sẽ chứng minh điều này bằng cách sử dụng dữ liệu trước đây của chúng tôi

Thùng được sử dụng bởi Pandas

Chúng tôi đã sử dụng một danh sách các bộ làm thùng trong ví dụ trước của chúng tôi. Chúng ta phải biến danh sách này thành cấu trúc dữ liệu có thể sử dụng được cho chức năng gấu trúc "cắt". Cấu trúc dữ liệu này là một Interval Index. Chúng ta có thể làm điều này với pd. Chỉ số khoảng thời gian. from_tuples

import pandas as pd

bins2 = pd.IntervalIndex.from_tuples(bins)

"cut" là tên của hàm Pandas, cần thiết để chuyển các giá trị vào các thùng. "cut" có nhiều tham số nhưng những tham số quan trọng nhất là "x" cho các giá trị thực và "bins", xác định Interval Index. "x" có thể là bất kỳ cấu trúc dạng mảng 1 chiều nào, e. g. bộ dữ liệu, danh sách, mảng thứ, v.v.

categorical_object = pd.cut(weights_of_persons, bins2)
print(categorical_object)

ĐẦU RA

________số 8

Kết quả của chức năng Pandas "cắt" là cái gọi là "Đối tượng phân loại". Mỗi thùng là một danh mục. Các danh mục được mô tả trong một ký hiệu toán học. "(70, 74]" có nghĩa là các thùng này chứa các giá trị từ 70 đến 74 trong khi 70 không được bao gồm nhưng 74 được bao gồm. Về mặt toán học, đây là khoảng nửa mở, i. e. nn khoảng thời gian bao gồm một điểm cuối nhưng không bao gồm điểm cuối khác. Đôi khi nó còn được gọi là khoảng nửa đóng

Chúng ta cũng đã định nghĩa các ngăn trong chương trước là các khoảng nửa mở, nhưng ngược lại, tôi. e. bên trái đóng và bên phải mở. Khi chúng tôi sử dụng pd. Chỉ số khoảng thời gian. from_tuples, chúng tôi có thể đã xác định "độ mở" của các ngăn này bằng cách đặt tham số "đã đóng" thành một trong các giá trị

  • 'bên trái'. đóng bên trái và mở bên phải
  • 'đúng'. (Mặc định) mở bên trái và đóng bên phải
  • 'cả hai'. đóng cửa ở cả hai bên
  • 'không'. mở trên cả hai mặt

Để có hành vi tương tự như trong chương trước của chúng tôi, chúng tôi sẽ đặt tham số đóng thành "trái"

bins2 = pd.IntervalIndex.from_tuples(bins, closed="left")
categorical_object = pd.cut(weights_of_persons, bins2)
print(categorical_object)

ĐẦU RA

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
0

Các cách khác để xác định thùng

Chúng tôi đã sử dụng Interval Index làm thùng để tạo dữ liệu trọng lượng. Chức năng "cắt" cũng có thể đối phó với hai loại biểu diễn bin khác

  • một số nguyên.
    xác định số ngăn có chiều rộng bằng nhau trong phạm vi giá trị "x". ______11
  • chuỗi các đại lượng vô hướng.
    Xác định các cạnh thùng cho phép không đồng nhất
    bins = create_bins(lower_bound=10,
                       width=10,
                       quantity=5)
    
    bins
    
    2

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
3

ĐẦU RA

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
4

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
5

ĐẦU RA

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
6

Số lượng thùng và số lượng giá trị

Câu hỏi tiếp theo và thú vị nhất bây giờ là làm thế nào chúng ta có thể thấy số lượng thùng thực tế. Điều này có thể được thực hiện với chức năng "value_counts"

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
7

ĐẦU RA

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
8

"categorical_object. mã" cung cấp cho bạn nhãn của các giá trị đầu vào vào các danh mục tạo thùng

bins = create_bins(lower_bound=10,
                   width=10,
                   quantity=5)

bins
9

ĐẦU RA

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]
0

danh mục là Interval Index của các danh mục của chỉ số nhãn

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]
1

ĐẦU RA

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]
2

Tương ứng từ dữ liệu trọng số đến thùng

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]
3

ĐẦU RA

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]
4

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]
5

ĐẦU RA

[(10, 20), (20, 30), (30, 40), (40, 50), (50, 60), (60, 70)]
2

đặt tên thùng

Hãy tưởng tượng, chúng ta có một trường Đại học, trao ba cấp độ danh dự tiếng Latinh tùy thuộc vào điểm trung bình (GPA)

Xô trong Python là gì?

Sắp xếp nhóm trong Python được định nghĩa là một loại thuật toán so sánh được sử dụng để sắp xếp dữ liệu hoặc phần tử được phân phối đồng đều với một phạm vi nhất định trong đó các phần tử đã cho của mảng hoặc danh sách được phân bổ trong các nhóm hoặc thùng sau đó các phần tử này trong các nhóm

Làm cách nào để chuyển dữ liệu trong gấu trúc?

Trong bài viết này, chúng ta sẽ thảo luận về 4 phương pháp để tạo các giá trị số bằng thư viện python Pandas. .
giữa & loc. gấu trúc. .
cắt tỉa. Giá trị bin thành các khoảng rời rạc. .
qcut. Chức năng rời rạc dựa trên lượng tử. .
số lượng giá trị. Trong khi gấu trúc

Làm cách nào để chuyển dữ liệu số bằng gấu trúc?

Trong gấu trúc Python tạo thùng theo khoảng cách đạt được bằng hàm cut(). Chúng tôi nhóm các giá trị liên quan đến cột Cupcake thành ba nhóm. nhỏ, vừa và lớn. Để làm được ta cần tính các quãng trong từng nhóm ngã

Xô trong dữ liệu là gì?

Trong các trường hợp như ví dụ về vĩ độ, bạn cần chia vĩ độ thành các nhóm để tìm hiểu điều gì đó khác biệt về giá trị nhà ở cho từng nhóm. Việc chuyển đổi các đối tượng số thành đối tượng phân loại, sử dụng một tập hợp các ngưỡng , được gọi là tạo nhóm (hoặc tạo nhóm).