Hướng dẫn how to create buckets in python - cách tạo nhóm trong python

Tôi thường muốn xô một bộ sưu tập không có thứ tự ở Python.

In [6]: df["bucket"] = pd.cut(df.data, bins)
7 thực hiện đúng loại nhưng hầu như luôn yêu cầu xoa bóp để sắp xếp các vật phẩm trước và bắt các máy lặp trước khi chúng được tiêu thụ.

Show

Có cách nào nhanh chóng để có được hành vi này, thông qua một mô -đun Python tiêu chuẩn hoặc một thành ngữ Python đơn giản?

>>> bucket('thequickbrownfoxjumpsoverthelazydog', lambda x: x in 'aeiou')
{False: ['t', 'h', 'q', 'c', 'k', 'b', 'r', 'w', 'n', 'f', 'x', 'j', 'm', 'p',
    's', 'v', 'r', 't', 'h', 'l', 'z', 'y', 'd', 'g'],
 True: ['e', 'u', 'i', 'o', 'o', 'u', 'o', 'e', 'e', 'a', 'o']}
>>> bucket(xrange(21), lambda x: x % 10)
{0: [0, 10, 20],
 1: [1, 11],
 2: [2, 12],
 3: [3, 13],
 4: [4, 14],
 5: [5, 15],
 6: [6, 16],
 7: [7, 17],
 8: [8, 18],
 9: [9, 19]}

Bạn không thực sự cần phải thực hiện một thuật toán để đạt được điều này. Có một vài công cụ sẽ làm điều này cho bạn.

Bạn có thể nhận dữ liệu được gán cho các thùng để xử lý thêm bằng cách sử dụng gấu trúc hoặc chỉ cần đếm số lượng giá trị rơi vào mỗi thùng bằng cách sử dụng Numpy.

Gán cho xô

Bạn chỉ cần tạo một khung dữ liệu gấu trúc với dữ liệu của mình và sau đó gọi hàm

In [6]: df["bucket"] = pd.cut(df.data, bins)
8 tiện dụng, sẽ đặt mỗi giá trị vào một thùng/thùng theo định nghĩa của bạn. Từ tài liệu:
In [6]: df["bucket"] = pd.cut(df.data, bins)
8 function
, which will put each value into a bucket/bin of your definition. From the documentation:

Sử dụng

In [6]: df["bucket"] = pd.cut(df.data, bins)
8 Khi bạn cần phân đoạn và sắp xếp các giá trị dữ liệu thành các thùng.

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data

Tạo một số dữ liệu giả, đặt nó vào DataFrame và xác định các thùng:

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])

Chuyển dữ liệu, cùng với các định nghĩa bin cho hàm

In [6]: df["bucket"] = pd.cut(df.data, bins)
8 và gán lại như một cột mới trong DataFrame:

In [6]: df["bucket"] = pd.cut(df.data, bins)

Sau đó, bạn có thể kiểm tra một vài hàng đầu tiên để thấy rằng các giá trị hiện đã được dán nhãn với thùng có liên quan:

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]

Đếm số lượng bao nhiêu trong mỗi thùng

Dưới đây là một ví dụ sử dụng Numpy, để có được ý tưởng về phân phối, như một biểu đồ.histogram.

Sử dụng

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
1 và
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
2 Như được định nghĩa ở trên, chúng tôi chuyển chúng đến hàm
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
3 numpy, sẽ đếm số lượng điểm dữ liệu rơi vào mỗi thùng:

In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))

Trường hợp hàng đầu tiên cho bạn biết có bao nhiêu giá trị rơi vào mỗi thùng và hàng thứ hai xác nhận các thùng được sử dụng.


Bạn có thể đưa từ điển dữ liệu của mình vào cùng một biểu mẫu với dữ liệu giả của tôi ở trên (thành một mảng numpy) bằng cách thực hiện điều này:

data = np.array([v for v in your_dict.values()])

Thứ Hai ngày 14 tháng 10 năm 2019

Hướng dẫn how to create buckets in python - cách tạo nhóm trong python

Giới thiệu

Khi xử lý dữ liệu số liên tục, thường sẽ hữu ích khi chia dữ liệu thành nhiều thùng để phân tích thêm. Có một số thuật ngữ khác nhau để tạo ra bao gồm xô, binning rời rạc, rời rạc hoặc định lượng hóa. Pandas hỗ trợ các phương pháp này bằng cách sử dụng các hàm

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 và
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5. Bài viết này sẽ mô tả ngắn gọn lý do tại sao bạn có thể muốn chia dữ liệu của mình và cách sử dụng các hàm gấu trúc để chuyển đổi dữ liệu liên tục thành một tập hợp các thùng riêng biệt. Giống như nhiều chức năng của gấu trúc,
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 và
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5 có vẻ đơn giản nhưng có rất nhiều khả năng được đóng gói trong các chức năng đó. Ngay cả đối với người dùng có nhiều kinh nghiệm, tôi nghĩ bạn sẽ học được một vài thủ thuật sẽ hữu ích cho phân tích của riêng bạn & NBSP.

Binning

Một trong những trường hợp phổ biến nhất của Binning được thực hiện đằng sau hậu trường cho bạn khi tạo biểu đồ. Biểu đồ dưới đây của dữ liệu bán hàng của khách hàng, cho thấy cách một tập hợp các số bán hàng liên tục có thể được chia thành các thùng riêng biệt (ví dụ: $ 60.000 - 70.000 đô la) và sau đó được sử dụng để nhóm và đếm tài khoản & nbsp;

Dưới đây là mã cho thấy cách chúng tôi tóm tắt thông tin bán hàng năm 2018 cho một nhóm khách hàng. Đại diện này minh họa số lượng khách hàng có doanh số trong các phạm vi nhất định. Mã mẫu được bao gồm trong sổ ghi chép này nếu bạn muốn theo dõi & nbsp; cùng.

import pandas as pd
import numpy as np
import seaborn as sns

sns.set_style('whitegrid')

raw_df = pd.read_excel('2018_Sales_Total.xlsx')
df = raw_df.groupby(['account number', 'name'])['ext price'].sum().reset_index()

df['ext price'].plot(kind='hist')

Hướng dẫn how to create buckets in python - cách tạo nhóm trong python

Có nhiều kịch bản khác mà bạn có thể muốn xác định thùng của riêng bạn. Trong ví dụ trên, có 8 thùng với dữ liệu. Điều gì sẽ xảy ra nếu chúng ta muốn chia khách hàng của mình thành các nhóm 3, 4 hoặc 5? Đó là nơi mà Pandas

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5 và
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 phát huy tác dụng. Các chức năng này nghe có vẻ tương tự và thực hiện các chức năng Binning tương tự nhưng có sự khác biệt có thể gây nhầm lẫn với người dùng mới. Họ cũng có một số tùy chọn có thể làm cho chúng rất hữu ích cho phân tích hàng ngày. Phần còn lại của bài viết sẽ cho thấy sự khác biệt của họ là gì và cách sử dụng & nbsp; chúng.

Qcut

Tài liệu gấu trúc mô tả

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5 là một chức năng rời rạc dựa trên lượng tử. Điều này về cơ bản có nghĩa là
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5 cố gắng chia dữ liệu cơ bản thành các thùng có kích thước bằng nhau. Hàm xác định các thùng sử dụng phần trăm dựa trên phân phối dữ liệu, chứ không phải các cạnh số thực của các thùng & nbsp;

Nếu bạn đã sử dụng chức năng Pandas

In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
2, bạn đã thấy một ví dụ về các khái niệm cơ bản được biểu thị bằng
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5:

df['ext price'].describe()

count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64

Hãy ghi nhớ các giá trị cho 25%, 50% và 75% phần trăm khi chúng ta xem xét trực tiếp bằng cách sử dụng

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5.

Việc sử dụng đơn giản nhất

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5 là xác định số lượng lượng tử và để gấu trúc tìm ra cách phân chia dữ liệu. Trong ví dụ dưới đây, chúng tôi bảo Pandas tạo ra 4 nhóm có kích thước bằng nhau của & NBSP; dữ liệu.

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
0

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
1

Kết quả là một chuỗi phân loại đại diện cho các thùng bán hàng. Bởi vì chúng tôi đã yêu cầu các lượng tử với

In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
6 các thùng phù hợp với phần trăm từ hàm
In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
2.

Một trường hợp sử dụng phổ biến là lưu trữ kết quả thùng trong DataFrame gốc để phân tích trong tương lai. Ví dụ này, chúng tôi sẽ tạo 4 thùng (hay còn gọi là tứ phân) và 10 thùng (còn gọi là deciles) và lưu trữ kết quả trong bản gốc & nbsp; dataFrame:

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
2

số tài khoảnTênGiá EXTquantile_ex_1quantile_ex_2
0 141962 Herman LLCLLC 63626.03 (55733.049000000006, 89137.708](55732.0, 76471.0]
1 146832 Kiehn-Spinka99608.77 (89137.708, 100271.535](95908.0, 100272.0]
2 163416 Purdy-Kunde77898.21 (55733.049000000006, 89137.708](55732.0, 76471.0]
3 218895 Kiehn-Spinka137351.96 (89137.708, 100271.535](95908.0, 100272.0]
4 239344 Purdy-KundeLLC 91535.92 (89137.708, 100271.535](95908.0, 100272.0]

Purdy-Kunde

(76471.0, 87168.0]

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
3

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
4

Kulas inc

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
5

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
6

(110132.552, 184793.7]

(124778.0, 184794.0]

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
7

số tài khoảnTênGiá EXTquantile_ex_1quantile_ex_2quantile_ex_3
0 141962 Herman LLCLLC 63626.03 (55733.049000000006, 89137.708](55732.0, 76471.0]Kiehn-Spinka
1 146832 Kiehn-Spinka99608.77 (89137.708, 100271.535](95908.0, 100272.0]Purdy-Kunde
2 163416 Purdy-Kunde77898.21 (55733.049000000006, 89137.708](55732.0, 76471.0]Kiehn-Spinka
3 218895 Kiehn-Spinka137351.96 (89137.708, 100271.535](95908.0, 100272.0]Purdy-Kunde
4 239344 Purdy-KundeLLC 91535.92 (89137.708, 100271.535](95908.0, 100272.0]Purdy-Kunde

(76471.0, 87168.0]

Kulas inc

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
8

In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
9

(110132.552, 184793.7]

(124778.0, 184794.0]

  • Stokes LLC
  • (90686.0, 95908.0]
  • Bạn có thể thấy các thùng rất khác nhau giữa
    In [8]: np.histogram(data, bins)
    Out[8]: 
    (array([  0,   2,   1,   8,   6,  61, 417, 505]),
     array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
    
    8 và
    In [8]: np.histogram(data, bins)
    Out[8]: 
    (array([  0,   2,   1,   8,   6,  61, 417, 505]),
     array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
    
    9. Tôi cũng đã giới thiệu việc sử dụng
    data = np.array([v for v in your_dict.values()])
    
    0 để xác định số lượng số thập phân để sử dụng để tính toán bin & nbsp; độ chính xác.

Chế độ xem thú vị khác là xem các giá trị được phân phối trên các thùng bằng cách sử dụng

data = np.array([v for v in your_dict.values()])
1:

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
0

Bây giờ, cho cột thứ hai & nbsp; cột:Điều này minh họa một khái niệm quan trọng. Trong mỗi trường hợp, có một số lượng quan sát bằng nhau trong mỗi thùng. Pandas thực hiện toán học đằng sau hậu trường để tìm ra cách làm cho mỗi thùng. Ví dụ, trong
In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
8, phạm vi của thùng đầu tiên là 74.661,15 trong khi thùng thứ hai chỉ là 9,861,02 (110132 -& nbsp; 100271).
0 55733.050 Kiehn-Spinka
1 87167.958 Purdy-Kunde
2 95908.156 Purdy-Kunde
3 103606.970 (76471.0, 87168.0]
4 112290.054 Purdy-Kunde

(76471.0, 87168.0]

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
1

quantile_ex_1quantile_ex_2quantile_ex_3
Kulas inc20 20 20
(110132.552, 184793.7]4 10 5
(124778.0, 184794.0](89137.708, 100271.535](95908.0, 100272.0]Purdy-Kunde
(76471.0, 87168.0]5 2 4

Kulas inc

(110132.552, 184793.7]

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
2

số tài khoảnGiá EXT
Kulas inc20.000000 20.000000
(110132.552, 184793.7]476998.750000 101711.287500
(124778.0, 184794.0]231499.208970 27037.449673
Stokes LLC141962.000000 55733.050000
(90686.0, 95908.0]141962.000000 55733.050000
Bạn có thể thấy các thùng rất khác nhau giữa
In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
8 và
In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
9. Tôi cũng đã giới thiệu việc sử dụng
data = np.array([v for v in your_dict.values()])
0 để xác định số lượng số thập phân để sử dụng để tính toán bin & nbsp; độ chính xác.
332759.333333 91241.493333
Chế độ xem thú vị khác là xem các giá trị được phân phối trên các thùng bằng cách sử dụng
data = np.array([v for v in your_dict.values()])
1:
476006.500000 100271.535000
Bây giờ, cho cột thứ hai & nbsp; cột:662511.000000 104178.580000
Điều này minh họa một khái niệm quan trọng. Trong mỗi trường hợp, có một số lượng quan sát bằng nhau trong mỗi thùng. Pandas thực hiện toán học đằng sau hậu trường để tìm ra cách làm cho mỗi thùng. Ví dụ, trong
In [8]: np.histogram(data, bins)
Out[8]: 
(array([  0,   2,   1,   8,   6,  61, 417, 505]),
 array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
8, phạm vi của thùng đầu tiên là 74.661,15 trong khi thùng thứ hai chỉ là 9,861,02 (110132 -& nbsp; 100271).
786968.000000 184793.700000
Một trong những thách thức với phương pháp này là các nhãn BIN không dễ giải thích cho người dùng cuối. Chẳng hạn, nếu chúng tôi muốn chia khách hàng của mình thành 5 nhóm (hay còn gọi là nhóm nhạc) như cách tiếp cận thường xuyên của hãng hàng không, chúng tôi có thể dán nhãn rõ ràng các thùng để giúp họ dễ dàng hơn & NBSP;786968.000000 184793.700000

Đồng

Vàng

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
3

số tài khoảnTênGiá EXTquantile_ex_1quantile_ex_2quantile_ex_3quantile_ex_4
0 141962 Herman LLCLLC 63626.03 (55733.049000000006, 89137.708](55732.0, 76471.0]Kiehn-Spinka0
1 146832 Kiehn-Spinka99608.77 (89137.708, 100271.535](95908.0, 100272.0]Vàng2
2 163416 Purdy-Kunde77898.21 (55733.049000000006, 89137.708](76471.0, 87168.0]Đồng0
3 218895 Kulas inc137351.96 (110132.552, 184793.7](124778.0, 184794.0]Kim cương4
4 239344 Stokes LLCLLC 91535.92 (89137.708, 100271.535](90686.0, 95908.0]Màu bạc1

Cá nhân, tôi nghĩ rằng sử dụng

df['ext price'].describe()
1 là kịch bản hữu ích nhất nhưng có thể có những trường hợp phản hồi số nguyên có thể hữu ích vì vậy tôi muốn chỉ ra rõ ràng nó & nbsp;

cắt

Bây giờ chúng ta đã thảo luận về cách sử dụng

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5, chúng ta có thể chỉ ra cách
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 khác nhau. Nhiều khái niệm chúng tôi đã thảo luận ở trên áp dụng nhưng có một vài khác biệt với việc sử dụng
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4.

Sự khác biệt chính là

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5 sẽ tính toán kích thước của mỗi thùng để đảm bảo phân phối dữ liệu trong các thùng là bằng nhau. Nói cách khác, tất cả các thùng sẽ có (khoảng) cùng một số lượng quan sát nhưng phạm vi thùng sẽ & nbsp; khác nhau.

Mặt khác,

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 được sử dụng để xác định cụ thể các cạnh bin. Không có gì đảm bảo về việc phân phối các mặt hàng trong mỗi thùng. Trên thực tế, bạn có thể định nghĩa các thùng theo cách không có vật phẩm nào được bao gồm trong thùng hoặc gần như tất cả các mặt hàng đều nằm trong một & nbsp; bin.

Trong các ví dụ trong thế giới thực, các thùng có thể được xác định bởi các quy tắc kinh doanh. Đối với một chương trình Flier thường xuyên, 25.000 dặm là mức bạc và điều đó không thay đổi dựa trên sự thay đổi của dữ liệu hàng năm. Nếu chúng tôi muốn xác định các cạnh bin (25.000 - 50.000, v.v.), chúng tôi sẽ sử dụng

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4. Chúng ta cũng có thể sử dụng
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 để xác định các thùng có kích thước không đổi và để gấu trúc tìm ra cách xác định các cạnh thùng & nbsp;

Một số ví dụ nên làm cho sự khác biệt này & nbsp; rõ ràng.

Để đơn giản, tôi sẽ xóa các cột trước để giữ các ví dụ & nbsp; ngắn:

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
4

Đối với ví dụ đầu tiên, chúng ta có thể cắt dữ liệu thành 4 kích thước thùng bằng nhau. Pandas sẽ thực hiện toán học đằng sau hậu trường để xác định cách chia dữ liệu được đặt thành các nhóm 4 & nbsp này: các nhóm:

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
5

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
6

Hãy cùng nhìn vào & nbsp; phân phối:

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
7

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
8

Điều đầu tiên bạn nhận thấy là các phạm vi bin là khoảng 32.265 nhưng sự phân phối các phần tử bin không bằng nhau. Các thùng có phân phối 12, 5, 2 và 1 (các) mục trong mỗi thùng. Tóm lại, đó là sự khác biệt thiết yếu giữa

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 và
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5.

Thông tin

Nếu bạn muốn phân phối bằng nhau của các mục trong thùng của bạn, hãy sử dụng

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5. Nếu bạn muốn xác định phạm vi bin số của riêng bạn, thì hãy sử dụng
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4.

Trước khi đi xa hơn, tôi muốn đưa ra một sự bồi dưỡng nhanh về ký hiệu khoảng thời gian. Trong các ví dụ trên, đã có sự sử dụng tự do của () và [], để biểu thị cách xác định các cạnh bin. Đối với những người trong số các bạn (như tôi) có thể cần phải bồi dưỡng theo ký hiệu khoảng thời gian, tôi thấy trang web đơn giản này rất dễ & nbsp; hiểu.

Để mang về nhà vào ví dụ của chúng tôi, đây là một sơ đồ dựa trên ví dụ & nbsp; ở trên:

Hướng dẫn how to create buckets in python - cách tạo nhóm trong python

Khi sử dụng CUT, bạn có thể xác định các cạnh chính xác của các thùng của bạn để điều quan trọng là phải hiểu liệu các cạnh có bao gồm các giá trị hay không. Tùy thuộc vào tập dữ liệu và trường hợp sử dụng cụ thể, điều này có thể hoặc không phải là vấn đề lớn. Nó chắc chắn có thể là một vấn đề tinh tế mà bạn cần & nbsp; xem xét.

Để đưa nó vào quan điểm, khi bạn trình bày kết quả phân tích của mình cho người khác, bạn sẽ cần phải rõ ràng liệu một tài khoản có 70.000 trong doanh số là bạc hay vàng & nbsp; khách hàng.

Dưới đây là một ví dụ mà chúng tôi muốn xác định cụ thể các ranh giới của 4 thùng của chúng tôi bằng cách xác định tham số

count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64
3.

In [3]: data = np.random.randint(low=1, high=10001, size=1000)                 
In [4]: df = pd.DataFrame(data=data, columns=["data"])
In [5]: bins = np.array([1,5,25,50,150,250,1000,5000,10000])
9

số tài khoảnTênGiá EXTcut_ex1
0 141962 Herman LLCLLC 63626.03 màu bạc
1 146832 Kiehn-Spinka99608.77 vàng
2 163416 Purdy-Kunde77898.21 vàng
3 218895 Kulas inc137351.96 (110132.552, 184793.7]
4 239344 Stokes LLCLLC 91535.92 vàng

kim cương

Một trong những thách thức với việc xác định phạm vi bin với vết cắt là nó có thể cồng kềnh để tạo ra danh sách tất cả các phạm vi bin. Có một vài phím tắt chúng tôi có thể sử dụng để tạo ra các phạm vi mà chúng tôi & nbsp; cần.

In [6]: df["bucket"] = pd.cut(df.data, bins)
0

In [6]: df["bucket"] = pd.cut(df.data, bins)
1

Đầu tiên, chúng ta có thể sử dụng

count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64
4 để tạo khoảng cách đều nhau & nbsp; phạm vi: phạm vi:

Không gian Linspace Numpy là một hàm đơn giản cung cấp một mảng các số cách đều nhau trong phạm vi do người dùng xác định. Trong ví dụ này, chúng tôi muốn 9 điểm cắt đều cách đều nhau từ 0 đến 200.000. Độc giả Astute có thể nhận thấy rằng chúng tôi có 9 số nhưng chỉ có 8 loại. Nếu bạn vạch ra các danh mục thực tế, nó sẽ có ý nghĩa tại sao chúng tôi kết thúc với 8 loại từ 0 đến 200.000. Trong tất cả các trường hợp, có một loại ít hơn số lượng Cut & nbsp; điểm.

Có một tùy chọn bổ sung để xác định thùng của bạn và đó là sử dụng gấu trúc

count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64
6. Tôi đã phải xem tài liệu Pandas để tìm ra tài liệu này. Đó là một chút bí truyền nhưng tôi nghĩ rằng nó là tốt để bao gồm & nbsp; nó.

count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64
6 cung cấp rất nhiều sự linh hoạt. Ví dụ, nó có thể được sử dụng trên các phạm vi ngày cũng như các giá trị số. Đây là một số & nbsp; ví dụ:

In [6]: df["bucket"] = pd.cut(df.data, bins)
2

In [6]: df["bucket"] = pd.cut(df.data, bins)
3

Có một nhược điểm để sử dụng

count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64
6. Bạn không thể xác định nhãn Custom & nbsp;

In [6]: df["bucket"] = pd.cut(df.data, bins)
4

số tài khoảnTênGiá EXTcut_ex1cut_ex2
0 141962 Herman LLCLLC 63626.03 vàng(60000, 70000]
1 146832 Kiehn-Spinka99608.77 màu bạc(90000, 100000]
2 163416 Purdy-Kunde77898.21 màu bạc(90000, 100000]
3 218895 Purdy-Kunde137351.96 (70000, 80000]Kulas inc
4 239344 kim cươngLLC 91535.92 màu bạc(90000, 100000]

Purdy-Kunde

(70000, 80000]

Kulas inc

kim cương

(130000, 140000]

Stokes LLC

In [6]: df["bucket"] = pd.cut(df.data, bins)
5

In [6]: df["bucket"] = pd.cut(df.data, bins)
6

Như được hiển thị ở trên, tham số

count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64
9 bị bỏ qua khi sử dụng
count        20.000000
mean     101711.287500
std       27037.449673
min       55733.050000
25%       89137.707500
50%      100271.535000
75%      110132.552500
max      184793.700000
Name: ext price, dtype: float64
6.

Theo kinh nghiệm của tôi, tôi sử dụng một danh sách tùy chỉnh các phạm vi bin hoặc In [1]: import pandas as pd In [2]: import numpy as np # to create dummy data 01 nếu tôi có một số lượng lớn & nbsp;

Một trong những khác biệt giữa

In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 và
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
5 là bạn cũng có thể sử dụng tham số
In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
04 để xác định xem thùng đầu tiên có nên bao gồm tất cả các giá trị thấp nhất hay không. Cuối cùng, vượt qua
In [1]: import pandas as pd
In [2]: import numpy as np    # to create dummy data
05 sẽ thay đổi các thùng để loại trừ các mục phù hợp nhất. Bởi vì
In [7]: df.head()                                                              
Out[7]: 
   data         bucket
0  8754  (5000, 10000]
1  2970   (1000, 5000]
2  6778  (5000, 10000]
3  2550   (1000, 5000]
4  5226  (5000, 10000]
4 cho phép tính đặc hiệu hơn nhiều của các thùng, các tham số này có thể hữu ích để đảm bảo các khoảng được xác định theo cách bạn & NBSP;

Phần còn lại của chức năng In [7]: df.head() Out[7]: data bucket 0 8754 (5000, 10000] 1 2970 (1000, 5000] 2 6778 (5000, 10000] 3 2550 (1000, 5000] 4 5226 (5000, 10000] 4 tương tự như In [7]: df.head() Out[7]: data bucket 0 8754 (5000, 10000] 1 2970 (1000, 5000] 2 6778 (5000, 10000] 3 2550 (1000, 5000] 4 5226 (5000, 10000] 5. Chúng ta có thể trả về các thùng bằng cách sử dụng import pandas as pd import numpy as np import seaborn as sns sns.set_style('whitegrid') raw_df = pd.read_excel('2018_Sales_Total.xlsx') df = raw_df.groupby(['account number', 'name'])['ext price'].sum().reset_index() df['ext price'].plot(kind='hist') 3 hoặc điều chỉnh độ chính xác bằng đối số data = np.array([v for v in your_dict.values()]) 0.

  • Một thủ thuật cuối cùng tôi muốn trình bày là
    data = np.array([v for v in your_dict.values()])
    
    1 bao gồm một lối tắt để tạo ra và đếm dữ liệu. Nó có phần tương tự như cách
    In [8]: np.histogram(data, bins)
    Out[8]: 
    (array([  0,   2,   1,   8,   6,  61, 417, 505]),
     array([    1,     5,    25,    50,   150,   250,  1000,  5000, 10000]))
    
    2 có thể là một lối tắt cho
    In [7]: df.head()                                                              
    Out[7]: 
       data         bucket
    0  8754  (5000, 10000]
    1  2970   (1000, 5000]
    2  6778  (5000, 10000]
    3  2550   (1000, 5000]
    4  5226  (5000, 10000]
    
    5.
  • Nếu chúng ta muốn chia một giá trị thành 4 thùng và đếm số lượng & nbsp; xảy ra:

Bằng cách Defeault data = np.array([v for v in your_dict.values()]) 1 sẽ sắp xếp với giá trị cao nhất trước tiên. Bằng cách vượt qua In [1]: import pandas as pd In [2]: import numpy as np # to create dummy data 15, các thùng sẽ được sắp xếp theo thứ tự số có thể là hữu ích & nbsp; xem.

Bản tóm tắt

Làm thế nào để bạn tạo ra một giá trị xô trong Python?

Gán cho các nhóm bạn chỉ cần tạo một khung dữ liệu gấu trúc với dữ liệu của bạn và sau đó gọi hàm cắt tiện dụng, sẽ đặt mỗi giá trị vào một thùng/thùng theo định nghĩa của bạn. Từ tài liệu: Sử dụng cắt khi bạn cần phân đoạn và sắp xếp các giá trị dữ liệu thành các thùng.create a Pandas DataFrame with your data and then call the handy cut function, which will put each value into a bucket/bin of your definition. From the documentation: Use cut when you need to segment and sort data values into bins.

Xô trong Python là gì?

Xô là một thư viện Python có thể được sử dụng để quản lý dữ liệu mà nó sẽ tổ chức để giữ dữ liệu phù hợp nhất/gần đây nhất và thiếu dữ liệu cũ hơn.Một thùng trong trường hợp này là một người giữ địa điểm cho dữ liệu.Và với xô, bạn có thể quản lý nhiều danh sách xô.Danh sách xô là một danh sách kích thước cố định của xô.a python library which can be used to manage data that it will organize to keep the most relevant/recent data and deprioritize older data. A bucket in this instance is a place holder for data. And with Buckets you can manage multiple bucket lists. A bucket list is a fixed size list of buckets.

Làm thế nào để bạn tạo ra một thùng trong Python?

Hàm Python sau đây có thể được sử dụng để tạo thùng ...
def created_bins (Lower_bound, Width, số lượng): "" "created_bins trả về một phân vùng chiều rộng (khoảng cách) bằng nhau. ....
Bins = created_bins (Lower_bound = 10, Width = 10, Số lượng = 5) BIN ..

Mã trong mã là gì?

Một thùng là một tài liệu không có kích thước xác định mà thông tin quan tâm được thêm vào mà không có cấu trúc.Nhiều gói phần mềm có tệp readme là một thùng chứa thông tin mới nhất.Trong văn hóa IBM, một tệp như vậy được gọi là một cái xô và được mở cho các bản sửa lỗi quan trọng và các gói sửa chữa.a document of no definite size to which information of interest is added with no structure. Many software packages have a README file which is a bucket containing the very latest information. In IBM culture, such a file is known as a bucket and is opened for critical fixes and fix packages.