Làm thế nào để bạn tìm thấy sự phân phối dữ liệu phân loại trong python?

Mã sau cho biết cách tạo biểu đồ thanh để trực quan hóa tần suất của các nhóm trong một Khung dữ liệu gấu trúc nhất định.
import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'],
                   'points': [18, 22, 29, 25, 14, 11, 10, 15]})

#create bar plot to visualize frequency of each team
df['team'].value_counts().plot(kind='bar', xlabel='Team', ylabel='Count', rot=0)

Làm thế nào để bạn tìm thấy sự phân phối dữ liệu phân loại trong python?

Trục x hiển thị từng tên nhóm và trục y hiển thị tần suất của từng nhóm trong DataFrame

Ghi chú. Đối số rot=0 yêu cầu gấu trúc xoay các nhãn trục x song song với trục x

ví dụ 2. Boxplots theo nhóm

Các ô vuông được nhóm là một cách hữu ích để trực quan hóa một biến số, được nhóm theo một biến phân loại

Ví dụ: đoạn mã sau cho biết cách tạo một biểu đồ khảm hiển thị tần suất của các biến phân loại 'kết quả' và 'nhóm' trong một biểu đồ

Cho đến nay, chúng tôi đã xem xét sự phân phối dữ liệu với cả biểu đồ phân phối và biểu đồ hộp - chúng tôi không xem xét bản thân các con số mà là tần suất của các số (tần suất xuất hiện của một giá trị nhất định) nhưng chúng tôi đã xem xét các biến liên tục trong cả hai

Nếu chúng ta xem xét bộ dữ liệu kim cương (có sẵn với gói 'seaborn'), thì cũng có một số thuộc tính phân loại, bên dưới là ảnh chụp nhanh của bộ dữ liệu này

Làm thế nào để bạn tìm thấy sự phân phối dữ liệu phân loại trong python?

Nếu bảng chỉ bao gồm một cột danh mục và một cột tần suất, như trong

icecream.barh('Flavor', 'Number of Cartons')
1, thì lệnh gọi phương thức thậm chí còn đơn giản hơn. Bạn chỉ có thể chỉ định cột chứa các danh mục và
icecream.barh('Flavor', 'Number of Cartons')
2 sẽ sử dụng các giá trị trong cột khác làm tần suất

icecream.barh('Flavor')

Làm thế nào để bạn tìm thấy sự phân phối dữ liệu phân loại trong python?

7. 1. 2. Các khía cạnh thiết kế của biểu đồ thanh

Ngoài sự khác biệt hoàn toàn về hình ảnh, còn có một sự khác biệt cơ bản quan trọng giữa biểu đồ thanh và hai biểu đồ mà chúng ta đã thấy trong các phần trước. Đó là biểu đồ phân tán và biểu đồ đường, cả hai đều hiển thị hai biến định lượng – các biến trên cả hai trục đều là định lượng. Ngược lại, biểu đồ thanh có các danh mục trên một trục và số lượng trên trục kia

Điều này có hậu quả đối với biểu đồ. Đầu tiên, chiều rộng của mỗi thanh và khoảng cách giữa các thanh liên tiếp hoàn toàn phụ thuộc vào người tạo biểu đồ hoặc chương trình được sử dụng để tạo biểu đồ đó. Python đã đưa ra những lựa chọn đó cho chúng tôi. Nếu bạn vẽ biểu đồ thanh bằng tay, bạn có thể đưa ra các lựa chọn hoàn toàn khác nhau mà vẫn có biểu đồ thanh hoàn toàn chính xác, miễn là bạn đã vẽ tất cả các thanh có cùng chiều rộng và giữ nguyên khoảng cách

Quan trọng nhất, các thanh có thể được vẽ theo thứ tự bất kỳ. Các danh mục “sô cô la”, “vani” và “dâu tây” không có thứ tự xếp hạng chung, không giống như các số 5, 7 và 10 chẳng hạn

Điều này có nghĩa là chúng ta có thể vẽ biểu đồ thanh dễ diễn giải hơn bằng cách sắp xếp lại các thanh theo thứ tự giảm dần. Để làm điều này, trước tiên chúng tôi sắp xếp lại các hàng của

icecream.barh('Flavor', 'Number of Cartons')
1 theo thứ tự giảm dần của
icecream.barh('Flavor', 'Number of Cartons')
6, sau đó vẽ biểu đồ thanh

icecream.sort('Number of Cartons', descending=True).barh('Flavor')

Làm thế nào để bạn tìm thấy sự phân phối dữ liệu phân loại trong python?

Biểu đồ thanh này chứa chính xác thông tin giống như những cái trước, nhưng nó dễ đọc hơn một chút. Mặc dù đây không phải là lợi ích lớn khi đọc biểu đồ chỉ có ba thanh, nhưng nó có thể khá quan trọng khi số lượng danh mục lớn

7. 1. 3. Nhóm dữ liệu phân loại

Để xây dựng bảng

icecream.barh('Flavor', 'Number of Cartons')
1, ai đó phải nhìn vào tất cả 30 hộp kem và đếm số lượng của mỗi hương vị. Nhưng nếu bảng của chúng tôi chưa bao gồm tần số, chúng tôi phải tính toán tần suất trước khi có thể vẽ biểu đồ thanh. Đây là một ví dụ nơi điều này là cần thiết

Bảng

icecream.barh('Flavor', 'Number of Cartons')
8 bao gồm U. S. A. phim có doanh thu cao nhất mọi thời đại, tính đến năm 2017. Cột đầu tiên chứa tiêu đề của bộ phim; . Thần lực thức tỉnh có thứ hạng cao nhất, với tổng doanh thu phòng vé hơn 900 triệu đô la Mỹ. Cột thứ hai chứa tên hãng phim đã sản xuất bộ phim. Phần thứ ba chứa tổng doanh thu phòng vé nội địa tính bằng đô la và phần thứ tư chứa tổng số tiền có thể kiếm được từ việc bán vé theo giá năm 2016. Phần thứ năm chứa năm mà bộ phim được phát hành

Có 200 phim trong danh sách. Dưới đây là top 10 theo tổng doanh thu chưa điều chỉnh

top = Table.read_table(path_data + 'top_movies_2017.csv')
top

TitleStudioGrossGross (Đã điều chỉnh)NămCuốn theo chiều gióMGM19867645917961767001939Star WarsFox46099800715834832001977The Sound of MusicFox15867136812660727001965E. T. The Extra-TerrestrialUniversal43511055412610850001982TitanicParamount65867230212043680001997The Ten CommandmentsParamount6550000011645900001956JawsUniversal26000000011386207001975Doctor ZhivagoMGM11172191011035642001965The ExorcistWarner Brothers2329061459832266001973Snow White and the Seven DwarvesDisney1849254869690100001937

(190 hàng bị bỏ qua)

Các hãng phim MGM, Fox, Universal và Paramount hơn một lần xuất hiện trong top 10. Những studio nào sẽ xuất hiện thường xuyên nhất nếu chúng ta tìm kiếm trong số 200 hàng?

Để tìm ra điều này, trước tiên hãy lưu ý rằng tất cả những gì chúng ta cần là một cái bàn có các bộ phim và trường quay;

movies_and_studios = top.select('Title', 'Studio')

Phương pháp Table

icecream.barh('Flavor', 'Number of Cartons')
9 cho phép chúng ta đếm tần suất mỗi studio xuất hiện trong bảng, bằng cách gọi mỗi studio là một danh mục và thu thập tất cả các hàng trong mỗi danh mục mới này

Phương thức

icecream.barh('Flavor', 'Number of Cartons')
9 lấy đối số là nhãn của cột chứa các danh mục. Nó trả về một bảng đếm các hàng trong mỗi danh mục

Do đó,

icecream.barh('Flavor', 'Number of Cartons')
9 tạo một bảng phân phối cho biết cách các cá nhân (phim) được phân phối giữa các danh mục (hãng phim)

Phương pháp

icecream.barh('Flavor', 'Number of Cartons')
9 liệt kê các danh mục theo thứ tự tăng dần. Vì danh mục của chúng tôi là tên studio và do đó được biểu thị dưới dạng chuỗi, thứ tự tăng dần có nghĩa là thứ tự bảng chữ cái

Cột số lượng luôn được gọi là

icecream.barh('Flavor')
3, nhưng bạn có thể thay đổi tên đó nếu muốn bằng cách sử dụng
icecream.barh('Flavor')
4

studio_distribution = movies_and_studios.group('Studio')
studio_distribution

StudiocountAVCO1Buena Vista35Columbia9Disney11Dreamworks3Fox24IFC1Lionsgate3MGM7Metro1

(13 hàng bị bỏ qua)

Bảng cho thấy có 23 hãng phim khác nhau và cung cấp số lượng phim đã phát hành của mỗi hãng. Tổng số đếm là 200, tổng số phim

sum(studio_distribution.column('count'))

200

Giờ đây, chúng ta có thể sử dụng bảng này, cùng với các kỹ năng vẽ biểu đồ đã học ở trên, để vẽ biểu đồ thanh cho biết hãng phim nào thường xuyên xuất hiện nhất trong số 200 bộ phim có doanh thu cao nhất

studio_distribution.sort('count', descending=True).barh('Studio')

Làm thế nào để bạn tìm thấy sự phân phối dữ liệu phân loại trong python?

Buena Vista và Warner Brothers là những hãng phim phổ biến nhất trong số 200 phim hàng đầu. Warner Brothers sản xuất phim Harry Potter và Buena Vista sản xuất Chiến tranh giữa các vì sao

7. 1. 4. Hướng tới các biến định lượng

Mặc dù năm là số, nhưng chúng ta có thể coi năm phát hành là một biến phân loại và vẽ đồ thị phân phối của nó. Nghĩa là, mỗi năm chúng ta có thể tìm xem có bao nhiêu phim được phát hành trong năm đó, sau đó vẽ biểu đồ thanh của phân phối đó

Hãy làm điều đó và chỉ cần nhìn vào 10 năm đầu tiên trong quá trình phân phối

icecream.barh('Flavor', 'Number of Cartons')
0

Làm thế nào để bạn tìm thấy sự phân phối dữ liệu phân loại trong python?

Các năm xuất hiện theo thứ tự tăng dần vì

icecream.barh('Flavor', 'Number of Cartons')
9 sắp xếp các danh mục từ thấp nhất đến cao nhất. Điều đó quan trọng ở đây vì năm có thứ tự thời gian phải được duy trì. Nhưng có điều gì đó đáng lo ngại về biểu đồ thanh này. Các thanh ở 1921 và 1937 cách xa nhau như các thanh ở 1937 và 1939. Biểu đồ thanh không cho thấy rằng không có phim nào trong số 200 phim được phát hành từ năm 1922 đến năm 1936, cũng như năm 1938. Sự không nhất quán và thiếu sót như vậy làm cho việc phân phối trong những năm đầu khó hiểu dựa trên hình dung này

Phân phối của một biến phân loại có thể được hiển thị bằng biểu đồ thanh. Nhưng nếu biến không phải là phân loại mà là định lượng, thì các mối quan hệ bằng số giữa các giá trị của nó phải được tính đến khi chúng ta tạo trực quan hóa. Đó là chủ đề của phần tiếp theo

Phân phối dữ liệu cho dữ liệu phân loại là gì?

Phân phối phân loại là phân phối xác suất rời rạc có không gian mẫu là tập hợp k mục được xác định riêng lẻ . Đó là sự tổng quát hóa của phân phối Bernoulli cho một biến ngẫu nhiên phân loại. , 0 ngược lại.

Phân phối tần số của một biến phân loại là gì?

Phân bố tần suất phân loại là một bảng để tổ chức dữ liệu có thể được đặt trong các danh mục cụ thể, chẳng hạn như dữ liệu cấp danh nghĩa hoặc cấp thứ tự . Tần suất tương đối là tỷ lệ (phân số hoặc tỷ lệ) số lần một giá trị của dữ liệu xuất hiện trong tập hợp tất cả các kết quả trên tổng số kết quả.

Có thể được sử dụng để xem phân phối tần số của một biến phân loại?

Biểu đồ thanh có thể được sử dụng theo nhiều cách, một trong những cách sử dụng phổ biến là trực quan hóa phân phối dữ liệu của các biến phân loại trong dữ liệu. Trục X là giá trị danh mục duy nhất và trục Y là tần suất của từng giá trị.