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 age và eval
Ở đâ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 age và eval
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 age và eval (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