+10

Visualize data chọn biểu đồ như thế nào cho hợp lý?

Mayfest2023 ContentCreator

Hello mọi người, để tiếp tục chuỗi series khóa học Statistics with python, mình sẽ viết tiếp bài viết tóm tắt tuần thứ 3 của khóa học. Ở bài trước mình viết về kiến thức thống kê cơ bản. ở bài này mình sẽ viết về trực quan hóa các loại dữ liệu và làm sao để lựa chọn biểu đồ cho phù hợp. Nào chúng ta cùng bắt đầu nhé 😄

Như các bạn cũng biết mục đích cuả trực quan hóa dữ liệu là để cho người nghe, người xem dashboard hoặc biểu đồ của bạn và hiểu được của bạn đang muốn trình bày, sâu xa hơn là hiểu rõ dữ liệu mình có.

Như các bạn cũng biết có nhiều loại biểu đồ như: bar chart, pie chart, line chart, boxplot ,,,, vậy thì chúng ta sẽ sử dụng biểu đồ nào cho phù hợp đây./.

Visualize cơ bản

Comparison - So Sánh

Nhiều items

Khi bạn so sánh giữa các danh mục (categories) hoặc items chúng ta có thể sử dụng bar charts hoặc column charts

Hình: so sánh giữa các items

Chúng ta có thể nhìn vào hinhd trên để thấy được rõ hơn: Với một biến trên một items thì chúng ta nên sử dụng bar charts, columns charts hoặc table, table kết hợp vơi charts tùy thuộc vào số lượng items à bạn dùng để trực quan hóa . Còn với trường hợp nhiều biến cho 1 item thì chúng ta có thể sử dụngvariable width column chart (biểu đồ cột có chiều rộng thay đổi).

Dữ liệu theo thời gian

Nếu bạn đang so sánh hành vi theo thời gian và nếu bạn có khoảng thời gian kéo dài trong vài tháng chúng ta có thể sử dụngline chartđể có thể so sánh trực quan hơn,

Hình: So sánh theo thời gian

Khi mà khoảng thòi gian mà mình muốn so sánh khnh nhiều thì cũng có thể sử dụng column chart

Relationship

Khi mà mình muốn xem mối quan hệ giữa 2 biến thì mình thường sử dụng scatter chart với 3 biến trở lên sẽ sử dụng bubble chart

hình: relationship

Distribution

Khi mà bạn muốn vẽ biểu đồ phân phối giũa các biế bạn có thể sử dụng Column histogram, line histogram, scatter chart, 3D area chart

Composition - Biểu đồ thành phần

Static - Tĩnh

Khi bạn muon vẽ biểu đồ thành phần tĩnh thì có thể sử dụng Pie chart

Sự thay đổi theo thời gian

Với một vài Periods chúng ta có thể sủ dụng stacked column chart, Và với nhiều Periods chúng ta có thể sử dụng Stacked area chart

Hình: thay đổi theo thời gian

Thực hành với dữ liệu

Mình sẽ sử dụng tập dữ liệu đã được giới thiệu ở bài để visualize trong bài này nhé, mọi người đọc lại bài trước để biết rõ hơn về tập dữ liệu nhé.

Hình: data

So sánh xem giáo viên giảng dạy các khoa học upper và lower ai được đanh giá trung bình cao hơn - Division?

Đầu tiên chúng ta có thể thấy ở đây là mục đích so sánh. Vậy thì chúng ta sẽ xem division này là kiểu dữ liệu gì và cùng xem chọn biêu đồ nào phù hợp, để người ta nhìn vào có đánh giá ngay lập tức luôn nhé.

Nhìn vào hình trên chúng ta có thể thấy division là categorical data và có 2 items trong này vậy thì chúng ta sẽ sử dụng bar chart.

division_eval = ratings_df.groupby('division')[['eval']].mean().reset_index()
sns.set(style="whitegrid")
ax = sns.barplot(x="division", y="eval", data=division_eval)
plt.show()

Dụa vào biểu đồ trên chúng ta có thể thấy rõ rằng giáo viên giảng dạy các khoa học lower được đánh giá trung bình cao hơn so với upper.

Vẽ biểu đồ mối quan hệ giữa ageeval

Ở đây là Vẽ biểu đồ mối quan hệ giữa 2 biến nên chúng ta sẽ sử dụng scatter chart

ax = sns.scatterplot(x='age', y='eval', data=ratings_df)
plt.show()

Chúng ta sẽ có biểu đồ sau

hình: biểu đồ mối quan hệ giữa ageeval

Vậy nếu như bạn muốn hiển thị biểu đồ để phân biệt giới tính thì sẽ vẽ như nào nhỉ?

ax = sns.scatterplot(x='age', y='eval', hue='gender',
                     data=ratings_df)
plt.show()

Hình: biểu đồ mối quan hệ giữa ageeval (2)

Vẽ biểu đồ phân phối điểm đánh giá giảng dạy eval

Ở đây mình sẽ sử dụng column histogram

ax = sns.distplot(ratings_df['eval'], kde = False)
plt.show()

kêt quả thu được:

Hình: eval distribution

Để tăng độ khó và có thêm nhiều thông tin hơn trong biểu đồ thì chúng ta cùng vẽ thêm biểu đồ phân phối điểm đánh giá giảng dạy eval có sự phân biệt giới tính (gender) nha.

sns.distplot(ratings_df[ratings_df['gender'] == 'female']['eval'], color='green', kde=False) 
sns.distplot(ratings_df[ratings_df['gender'] == 'male']['eval'], color="orange", kde=False) 
plt.show()

Hình: eval distribution (2)

Kết Luận

Ban đầu mình định viết bài này theo 1 cách khác nhưng mình muốn thêm bài này trong chuỗi series khóa học này nên mình đã viết theo khóa học trên coursera luôn. Cảm ơn mọi người đã đọc bài viết của mình, mong nhận được sự góp ý từ mọi người ạ. Đừng quên Upvoted nếu bạn cảm thấy hữu ích nhé ^^.

Reference

https://www.coursera.org/learn/statistics-for-data-science-python


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí