Hướng dẫn equal frequency binning python pandas - gấu trúc python binning tần số bằng nhau
df['ext price'].describe()2 có chức năng gọi là df['ext price'].describe()3 sẽ làm những gì bạn muốn. Chỉ cần vượt qua cột df['ext price'].describe()4: Show
Bạn có thể sử dụng df['ext price'].describe()5 để nhận số lượng: Giới thiệuKhi 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 df['ext price'].describe()6 và df['ext price'].describe()7. 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, df['ext price'].describe()6 và df['ext price'].describe()7 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. BinningMộ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') 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 df['ext price'].describe()7 và df['ext price'].describe()6 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. QcutTài liệu gấu trúc mô tả df['ext price'].describe()7 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à df['ext price'].describe()7 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 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: float644, bạn đã thấy một ví dụ về các khái niệm cơ bản được biểu thị bằng df['ext price'].describe()7: 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 df['ext price'].describe()7. Việc sử dụng đơn giản nhất df['ext price'].describe()7 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. pd.qcut(df['ext price'], q=4) 0 (55733.049000000006, 89137.708] 1 (89137.708, 100271.535] 2 (55733.049000000006, 89137.708] .... 17 (110132.552, 184793.7] 18 (100271.535, 110132.552] 19 (100271.535, 110132.552] Name: ext price, dtype: category Categories (4, interval[float64]): [(55733.049000000006, 89137.708] < (89137.708, 100271.535] < (100271.535, 110132.552] < (110132.552, 184793.7]] 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 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: float648 các thùng phù hợp với phần trăm từ hàm 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: float644. 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: df['quantile_ex_1'] = pd.qcut(df['ext price'], q=4) df['quantile_ex_2'] = pd.qcut(df['ext price'], q=10, precision=0) df.head()
Purdy-Kunde (76471.0, 87168.0] df['quantile_ex_1'].value_counts() (110132.552, 184793.7] 5 (100271.535, 110132.552] 5 (89137.708, 100271.535] 5 (55733.049000000006, 89137.708] 5 Name: quantile_ex_1, dtype: int64 Kulas inc 0 1(110132.552, 184793.7] (124778.0, 184794.0] 2
(76471.0, 87168.0] Kulas inc 3 4(110132.552, 184793.7] (124778.0, 184794.0]
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 pd.qcut(df['ext price'], q=4)3: 5
(76471.0, 87168.0] 6
Kulas inc (110132.552, 184793.7] 7
Có một lưu ý nhỏ về chức năng này. Vượt qua 0 hoặc 1, chỉ có nghĩa là 0% sẽ giống như tối thiểu và 100% sẽ giống như tối đa. Tôi cũng học được rằng phần trăm thứ 50 sẽ luôn được bao gồm, bất kể các giá trị & nbsp; được thông qua. Trước khi chúng ta chuyển sang mô tả df['ext price'].describe()6, có thêm một cách tiềm năng nào mà chúng ta có thể dán nhãn thùng của mình. Thay vì các phạm vi bin hoặc nhãn tùy chỉnh, chúng ta có thể trả lại số nguyên bằng cách vượt qua df['quantile_ex_1'] = pd.qcut(df['ext price'], q=4) df['quantile_ex_2'] = pd.qcut(df['ext price'], q=10, precision=0) df.head()2 8
Purdy-Kunde (76471.0, 87168.0]Kulas inc (110132.552, 184793.7] (124778.0, 184794.0] Kim cương Stokes LLC (90686.0, 95908.0] 9Màu bạc 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')0 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')1 Cá nhân, tôi nghĩ rằng sử dụng df['quantile_ex_1'] = pd.qcut(df['ext price'], q=4) df['quantile_ex_2'] = pd.qcut(df['ext price'], q=10, precision=0) df.head()3 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; 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')2 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 cắt Bây giờ chúng ta đã thảo luận về cách sử dụng df['ext price'].describe()7, chúng ta có thể chỉ ra cách df['ext price'].describe()6 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 df['ext price'].describe()6. Sự khác biệt chính là df['ext price'].describe()7 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, df['ext price'].describe()6 đượ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 df['ext price'].describe()6. Chúng ta cũng có thể sử dụng df['ext price'].describe()6 để 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 bin & 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: Đố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: 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')4
(95908.0, 100272.0] Đầu tiên, chúng ta có thể sử dụng df['quantile_ex_1'].value_counts()6 để tạo khoảng cách đều nhau & nbsp; phạm vi: phạm vi: 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')5 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')6 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. Tùy chọn khác là sử dụng df['quantile_ex_1'].value_counts()7 cung cấp chức năng tương tự. Tôi thấy bài viết này là một hướng dẫn hữu ích trong việc hiểu cả hai chức năng. Tôi khuyên bạn nên thử cả hai cách tiếp cận và xem cái nào hoạt động tốt nhất cho nhu cầu của bạn. 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 df['quantile_ex_1'].value_counts()8. 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ó. df['quantile_ex_1'].value_counts()8 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ụ: 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')7 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')8 Có một nhược điểm để sử dụng df['quantile_ex_1'].value_counts()8. Bạn không thể xác định nhãn Custom & nbsp; 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')9
Purdy-Kunde (70000, 80000] Kulas inc kim cương (130000, 140000] Stokes LLC df['ext price'].describe()0 df['ext price'].describe()1 Như được hiển thị ở trên, tham số (110132.552, 184793.7] 5 (100271.535, 110132.552] 5 (89137.708, 100271.535] 5 (55733.049000000006, 89137.708] 5 Name: quantile_ex_1, dtype: int641 bị bỏ qua khi sử dụng df['quantile_ex_1'].value_counts()8. 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 (110132.552, 184793.7] 5 (100271.535, 110132.552] 5 (89137.708, 100271.535] 5 (55733.049000000006, 89137.708] 5 Name: quantile_ex_1, dtype: int64 3 nếu tôi có một số lượng lớn & nbsp;Một trong những khác biệt giữa df['ext price'].describe()6 và df['ext price'].describe()7 là bạn cũng có thể sử dụng tham số (110132.552, 184793.7] 5 (100271.535, 110132.552] 5 (89137.708, 100271.535] 5 (55733.049000000006, 89137.708] 5 Name: quantile_ex_1, dtype: int646 để xác định liệu 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, việc vượt qua (110132.552, 184793.7] 5 (100271.535, 110132.552] 5 (89137.708, 100271.535] 5 (55733.049000000006, 89137.708] 5 Name: quantile_ex_1, dtype: int647 sẽ thay đổi các thùng để loại trừ các mục phù hợp nhất. Bởi vì df['ext price'].describe()6 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 df['ext price'].describe() 6 tương tự như df['ext price'].describe() 7. Chúng ta có thể trả về các thùng bằng cách sử dụng 0 (55733.049000000006, 89137.708] 1 (89137.708, 100271.535] 2 (55733.049000000006, 89137.708] .... 17 (110132.552, 184793.7] 18 (100271.535, 110132.552] 19 (100271.535, 110132.552] Name: ext price, dtype: category Categories (4, interval[float64]): [(55733.049000000006, 89137.708] < (89137.708, 100271.535] < (100271.535, 110132.552] < (110132.552, 184793.7]] 5 hoặc điều chỉnh độ chính xác bằng đối số pd.qcut(df['ext price'], q=4) 2.
Bằng cách Defeault pd.qcut(df['ext price'], q=4) 3 sẽ sắp xếp với giá trị cao nhất trước tiên. Bằng cách vượt qua In []: qc.value_counts().sort_index() Out[]: (44.0, 63.0] 2 (63.0, 79.0] 2 (79.0, 89.0] 2 Name: data, dtype: int64 07, 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ính toán Binning tần số bằng nhau?Tần số bằng nhau: thùng có tần số bằng nhau. Binning có chiều rộng bằng nhau: Các thùng có chiều rộng bằng nhau với một phạm vi của mỗi thùng được xác định là [tối thiểu + W], [tối thiểu + 2W]. [tối thiểu + nw] trong đó w = (max - min) / (không có thùng).[min + nw] where w = (max – min) / (no of bins).
Làm thế nào để bạn đánh bại một gấu trúc trong Python?Trong Python Pandas Binning theo khoảng cách đạt được bằng hàm cắt ().Chúng tôi nhóm các giá trị liên quan đến cupcake cột thành ba nhóm: nhỏ, trung bình và lớn.Để làm điều đó, chúng ta cần tính toán các khoảng trong mỗi nhóm rơi.by means of the cut() function. We group values related to the column Cupcake into three groups: small, medium and big. In order to do it, we need to calculate the intervals within each group falls.
Qcut trong gấu trúc là gì?Chức năng rời rạc dựa trên lượng tử.Biến phân tách biến thành các thùng có kích thước bằng nhau dựa trên thứ hạng hoặc dựa trên các lượng tử mẫu.Ví dụ: 1000 giá trị cho 10 lượng tử sẽ tạo ra một đối tượng phân loại biểu thị tư cách thành viên lượng tử cho mỗi điểm dữ liệu.. Discretize variable into equal-sized buckets based on rank or based on sample quantiles. For example 1000 values for 10 quantiles would produce a Categorical object indicating quantile membership for each data point.
PD cắt là gì?cut () phương thức cut () được gọi 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.Nó được sử dụng để chuyển đổi một biến liên tục thành một biến phân loại.Nó cũng có thể tách biệt một mảng các phần tử thành các thùng riêng biệt.The cut() method is invoked when you need to segment and sort the data values into bins. It is used to convert a continuous variable to a categorical variable. It can also segregate an array of elements into separate bins. |