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]
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
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']
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']
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']
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
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