- vừa được xem lúc

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

0 0 21

Người đăng: Pham Thi Hong Anh

Theo Viblo Asia

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

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thao tác với File trong Python

Python cung cấp các chức năng cơ bản và phương thức cần thiết để thao tác các file. Bài viết này tôi xin giới thiệu những thao tác cơ bản nhất với file trong Python.

0 0 63

- vừa được xem lúc

Tập tành crawl dữ liệu với Scrapy Framework

Lời mở đầu. Chào mọi người, mấy hôm nay mình có tìm hiểu được 1 chút về Scrapy nên muốn viết vài dòng để xem mình đã học được những gì và làm 1 demo nho nhỏ.

0 0 166

- vừa được xem lúc

Sử dụng Misoca API (oauth2) với Python

Với bài viết này giúp chúng ta có thể nắm được. ・Tìm hiểu cách xử lý API misoca bằng Python.

0 0 49

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 3)

Tiếp tục phần 2 của series Pandas DataFrame nào. Let's go!!. Ở phần trước, các bạn đã biết được cách lấy dữ liệu một row hoặc column trong Pandas DataFame rồi phải không nào. 6 Hoc.

0 0 63

- vừa được xem lúc

Lập trình socket bằng Python

Socket là gì. Một chức năng khác của socket là giúp các tầng TCP hoặc TCP Layer định danh ứng dụng mà dữ liệu sẽ được gửi tới thông qua sự ràng buộc với một cổng port (thể hiện là một con số cụ thể), từ đó tiến hành kết nối giữa client và server.

0 0 79

- vừa được xem lúc

[Series Pandas DataFrame] Phân tích dữ liệu cùng Pandas (Phần 2)

Nào, chúng ta cùng đến với phần 2 của series Pandas DataFrame. Truy xuất Labels và Data. Bạn đã biết cách khởi tạo 1 DataFrame của mình, và giờ bạn có thể truy xuất thông tin từ đó. Với Pandas, bạn có thể thực hiện các thao tác sau:.

0 0 95