Hướng dẫn dùng sns plots python

Là ta dùng Seaborn để vẽ các dạng dữ liệu phân loại. Ví dụ, phân loại giới tính, phân loại ngày tháng, phân loại sản phẩm… để trực quan số liệu các dạng Dataset này.

Trong biểu đồ phân loại [Categorical] ta thường dùng các dạng biểu đồ sau:

  • factorplot
  • boxplot
  • violinplot
  • stripplot
  • swarmplot
  • barplot
  • countplot

Nào giờ chúng ta xem cách vẽ từng loại qua các ví dụ đễ dễ hình dung nhé các bạn

Đầu tiên ta vẫn phải import thư viện

import seaborn as sns

Tiếp theo là load dataset để vẽ, ta vẫn sử dụng dataset tiền tip từ seaborn như ta đã học ở bài 1 nhé

tips = sns.load_dataset['tips']
tips.head[]

Output:

barplot và countplot

Những biểu đồ rất giống nhau này cho phép bạn lấy dữ liệu tổng hợp từ một đối tượng  phân loại trong dữ liệu của mình.

Barplot là một biểu đồ chung cho phép bạn tổng hợp dữ liệu phân loại dựa trên một số chức năng.

Countplo là biểu đồ thống kê cho bạn tổng số[ tương tự như sum] trong từng loại

Barplot

Đây là biểu đồ bar trong seaborn, với trục x là giới tính, trục y là số tiền thanh toán, dữ liệu là bảng dữ liệu data frame tips

sns.barplot[x='sex',y='total_bill',data=tips]

Output:

Nhìn vào biểu đồ trên ta thấy, cột giới tính được phân loại thành Male và Famale, giá trị total_bill mặc định là sử dụng trung bình cộng [ giá trị mean]

Bạn cũng có thể thay đổi đối tượng ước tính [trục y] mặc định là mean thành giá trị khác theo mong muốn bằng cách cách truyền tham số estimator vào

import numpy as np
sns.barplot[x='sex',y='total_bill',data=tips,estimator=np.std]

Output:

Countplot

Điều này về cơ bản giống như barplot ngoại trừ công cụ ước tính đang đếm số lần xuất hiện một cách rõ ràng. Hàm này mặc định chỉ cần truyền giá trị x = cột giới tính, trục y sẽ là giá trị xuất hiện số lượng  Male và Female dựa vào dataset

sns.countplot[x='sex',data=tips]

Output:

Boxplot and Violinplot

Boxplots và Violonplots được sử dụng để hiển thị sự phân phối dữ liệu phân loại. Biểu đồ hộp [hoặc biểu đồ hình hộp] cho thấy sự phân bố dữ liệu định lượng theo cách tạo điều kiện thuận lợi cho việc so sánh giữa các biến hoặc giữa các cấp của một biến phân loại. Hộp hiển thị các phần tư của tập dữ liệu trong khi phần râu mở rộng để hiển thị phần còn lại của phân phối, ngoại trừ các điểm được xác định là “ngoại lệ” bằng cách sử dụng một phương pháp là một hàm của phạm vi giữa các phần tư.

Boxplot

Ta thường dùng hàm này để tìm dữ liệu ngoại lệ có trong dataframe. Giá trị thể hiện bao gồm: Giá trị min, max, median, Q1[25%], Q3[75%] và giá trị ngoại lệ  nằm bên ngoài khoảng min, max

sns.boxplot[x="day", y="total_bill", data=tips,palette='rainbow']

Output:

Ta có thể thêm tham số hue bằng giá trị một cột nào đó để phân loại, ví dụ lượng người hút thuốc và không hút thuốc trong buổi ăn có phụ thuộc vào ngày hoặc tổng hóa đơn thanh toán

sns.boxplot[x="day", y="total_bill", hue="smoker",data=tips, palette="coolwarm"]

Output:

Violinplot

Vì nó hình dạng giống cây đàn vĩ cầm nên nó được gọi là biểu đồ Violin

Nó cho thấy sự phân bố của dữ liệu định lượng qua một số cấp độ của một [hoặc nhiều] biến phân loại để có thể so sánh những phân phối đó. Không giống như một biểu đồ box, trong đó tất cả các thành phần của biểu đồ tương ứng với các điểm dữ liệu thực tế, biểu đồ violin có tính năng ước tính mật độ nhân của phân phối cơ bản.

sns.violinplot[x="day", y="total_bill", data=tips,palette='rainbow']

Output:

Nhìn vào biểu đồ trên ta thấy mật độ nhân tập trung tại nơi phình to ra và giảm dần ở hai đầu. Giá trị đó thể hiển qua trục y và trực quan ta có thể biết rằng giá trị hóa đơn cao nhất tập trung vào ngày nào, và hóa đơn thanh toán thường tập trung ở giá trị nào…

Ta có thể thêm tham số hue vào để vẽ ra biểu đồ ta cần, tham số paletet hiển thị màu sắc của biểu đồ

sns.violinplot[x="day", y="total_bill", data=tips,hue='sex',palette='Set1']

Output:

Stripplot và swarmplot

Stripplot sẽ vẽ một biểu đồ phân tán trong đó một biến được phân loại. Biểu đồ Stripplot có thể được vẽ theo cách riêng của nó, nhưng nó cũng là một bổ sung tốt cho biểu đồ box hoặc violin trong trường hợp bạn muốn hiển thị tất cả các quan sát cùng với một số biểu diễn của phân phối cơ bản.

Swarmplot tương tự như stripplot [], nhưng các điểm được điều chỉnh [chỉ dọc theo trục phân loại] để chúng không trùng nhau. Điều này cho thấy sự thể hiện tốt hơn về sự phân bố của các giá trị, mặc dù nó không mở rộng quy mô cũng như đối với số lượng lớn các quan sát [cả về khả năng hiển thị tất cả các điểm và về tính toán cần thiết để sắp xếp chúng]

Stripplot

sns.stripplot[x="day", y="total_bill", data=tips]

Output:

Thêm tham số hue = cột giới tính vào

tips = sns.load_dataset['tips']
tips.head[]
0

Output:

Tham số split = True tách phân loại ra

tips = sns.load_dataset['tips']
tips.head[]
1

Output:

Swarmplot

tips = sns.load_dataset['tips']
tips.head[]
2

Output:

tips = sns.load_dataset['tips']
tips.head[]
3

Output:

factorplot

factorplot là hình thức chung nhất của một biểu đồ phân loại. Nó có thể sử dụng một tham số loại để điều chỉnh loại biểu đồ

tips = sns.load_dataset['tips']
tips.head[]
4

Output:

Phần thực hành

Các bạn mở google colab và thực hành các lệnh trên nhé!  nhớ quan sát hướng dẫn gợi ý tham số truyền vào như hình bên dưới :

Chủ Đề