Trực quan hóa dữ liệu là một bước quan trọng trong quá trình phân tích và trình bày dữ liệu. Trước khi thực hiện trực quan hóa, chúng ta cần đọc dữ liệu và tạo DataFrame bằng Pandas, một thư viện mã nguồn mở rất phổ biến cho việc phân tích dữ liệu. Pandas hỗ trợ nhiều định dạng tệp như CSV, Excel, SQL, HTML và nhiều định dạng khác.

Sau khi tạo DataFrame, Pandas cung cấp nhiều tính năng trực quan hóa dữ liệu với các chức năng tích hợp và tích hợp với Matplotlib và Seaborn. Bài viết này sẽ hướng dẫn cách tạo và trực quan hóa dữ liệu với các loại biểu đồ như biểu đồ cột, biểu đồ dòng, biểu đồ tròn, biểu đồ phân tán và biểu đồ hộp.

Đọc dữ liệu và tạo DataFrame

Trước khi trực quan hóa dữ liệu, chúng ta cần phải đọc dữ liệu và tạo DataFrame. Pandas hỗ trợ nhiều định dạng tệp như CSV, Excel, SQL, HTML và nhiều định dạng khác.

Để đọc tệp CSV, chúng ta sử dụng hàm read_csv(). Ví dụ, ta có tệp data.csv với nội dung như sau:

name,age,gender
John,25,Male
Alice,30,Female
Bob,20,Male

Chúng ta có thể đọc nội dung tệp CSV và tạo DataFrame như sau:

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

Đầu ra sẽ là:

Trực quan hóa dữ liệu

Pandas cung cấp nhiều tính năng trực quan hóa dữ liệu với các chức năng tích hợp và tích hợp với Matplotlib và Seaborn. Để cài đặt các thư viện này dùng lệnh sau:

pip install matplotlib
pip install seaborn

Biểu đồ cột

Để tích hợp Matplotlib Chúng ta có thể sử dụng hàm `plot()` để tạo biểu đồ cột. Ví dụ, chúng ta có DataFrame như sau:

import pandas as pd
import matplotlib.pyplot as plt

data = {'name': ['John', 'Alice', 'Bob'],
'age': [25, 30, 20],
'gender': ['Male', 'Female', 'Male']}
df = pd.DataFrame(data)

df.plot(kind='bar', x='name', y='age', rot=0)
plt.show()

Đầu ra sẽ là biểu đồ cột hiển thị tuổi của các người trong bảng:

Để sử dụng thư viện Seaborn để vẽ biểu đồ cột tương tự như đoạn code trên:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


data = {'name': ['John', 'Alice', 'Bob'],
'age': [25, 30, 20],
'gender': ['Male', 'Female', 'Male']}
df = pd.DataFrame(data)

sns.barplot(x='name', y='age', data=df)
sns.set_style("whitegrid")

plt.show()

 

Kết quả đầu ra sẽ là:

Ở đây, chúng ta sử dụng hàm sns.barplot() để vẽ biểu đồ cột dựa trên dữ liệu trong df. Hàm sns.set_style() được sử dụng để đặt kiểu phông chữ cho biểu đồ. 

Tuy nhiên, hàm plt.show() được sử dụng để hiển thị các biểu đồ do Matplotlib tạo ra, bao gồm cả biểu đồ do Seaborn tạo ra. Vì vậy, để sử dụng hàm plt.show(), chúng ta vẫn cần phải import Matplotlib và khai báo biến plt.

Biểu đồ dòng

Chúng ta có thể sử dụng hàm plot() với tham số kind='line' hoặc lineplot() với tham số err_style='band'để tạo biểu đồ dòng Ví dụ:

...
df = pd.DataFrame(data)

# sử dụng thư viện Matplotlib
df.plot(kind='line', x='name', y='age', rot=0)

# sử dụng thư viện seaborn
sns.lineplot(x='name', y='age', data=df, err_style='band')
plt.show()

Đầu ra sẽ là biểu đồ dòng hiển thị tuổi của các người trong bảng:

Biểu đồ dòng sử dụng thư viện Matplotlib
Biểu đồ dòng sử dụng thư viện Matplotlib
Biểu đồ dòng sử dụng thư viện Seaborn
Biểu đồ dòng sử dụng thư viện Seaborn

Biểu đồ tròn

Chúng ta có thể sử dụng hàm plot() với tham số kind='pie' trong thưu viện Matplotlib hoặc pie() của thư viện Matplotlib nhưng sử dụng các tham số của Seaborn để tùy chỉnh biểu đồ để tạo biểu đồ tròn. Ví dụ:

...
df = pd.DataFrame(data)
# sử dụng thư viện Matplotlib
df.plot(kind='pie', y='age', labels=df['name'], autopct='%1.1f%%', startangle=90)

# sử dụng thư viện seaborn
plt.pie(df['age'], labels=df['name'], autopct='%1.1f%%', startangle=90)
plt.show()

Đầu ra sẽ là biểu đồ tròn hiển thị tỉ lệ tuổi của các người trong bảng:

 

 

Biểu đồ tròn sử dụng thư viện Matplotlib
Biểu đồ tròn sử dụng thư viện Matplotlib
Biểu đồ tròn sử dụng thư viện Seaborn
Biểu đồ tròn sử dụng thư viện Seaborn

Biểu đồ phân tán

Chúng ta có thể sử dụng hàm plot() với tham số kind='scatter' trong thư viện Matplotlib hoặc hàm scatterplot() để tạo biểu đồ phân tán, data là dữ liệu được truyền vào, xy là tên các trục. Ví dụ:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = {'x': [1, 2, 3, 4, 5],
'y': [5, 4, 3, 2, 1]}
df = pd.DataFrame(data)

# sử dụng thư viện Matplotlib
df.plot(kind='scatter', x='x', y='y')

# sử dụng thư viện Seaborn
sns.scatterplot(data=df, x='x', y='y')
plt.show()

Đầu ra sẽ là biểu đồ phân tán hiển thị sự phân bố của các điểm `(x, y)`:

Biểu đồ phân tán
Biểu đồ phân tán

Biểu đồ hộp

Chúng ta có thể sử dụng hàm `plot()` với tham số `kind=’box’` để tạo biểu đồ hộp trong Matplotlib hoặc phương thức boxplot() của Seaborn để vẽ biểu đồ boxplot thay vì sử dụng plot() của Matplotlib. Ví dụ:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

data = [np.random.normal(0, std, 100) for std in range(1, 4)]
df = pd.DataFrame(data).T

# sử dụng thư viện Matplotlib
df.plot(kind='box')

# sử dụng thư viện Seaborn
sns.boxplot(data=df)
plt.show()

Đầu ra sẽ là biểu đồ hộp hiển thị phân bố của các giá trị trong các mảng:

Biểu đồ hộp trong Matplotlib
Biểu đồ hộp trong Matplotlib
Biểu đồ hộp trong Seaborn
Biểu đồ hộp trong Seaborn

Biểu đồ thập phân

Chúng ta có thể sử dụng hàm plot() với tham số kind='hexbin' để tạo biểu đồ thập phân hoặc hàm jointplot() của Seaborn để vẽ biểu đồ thập phân thay vì sử dụng plot() của Matplotlib. Ví dụ:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

data = np.random.randn(1000, 2)
df = pd.DataFrame(data, columns=['x', 'y'])

# sử dụng thư viện Matplotlib
df.plot(kind='hexbin', x='x', y='y', gridsize=25)

# sử dụng thư viện Seaborn
sns.jointplot(data=df, x='x', y='y', kind='hex', gridsize=25)

plt.show()

Đầu ra sẽ là biểu đồ thập phân hiển thị các khu vực có mật độ dữ liệu cao:

Biểu đồ thập phân trong Matplotlib
Biểu đồ thập phân trong Matplotlib
Biểu đồ thập phân trong Seaborn
Biểu đồ thập phân trong Seaborn

Kết luận

Trong bài viết này, chúng ta đã học cách sử dụng pandas để đọc và trực quan hóa dữ liệu. Chúng ta đã học cách tạo các loại biểu đồ khác nhau, bao gồm biểu đồ cột, biểu đồ dòng, biểu đồ tròn, biểu đồ phân tán, biểu đồ hộp và biểu đồ thập phân. Chúng ta đã cũng đã học cách tích hợp pandas với Matplotlib và Seaborn để tạo biểu đồ phù hợp với định dạng yêu cầu của mình.

Hy vọng bạn đã tìm được nội dung hữu ích từ bài viết này. Cảm ơn bạn đã đọc đến đây!

Học bài tiếp theo: Chinh phục Pandas: Tối ưu hiệu suất

Bài trước: Nắm bắt kỹ thuật phân tích dữ liệu chuỗi thời gian với Python Pandas

Quay về trang chủ của khoá học: Python Pandas – Thao tác và phân tích dữ liệu

Discover more from Bệ Phóng Việt

Subscribe now to keep reading and get access to the full archive.

Continue reading