Các loại biểu đồ dữ liệu phổ biến trong Python
Hãy bắt đầu với những biểu đồ phổ biến nhất, được dùng rộng rãi trong nhiều lĩnh vực và có thể xây dựng bằng phần lớn thư viện trực quan hóa dữ liệu Python (trừ một số thư viện chuyên biệt hẹp).
Biểu đồ cột
Biểu đồ cột là trực quan hóa phổ biến nhất để hiển thị giá trị số của dữ liệu phân loại nhằm so sánh các nhóm với nhau. Các nhóm được biểu diễn bằng các cột hình chữ nhật có cùng độ rộng và chiều cao (với biểu đồ cột dọc) hoặc chiều dài (với biểu đồ cột ngang) tỉ lệ với giá trị số tương ứng.
Để tạo biểu đồ cột cơ bản trong matplotlib, dùng hàm matplotlib.pyplot.bar() như sau:
# Data preparation
penguins_grouped = penguins[['species', 'bill_length_mm']].groupby('species').mean().reset_index()
# Creating a bar chart
plt.bar(penguins_grouped['species'], penguins_grouped['bill_length_mm'])
plt.title('Average penguin bill length by species')
plt.show()

Chúng ta có thể tùy biến thêm độ rộng và màu cột, độ rộng và màu viền, thêm nhãn tick cho cột, tô họa tiết, v.v.
Biểu đồ đường
Biểu đồ đường thể hiện tiến trình của một biến từ trái sang phải theo trục x qua các điểm dữ liệu được nối bằng đoạn thẳng. Thường nhất, biến được vẽ theo thời gian. Thực vậy, biểu đồ đường thường dùng để trực quan hóa chuỗi thời gian, như đã bàn trong hướng dẫn về biểu đồ đường chuỗi thời gian với Matplotlib.
Chúng ta có thể tạo biểu đồ đường cơ bản trong matplotlib bằng hàm matplotlib.pyplot.plot() như sau:
# Data preparation
flights_grouped = flights[['year', 'passengers']].astype({'year': 'string'}).groupby('year').sum().reset_index()
# Creating a line plot
plt.plot(flights_grouped['year'], flights_grouped['passengers'])
plt.title('Total number of passengers by year')
plt.show()

Bạn có thể điều chỉnh độ dày, kiểu, màu và độ trong suốt của đường, thêm và tùy biến marker, v.v.
Hướng dẫn Line Plots in MatplotLib with Python cung cấp thêm giải thích và ví dụ về tạo và tùy biến biểu đồ đường trong matplotlib. Để học cách tạo và tùy biến biểu đồ đường trong seaborn, đọc Python Seaborn Line Plot Tutorial: Create Data Visualizations.
Biểu đồ phân tán
Biểu đồ phân tán hiển thị mối quan hệ giữa hai biến dưới dạng các điểm trên mặt phẳng tọa độ. Loại biểu đồ này dùng để kiểm tra hai biến có tương quan không, mức độ mạnh yếu, và liệu có các cụm rõ rệt trong dữ liệu hay không.
Đoạn mã dưới minh họa cách tạo biểu đồ phân tán cơ bản trong matplotlib với hàm matplotlib.pyplot.scatter():
# Creating a scatter plot
plt.scatter(penguins['bill_length_mm'], penguins['bill_depth_mm'])
plt.title('Penguin bill length vs. bill depth')
plt.show()

Chúng ta có thể điều chỉnh kích thước, kiểu, màu, độ trong suốt, độ rộng và màu viền của điểm, v.v.
Bạn có thể đọc thêm về biểu đồ phân tán (và nhiều hơn nữa!) trong hướng dẫn này: Data Demystified: Data Visualizations that Capture Relationships.
Histogram
Histogram biểu diễn phân bố tần suất của các giá trị biến số. Về bản chất, nó chia dữ liệu thành các nhóm khoảng giá trị (bin), đếm số điểm thuộc mỗi bin, và hiển thị mỗi bin như một cột dọc với chiều cao tỉ lệ với số đếm của bin đó. Histogram có thể xem là biến thể đặc thù của biểu đồ cột, chỉ khác là các cột kề nhau không có khoảng trống do bản chất liên tục của bin.
Ta có thể dễ dàng dựng histogram cơ bản trong matplotlib với hàm matplotlib.pyplot.hist():
# Creating a histogram
plt.hist(penguins['bill_length_mm'])
plt.title('Penguin bill length distribution')
plt.show()

Có thể tùy biến màu và kiểu histogram, số lượng bin, biên bin, miền giá trị của bin, histogram thường hay tích lũy, v.v.
Để xem thêm ví dụ histogram, hãy xem Histograms in Matplotlib và How to Create a Histogram with Plotly.
Biểu đồ hộp (box plot)
Biểu đồ hộp hiển thị năm thống kê mô tả của dữ liệu: giá trị nhỏ nhất và lớn nhất (loại trừ ngoại lệ), trung vị, và tứ phân vị thứ nhất và thứ ba. Tùy chọn, nó cũng có thể hiển thị giá trị trung bình. Box plot phù hợp khi bạn chỉ quan tâm đến các thống kê này, không cần đi sâu vào phân bố thực sự bên dưới.
Trong hướng dẫn 11 kỹ thuật trực quan hóa dữ liệu cho mọi tình huống kèm ví dụ, bạn sẽ tìm thấy, bên cạnh những nội dung khác, giải thích chi tiết hơn về các thông tin thống kê có thể rút ra từ box plot.
Ta có thể tạo box plot cơ bản trong matplotlib bằng hàm matplotlib.pyplot.boxplot() như dưới đây:
# Data preparation
penguins_cleaned = penguins.dropna()
# Creating a box plot
plt.boxplot(penguins_cleaned['bill_length_mm'])
plt.title('Penguin bill length distribution')
plt.show()

Có rất nhiều chỗ để tùy biến: độ rộng và hướng của hộp, vị trí hộp và ria, khả năng hiển thị và kiểu của các thành phần, v.v.
Lưu ý để tạo box plot bằng hàm này, cần đảm bảo dữ liệu không có giá trị thiếu. Trong ví dụ trên, chúng ta đã loại bỏ giá trị thiếu trước khi vẽ. So sánh với Seaborn, thư viện này không có hạn chế đó và xử lý giá trị thiếu ngầm, như dưới đây:
# Creating a box plot
sns.boxplot(data=penguins, y='bill_length_mm')
plt.title('Penguin bill length distribution')
plt.show()

Biểu đồ tròn
Biểu đồ tròn là trực quan hóa dưới dạng hình tròn chia thành các lát, mỗi lát tương ứng với một nhóm trong dữ liệu phân loại, và góc của mỗi lát phản ánh tỉ trọng của nhóm đó trong tổng thể. Không như biểu đồ cột, biểu đồ tròn dùng để mô tả các nhóm cấu thành tổng thể, ví dụ hành khách trên một con tàu.
Biểu đồ tròn có một số nhược điểm:
- Góc khó diễn giải với mắt người hơn độ dài và thường dễ gây hiểu nhầm.
- Kém hiệu quả khi có từ năm nhóm trở lên.
- Không thể hiển thị nhiều hơn một tập dữ liệu phân loại, tức không thể nhóm như biểu đồ cột.
- Không dễ bộc lộ giá trị thực.
- Không hữu ích khi các nhóm có giá trị chênh lệch nhỏ.
Vì vậy, nên dùng biểu đồ tròn một cách tiết chế và thận trọng.
Để tạo biểu đồ tròn cơ bản trong matplotlib, dùng hàm matplotlib.pyplot.pie() như sau:
# Data preparation
titanic_grouped = titanic.groupby('class')['pclass'].count().reset_index()
# Creating a pie chart
plt.pie(titanic_grouped['pclass'], labels=titanic_grouped['class'])
plt.title('Number of passengers by class')
plt.show()

Nếu cần, ta có thể điều chỉnh biểu đồ tròn: đổi màu các lát, tạo độ lệch cho một số lát (thường với lát rất nhỏ), thay đổi bán kính, tùy biến định dạng nhãn, tô họa tiết cho một số hoặc tất cả lát, v.v.
Để tìm hiểu sâu hơn, bao gồm thêm phần trăm và lát tách rời, đọc Python Pie Chart: Build and Style with Pandas and Matplotlib.
Các loại biểu đồ dữ liệu nâng cao trong Python
Trong phần này, chúng ta khám phá các biểu đồ nâng cao. Một số là biến thể “bóng bẩy” của các biểu đồ phổ biến ở phần trước, số khác là các loại độc lập.
Biểu đồ cột nhóm
Trong khi biểu đồ cột thường dùng để hiển thị giá trị số theo từng nhóm của một biến phân loại, biểu đồ cột nhóm phục vụ cùng mục đích nhưng qua hai biến phân loại. Về đồ họa, ta có nhiều nhóm cột, mỗi nhóm ứng với một nhóm của biến thứ nhất và mỗi cột trong nhóm ứng với một nhóm của biến thứ hai. Biểu đồ cột nhóm hoạt động tốt nhất khi biến thứ hai có không quá ba nhóm; nếu nhiều hơn, đồ thị sẽ rối và kém hữu ích.
Giống biểu đồ cột thông thường, ta có thể tạo biểu đồ cột nhóm với matplotlib. Tuy nhiên, Seaborn cung cấp chức năng thuận tiện hơn qua hàm seaborn.barplot(). Hãy xem ví dụ tạo biểu đồ cột nhóm cơ bản cho chiều dài mỏ chim cánh cụt theo hai biến phân loại: loài và giới tính.
# Creating a grouped bar chart
sns.barplot(data=penguins, x='species', y='bill_length_mm', hue='sex')
plt.title('Penguin bill length by species and sex')
plt.show()

Biến phân loại thứ hai được đưa vào qua tham số hue. Các tham số khác cho phép đổi hướng, độ rộng, màu cột, thứ tự nhóm, bộ ước lượng thống kê, v.v.
Để đào sâu vào vẽ với Seaborn, cân nhắc khóa học: Intermediate Data Visualization with Seaborn.
Biểu đồ diện xếp chồng
Biểu đồ diện xếp chồng mở rộng từ biểu đồ diện thông thường (vốn là biểu đồ đường với vùng dưới đường được tô màu/họa tiết) bằng nhiều vùng tương ứng với các biến, xếp chồng lên nhau. Biểu đồ này hữu ích khi cần theo dõi cả xu hướng tổng thể của một tập biến và mức đóng góp riêng của từng biến. Tương tự biểu đồ đường, biểu đồ diện xếp chồng thường phản ánh thay đổi theo thời gian.
Cần ghi nhớ hạn chế chính: chúng chủ yếu giúp nắm bắt xu hướng chung, chứ không phải giá trị chính xác của từng vùng xếp chồng.
Để dựng biểu đồ diện xếp chồng cơ bản trong matplotlib, dùng hàm matplotlib.pyplot.stackplot() như dưới đây:
# Data preparation
flights_grouped = flights.groupby(['year', 'month']).mean().reset_index()
flights_49_50 = pd.DataFrame(list(zip(flights_grouped.loc[:11, 'month'].tolist(), flights_grouped.loc[:11, 'passengers'].tolist(), flights_grouped.loc[12:23, 'passengers'].tolist())), columns=['month', '1949', '1950'])
# Creating a stacked area chart
plt.stackplot(flights_49_50['month'], flights_49_50['1949'], flights_49_50['1950'], labels=['1949', '1950'])
plt.title('Number of passengers in 1949 and 1950 by month')
plt.legend()
plt.show()

Một số thuộc tính có thể tùy biến gồm màu vùng, độ trong suốt, họa tiết tô, độ dày, kiểu, màu, độ trong suốt của đường, v.v.
Nhiều biểu đồ hộp
Ở phần Các loại biểu đồ phổ biến, chúng ta định nghĩa box plot là loại biểu đồ thể hiện năm thống kê mô tả. Đôi khi, ta muốn hiển thị và so sánh các thống kê này riêng cho từng nhóm của một biến phân loại. Khi đó, ta cần vẽ nhiều hộp trên cùng một vùng đồ thị, điều này có thể dễ dàng thực hiện với hàm seaborn.boxplot() như sau:
# Creating multiple box plots
sns.boxplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Có thể thay đổi thứ tự, hướng, màu, độ trong suốt, độ rộng của các hộp, thuộc tính của các thành phần, thêm một biến phân loại khác, v.v.
Biểu đồ đàn vĩ cầm (violin)
Biểu đồ violin tương tự box plot và hiển thị cùng các thống kê tổng quan, nhưng đồng thời cho thấy hình dạng phân bố dữ liệu. Như box plot, ta có thể tạo một biểu đồ violin đơn hoặc, thường hơn, nhiều violin cho từng nhóm của biến phân loại.
Seaborn linh hoạt hơn matplotlib khi tạo và tùy biến violin. Để dựng violin cơ bản trong seaborn, dùng hàm seaborn.violinplot() như dưới đây:
# Creating a violin plot
sns.violinplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Ta có thể đổi thứ tự, hướng, màu, độ trong suốt, độ rộng, thuộc tính các thành phần; mở rộng phân bố vượt điểm biên; thêm biến phân loại khác; chọn cách biểu diễn điểm dữ liệu bên trong, v.v.
Heatmap
Heatmap là trực quan hóa dạng bảng, trong đó mỗi điểm dữ liệu số được biểu diễn theo thang màu đã chọn và theo độ lớn tương đối trong tập dữ liệu. Mục tiêu chính là làm nổi bật các “điểm nóng/lạnh” trong dữ liệu cần chú ý đặc biệt.
Nhiều trường hợp cần tiền xử lý dữ liệu trước khi tạo heatmap, thường bao gồm làm sạch và chuẩn hóa.
Mã dưới đây cho thấy cách tạo heatmap cơ bản (sau khi tiền xử lý) với hàm seaborn.heatmap():
# Data preparation
from sklearn import preprocessing
car_crashes_cleaned = car_crashes.drop(labels='abbrev', axis=1).iloc[0:10]
min_max_scaler = preprocessing.MinMaxScaler()
car_crashes_normalized = pd.DataFrame(min_max_scaler.fit_transform(car_crashes_cleaned.values), columns=car_crashes_cleaned.columns)
# Creating a heatmap
sns.heatmap(car_crashes_normalized, annot=True)
plt.title('Car crash heatmap for the first 10 car crashes')
plt.show()

Một số điều chỉnh có thể gồm chọn colormap, xác định giá trị neo, định dạng chú thích, tùy biến đường phân cách, áp dụng mặt nạ, v.v.
Để có hướng dẫn chi tiết hơn, bao gồm colormap tùy chỉnh và chú thích, đọc Seaborn Heatmaps: A Guide to Data Visualization.
Các loại biểu đồ dữ liệu ít gặp trong Python
Cuối cùng, hãy xem một số loại trực quan hóa ít dùng hoặc ít được biết đến. Nhiều loại có ít nhất một biến thể tương tự trong các đồ thị phổ biến hơn. Tuy nhiên, trong một số trường hợp cụ thể, các trực quan hóa “khác thường” này có thể hiệu quả hơn.
Biểu đồ thân-cành (stem)
Biểu đồ stem thực chất là một cách khác để biểu diễn biểu đồ cột: thay vì cột đặc, nó gồm các đường mảnh với (tùy chọn) marker ở đỉnh mỗi đường. Dù có vẻ dư thừa, stem là lựa chọn tốt hơn khi cần trực quan hóa nhiều nhóm. Ưu điểm so với biểu đồ cột là tỉ lệ mực dữ liệu tốt hơn nên dễ đọc hơn.
Để tạo stem plot cơ bản trong matplotlib, dùng hàm matplotlib.pyplot.stem() như sau:
# Data preparation
fmri_grouped = fmri.groupby('subject')[['subject', 'signal']].max()
# Creating a stem plot
plt.stem(fmri_grouped['subject'], fmri_grouped['signal'])
plt.title('FMRI maximum signal by subject')
plt.show()

Bạn có thể thay đổi hướng và tùy biến thân, đường cơ sở, và marker qua các tham số tùy chọn.
Biểu đồ strip và swarm
Hai loại trực quan hóa rất giống nhau này có thể xem như phiên bản của biểu đồ phân tán cho biến phân loại: cả strip và swarm đều hiển thị phần bên trong phân bố dữ liệu, gồm kích thước mẫu và vị trí từng điểm, nhưng không có thống kê mô tả. Khác biệt chính là ở strip, các điểm có thể chồng lấp, còn ở swarm thì không; thay vào đó, điểm được sắp dọc theo trục phân loại.
Lưu ý cả hai chỉ hữu ích với bộ dữ liệu tương đối nhỏ.
Đây là cách tạo strip plot với hàm seaborn.stripplot():
# Creating a strip plot
sns.stripplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Giờ hãy tạo swarm plot với hàm seaborn.swarmplot() cho cùng dữ liệu và quan sát sự khác biệt:
# Creating a swarm plot
sns.swarmplot(data=penguins, x='bill_length_mm', y='species')
plt.title('Penguin bill length distribution by species')
plt.show()

Hai hàm seaborn.stripplot() và seaborn.swarmplot() có cú pháp rất giống nhau. Một số thuộc tính có thể tùy biến gồm thứ tự và hướng đồ thị, và thuộc tính marker như kiểu, kích thước, màu, độ trong suốt, v.v. Điều chỉnh độ trong suốt giúp giảm chồng lấp điểm ở strip plot.
Treemap
Treemap dùng để trực quan hóa giá trị số của dữ liệu phân loại theo nhóm dưới dạng tập các hình chữ nhật trong một khung chữ nhật, với diện tích mỗi hình tỉ lệ với giá trị của nhóm tương ứng. Về mục đích, treemap giống biểu đồ cột và biểu đồ tròn. Tương tự biểu đồ tròn, treemap chủ yếu mô tả các nhóm cấu thành tổng thể. Treemap có thể trông hiệu quả và hấp dẫn khi có tối đa khoảng mười nhóm với khác biệt giá trị rõ ràng.
Nhược điểm của treemap khá giống biểu đồ tròn:
- Diện tích khó diễn giải với mắt người hơn độ dài và thường dễ gây hiểu nhầm.
- Kém hiệu quả khi có hơn mười nhóm.
- Không thể hiển thị nhiều hơn một tập dữ liệu phân loại (không thể nhóm) như biểu đồ cột.
- Không dễ bộc lộ giá trị thực.
- Không hữu ích khi các nhóm có giá trị chênh lệch nhỏ.
Cần ghi nhớ các điểm này và chỉ dùng treemap khi thực sự phù hợp.
Để dựng treemap trong Python, trước tiên cài và import thư viện squarify: pip install squarify, sau đó import squarify. Đoạn mã dưới tạo treemap cơ bản:
import squarify
# Data preparation
diamonds_grouped = diamonds[['cut', 'price']].groupby('cut').mean().reset_index()
# Creating a treemap
squarify.plot(sizes=diamonds_grouped['price'], label=diamonds_grouped['cut'])
plt.title('Average diamond price by cut')
plt.show()

Ta có thể tùy biến màu và độ trong suốt của hình chữ nhật, tô họa tiết, chỉnh viền, thêm khoảng cách nhỏ giữa các hình, và tinh chỉnh văn bản nhãn.
Có một cách khác để tạo treemap trong Python dùng thư viện plotly. Bạn có thể đọc thêm trong hướng dẫn What is Data Visualization? A Guide for Data Scientists.
Đám mây từ (word cloud)
Word cloud là trực quan hóa văn bản, trong đó cỡ chữ của mỗi từ tương ứng với tần suất xuất hiện của từ đó trong văn bản đầu vào. Sử dụng word cloud giúp tìm các từ quan trọng nhất trong một đoạn văn.
Mặc dù luôn bắt mắt và dễ hiểu với mọi đối tượng, chúng ta cần lưu ý một số hạn chế cố hữu của loại biểu đồ này:
- Tạo word cloud thường đòi hỏi tiền xử lý dữ liệu tốn thời gian.
- Giống đa số công cụ khai thác văn bản, word cloud thiếu ngữ cảnh và dễ bị diễn giải sai. Ví dụ, chúng không nắm bắt được mỉa mai, phủ định, hay nghĩa bóng.
- Không cho phép xếp hạng từ rõ ràng: ta dễ phân biệt từ xuất hiện nhiều nhất, thứ hai, thứ ba, có thể thứ tư; sau đó trở nên khó khăn.
- Không hiển thị giá trị tần suất chính xác.
- Tạo ảo giác thị giác rằng từ dài trông lớn hơn từ ngắn có cùng tần suất.
- Nhiều từ dọc hoặc áp dụng mặt nạ làm giảm khả năng đọc.
Một ứng dụng thú vị và ít được biết tới là ta có thể dựng word cloud không dựa trên tần suất mà dựa trên thuộc tính khác gán cho mỗi từ. Ví dụ, tạo từ điển các quốc gia, gán giá trị dân số và hiển thị dữ liệu đó.
Để tạo word cloud trong Python, ta cần thư viện chuyên dụng wordcloud. Trước tiên cài đặt (pip install wordcloud), sau đó import lớp WordCloud và stopwords: from wordcloud import WordCloud, STOPWORDS. Mã sau tạo word cloud cơ bản:
from wordcloud import WordCloud, STOPWORDS
text = 'cat cat cat cat cat cat dog dog dog dog dog panda panda panda panda koala koala koala rabbit rabbit fox'
# Creating a word cloud
wordcloud = WordCloud().generate(text)
plt.imshow(wordcloud)
plt.title('Words by their frequency in the text')
plt.axis('off')
plt.show()

Có thể điều chỉnh kích thước, đổi màu nền, gán colormap cho từ, ưu tiên từ ngang hơn dọc, giới hạn số từ hiển thị tối đa, cập nhật danh sách stopwords, giới hạn cỡ chữ, xét cụm từ, đảm bảo tái lập kết quả, v.v.
Nếu muốn học thêm về word cloud trong Python, đây là tài liệu hay: Generating WordClouds in Python Tutorial.
Tham chiếu nhanh: Chọn biểu đồ phù hợp
| Loại biểu đồ | Phù hợp nhất cho | Thư viện | Hàm |
|---|---|---|---|
| Biểu đồ cột | So sánh các nhóm | matplotlib | plt.bar() |
| Biểu đồ đường | Xu hướng theo thời gian | matplotlib | plt.plot() |
| Biểu đồ phân tán | Tương quan giữa hai biến | matplotlib | plt.scatter() |
| Histogram | Phân bố của một biến | matplotlib | plt.hist() |
| Box plot | Thống kê tóm tắt và ngoại lệ | seaborn | sns.boxplot() |
| Biểu đồ tròn | Phần của tổng thể (dùng hạn chế) | matplotlib | plt.pie() |
| Biểu đồ cột nhóm | Nhóm theo hai biến | seaborn | sns.barplot() |
| Biểu đồ diện xếp chồng | Xu hướng tích lũy theo thời gian | matplotlib | plt.stackplot() |
| Biểu đồ violin | Hình dạng phân bố + thống kê | seaborn | sns.violinplot() |
| Heatmap | Mẫu hình trong dữ liệu ma trận | seaborn | sns.heatmap() |
| Biểu đồ stem | Nhiều nhóm (gọn gàng hơn biểu đồ cột) | matplotlib | plt.stem() |
| Strip / Swarm | Từng điểm dữ liệu theo nhóm | seaborn | sns.stripplot() / sns.swarmplot() |
| Treemap | Cấu phần phân cấp của tổng thể | squarify | squarify.plot() |
| Word cloud | Tần suất từ trong văn bản | wordcloud | WordCloud() |
Lời kết
Tôi đã đề cập 14 loại biểu đồ dữ liệu trong bài viết này, từ biểu đồ cột và phân tán thường dùng đến treemap và word cloud ít phổ biến hơn. Mỗi loại lấp đầy một nhu cầu cụ thể: biểu đồ cột so sánh nhóm, biểu đồ phân tán bộc lộ tương quan, heatmap làm nổi mẫu hình trong dữ liệu ma trận, v.v.
Các ví dụ mã ở đây dùng thiết lập mặc định của matplotlib và seaborn, nhưng cả hai đều hỗ trợ tùy biến sâu. Việc chọn biểu đồ phù hợp quy về hai câu hỏi: bạn có loại dữ liệu nào, và bạn muốn thể hiện mối quan hệ gì?
Để tham chiếu nhanh nên dùng loại biểu đồ nào, hãy xem 11 Data Visualization Techniques for Every Use-Case with Examples.
Python chỉ là một trong nhiều công cụ trực quan hóa dữ liệu. Nếu bạn làm việc trong môi trường khác, các khóa học này đáng để xem:

Nhà khoa học dữ liệu được chứng nhận bởi IBM (2020), trước đây là Nhà địa chất/Người xây dựng mô hình địa chất cho các mỏ dầu khí trên toàn thế giới với hơn 12 năm kinh nghiệm làm việc quốc tế. Thành thạo Python, R và SQL. Lĩnh vực chuyên môn: làm sạch dữ liệu, xử lý dữ liệu, trực quan hóa dữ liệu, phân tích dữ liệu, mô hình hóa dữ liệu, thống kê, kể chuyện bằng dữ liệu, học máy. Có nhiều kinh nghiệm trong quản lý cộng đồng khoa học dữ liệu và viết/biên tập bài viết, hướng dẫn về khoa học dữ liệu và định hướng nghề nghiệp.
Tạo biểu đồ dữ liệu là bước thiết yếu của phân tích dữ liệu khám phá. Biết nên xây dựng loại trực quan hóa nào sẽ giúp chúng ta rút trích những insight giá trị, đôi khi bất ngờ, từ dữ liệu.
Trong bài viết này, tôi sẽ đi qua nhiều loại biểu đồ dữ liệu, từ phổ biến nhất đến những loại ít thông dụng. Với mỗi loại, tôi nêu biểu đồ thể hiện điều gì, khi nào nên dùng, khi nào nên tránh, và cách tạo bằng Python.
TL;DR
Cài đặt Matplotlib, Seaborn và Pandas
Để có dữ liệu thực hành, trước tiên hãy tải các thư viện Python cần thiết và một số bộ dữ liệu tích hợp sẵn của thư viện Seaborn:
Với mỗi loại biểu đồ, chúng ta sẽ tạo ví dụ cơ bản, tùy biến tối thiểu để minh họa cách hoạt động. Tuy nhiên, chúng ta sẽ thêm tiêu đề tương ứng để đồ thị có ý nghĩa hơn. Nhiều ví dụ sẽ cần tiền xử lý dữ liệu trước (được chú thích trong mã là # Data preparation).
Chúng ta sẽ làm việc chủ yếu với matplotlib và Seaborn. Nếu bạn chưa quen với việc vẽ biểu đồ bằng các thư viện này và cần phần giới thiệu nhanh, hãy tham khảo các tài liệu sau:
Để đi sâu hơn vào trực quan hóa dữ liệu bằng Python, hãy xem lộ trình kỹ năng Data Visualization with Python.