Biểu đồ Pareto, hay còn gọi là biểu đồ tần suất tích lũy, là một công cụ trực quan mạnh mẽ được sử dụng để phân tích dữ liệu và xác định các yếu tố chính đóng góp cho một kết quả cụ thể. Nó được đặt theo tên của nhà kinh tế học người Ý Vilfredo Pareto, người đã quan sát thấy rằng 80% kết quả thường xuất phát từ 20% nguyên nhân.
Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo biểu đồ Pareto bằng Python, một ngôn ngữ lập trình phổ biến và dễ sử dụng. Với sự trợ giúp của các thư viện và công cụ chuyên dụng, việc tạo biểu đồ Pareto trở nên đơn giản và hiệu quả, giúp ta dễ dàng phân tích dữ liệu và đưa ra quyết định sáng suốt.
Lợi ích của việc sử dụng biểu đồ Pareto
– Xác định các nguyên nhân chính: Biểu đồ Pareto giúp bạn nhanh chóng xác định 20% nguyên nhân dẫn đến 80% kết quả, từ đó tập trung nguồn lực giải quyết những vấn đề quan trọng nhất.
– Ưu tiên giải pháp: Nhờ khả năng trực quan hóa dữ liệu hiệu quả, biểu đồ Pareto giúp bạn dễ dàng so sánh mức độ ảnh hưởng của từng yếu tố và đưa ra quyết định ưu tiên giải pháp phù hợp.
– Cải thiện hiệu quả hoạt động: Việc tập trung vào những nguyên nhân chính giúp tiết kiệm thời gian, nguồn lực và nâng cao hiệu quả hoạt động trong nhiều lĩnh vực như quản lý chất lượng, sản xuất, kinh doanh,…
1. Tạo dữ liệu
Giả sử chúng ta tiến hành một cuộc khảo sát, trong đó chúng ta hỏi 350 người khác nhau về thương hiệu ngũ cốc yêu thích của họ trong số các thương hiệu A, B, C, D và E
Hướng dẫn:
import pandas as pd
#Tạo DataFrame
df = pd.DataFrame({‘count’: [97, 140, 58, 6, 17, 32]})
df.index = [‘B’, ‘A’, ‘C’, ‘F’, ‘E’, ‘D’]
#Sắp xếp DataFrame theo thứ tự giảm dần của ‘count’
df = df.sort_values(by=’count’, ascending=False)
# Thêm cột hiển thị tỷ lệ phần trăm tích lũy
df[‘cumperc’] = df[‘count’].cumsum()/df[‘count’].sum()*100
#Hiển thị DataFrame
df
Giải thích:
1. Import thư viện Pandas:
– Dòng import pandas as pd dùng để import thư viện Pandas vào chương trình. Việc import này cho phép sử dụng các hàm và lớp của Pandas trong phần code tiếp theo.
2. Tạo DataFrame:
– Dòng df = pd.DataFrame({‘count’: [97, 140, 58, 6, 17, 32]}) tạo một DataFrame mới có tên là df.DataFrame này có một cột duy nhất là count với giá trị là danh sách các số nguyên: 97, 140, 58, 6, 17, 32.
– Dòng df.index = [‘B’, ‘A’, ‘C’, ‘F’, ‘E’, ‘D’] đặt nhãn cho các hàng của DataFrame bằng danh sách các ký tự: ‘B’, ‘A’, ‘C’, ‘F’, ‘E’, ‘D’.
3. Sắp xếp DataFrame:
– Dòng df = df.sort_values(by=’count’, ascending=False) sắp xếp DataFrame theo thứ tự giảm dần của cột count. Tham số ascending=False cho biết sắp xếp theo thứ tự giảm dần.
4. Thêm cột tính toán:
– Dòng df[‘cumperc’] = df[‘count’].cumsum()/df[‘count’].sum()*100 thêm một cột mới vào DataFrame có tên là cumperc. Cột này chứa giá trị tỷ lệ phần trăm tích lũy của mỗi hàng, được tính bằng cách lấy tổng tích lũy của count chia cho tổng giá trị của count và nhân với 100.
5. Hiển thị DataFrame:
– Dòng df cuối cùng hiển thị DataFrame df ra màn hình.
2. Tạo biểu đồ Pareto
Sau khi đã tạo xong DataFrame, chúng ta sẽ vẽ biểu đồ Pareto sử dụng dữ liệu này
Hướng dẫn:
import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter
#Tùy chỉnh biểu đồ
color1 = ‘steelblue’
color2 = ‘red’
line_size = 4
#Tạo biểu đồ cột
fig, ax = plt.subplots()
ax.bar(df.index, df[‘count’], color=color1)
#Thêm biểu đồ đường hiển thị tỷ lệ phần trăm tích lũy
ax2 = ax.twinx()
ax2.plot(df.index, df[‘cumperc’], color=color2, marker=”D”, ms=line_size)
ax2.yaxis.set_major_formatter(PercentFormatter())
#Tùy chỉnh màu sắc cho các cột
ax.tick_params(axis=’y’, colors=color1)
ax2.tick_params(axis=’y’, colors=color2)
#Hiển thị biểu đồ Pareto
plt.show()
Giải thích:
1. Import thư viện:
– Dòng import matplotlib.pyplot as plt import thư viện matplotlib.pyplot để tạo biểu đồ.
– Dòng from matplotlib.ticker import PercentFormatter import lớp PercentFormatter để định dạng tỷ lệ phần trăm cho trục y.
2. Tùy chỉnh biểu đồ:
– Biến color1 và color2 lưu trữ màu sắc cho các phần tử trong biểu đồ.
– Biến line_size thiết lập kích thước đường kẻ cho biểu đồ đường.
3. Tạo biểu đồ cột:
– Dòng fig, ax = plt.subplots() tạo ra một figure và một trục cho biểu đồ.
– Dòng ax.bar(df.index, df[‘count’], color=color1) tạo ra một biểu đồ cột với các cột được đặt vị trí theo nhãn của DataFrame (df.index), giá trị cao của cột được lấy từ cột count của DataFrame, và màu sắc của các cột được đặt là color1.
4. Thêm biểu đồ đường hiển thị tỷ lệ phần trăm tích lũy:
– Dòng ax2 = ax.twinx() tạo ra một trục phụ có cùng trục x với trục chính.
– Dòng ax2.plot(df.index, df[‘cumperc’], color=color2, marker=”D”, ms=line_size) tạo ra một biểu đồ đường trên trục phụ, với các điểm dữ liệu được đặt vị trí theo nhãn của DataFrame (df.index), giá trị y của các điểm dữ liệu được lấy từ cột cumperc của DataFrame, màu sắc của đường kẻ được đặt là color2, kiểu marker là “D” (hình thoi), và kích thước marker được đặt là line_size.
– Dòng ax2.yaxis.set_major_formatter(PercentFormatter()) định dạng trục y phụ để hiển thị giá trị dưới dạng tỷ lệ phần trăm.
5. Tùy chỉnh màu sắc cho các cột:
– Dòng ax.tick_params(axis=’y’, colors=color1) thiết lập màu sắc cho các vạch chia trục y của trục chính là color1.
– Dòng ax2.tick_params(axis=’y’, colors=color2) thiết lập màu sắc cho các vạch chia trục y của trục phụ là color2.
6. Hiển thị biểu đồ:
– Dòng plt.show() hiển thị biểu đồ ra màn hình.
3. Thay đổi màu sắc của biểu đồ
Để thay đổi màu sắc của biểu đồ, chúng ta chỉ cần sửa lại những dòng code sau:
color1 = ‘green’
color2 = ‘purple’
Xem thêm:
Khóa học Xử lý và Trực quan hóa dữ liệu với Python
Khóa học Ứng dụng Dashboard Reporting trong Excel