Ý tưởng cơ bản đằng sau kiểu dáng là tận dụng các công cụ hỗ trợ trực quan như màu sắc và định dạng để truyền đạt thông tin chi tiết hiệu quả hơn
Một trong những cách phổ biến nhất để trực quan hóa tập dữ liệu là sử dụng bảng. Các bảng cho phép người tiêu dùng dữ liệu của bạn thu thập thông tin chi tiết bằng cách đọc dữ liệu cơ bản. Ví dụ: bạn có thể thấy mình trong các tình huống mà bạn muốn cung cấp cho người tiêu dùng của mình quyền truy cập vào dữ liệu cơ bản bằng cách sử dụng bảng
Trong bài viết này, bạn sẽ tìm hiểu cách thêm trực quan hóa vào khung dữ liệu gấu trúc bằng cách sử dụng kiểu dáng và tùy chọn/cài đặt của gấu trúc. Bản thân tài liệu về Pandas khá toàn diện, nhưng nếu bạn đang tìm kiếm phần giới thiệu thân thiện hơn một chút, tôi nghĩ bạn đã đến đúng nơi. Tôi sẽ sử dụng “Bộ dữ liệu lương San Fransisco” của kaggle làm ví dụ, như mọi khi chúng tôi bắt đầu bằng cách tải bộ dữ liệu bằng gấu trúc
Mã gấu trúc để tải tập dữ liệu và một số thao tác trộn dữ liệu cơ bản
df = pd.read_csv['Salaries.csv']\
.replace['Not Provided', np.nan]\
.astype[{"BasePay":float, "OtherPay":float}]
Đây là khung dữ liệu kết xuất của “San Francisco Salaries”Pandas Tùy chọn/Cài đặt API
Pandas có một hệ thống tùy chọn cho phép bạn tùy chỉnh một số khía cạnh trong hành vi của nó, ở đây chúng tôi sẽ tập trung vào các tùy chọn liên quan đến hiển thị. Bạn có thể đã gặp phải các vấn đề sau khi sử dụng khi bạn kết xuất khung dữ liệu
- Có quá nhiều cột/hàng trong khung dữ liệu và một số cột/hàng ở giữa bị bỏ qua trên màn hình.
Ví dụ: nếu một người muốn hiển thị nhiều nhất 7 hàng và nhiều nhất 7 cột thì người đó sẽ.
- Các cột chứa văn bản dài bị cắt bớt và các cột chứa số float chỉ hiển thị quá nhiều/quá ít chữ số trên màn hình
- Và còn nhiều nữa
Như chúng tôi đã đề cập, gấu trúc cũng có một hệ thống tạo kiểu cho phép bạn tùy chỉnh một số khía cạnh của khung dữ liệu được kết xuất của nó, sử dụng CSS. Bạn viết một "hàm kiểu" lấy vô hướng,
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
3 hoặc df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
0 và trả về các Khung dữ liệu hoặc Sê-ri được lập chỉ mục tương tự với các cặp CSS df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
1 cho các giá trịVí dụ về kiểu dáng đơn giản nhất là sử dụng các ký hiệu tiền tệ khi làm việc với các giá trị tiền tệ. Ví dụ: trong dữ liệu của chúng tôi, một số cột [BasePay, OtherPay, TotalPay và TotalPayBenefit] là giá trị tiền tệ, vì vậy chúng tôi muốn thêm ký hiệu đô la và dấu phẩy. Điều này có thể được thực hiện bằng cách sử dụng chức năng
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
2Mã gấu trúc để hiển thị khung dữ liệu với định dạng cột tiền tệ
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
Các hàm tạo kiểu này có thể được chuyển dần dần đến
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
3 để thu thập các kiểu trước khi hiển thị, do đó nếu chúng ta muốn thêm một hàm định dạng cả Tên nhân viên và Tên công ty, điều này có thể được thực hiện bằng cách sử dụng một hàm df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
2 khácMã gấu trúc để hiển thị khung dữ liệu cũng định dạng một số cột thành chữ thường
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]\
.format[{"JobTitle": lambda x:x.lower[],
"EmployeeName": lambda x:x.lower[]}]
Bây giờ có vẻ tốt hơn rất nhiều, nhưng hãy tiến lên một bước. Chỉ mục ở đây không thêm bất kỳ thông tin thực nào, chúng ta có thể sử dụng hàm
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
5 để chặn hiển thị chỉ mục bằng đoạn mã sauMã gấu trúc để hiển thị khung dữ liệu được định dạng mà không có chỉ mục
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]\
.format[{"JobTitle": lambda x:x.lower[],
"EmployeeName": lambda x:x.lower[]}]\
.hide_index[]
Có loại linh hoạt này khi kết xuất tập dữ liệu của chúng tôi khá mạnh mẽ và hữu ích, nhưng điều đó chỉ đơn giản là KHÔNG ĐỦ. Bạn có thể áp dụng định dạng có điều kiện, kiểu dáng trực quan của DataFrame tùy thuộc vào dữ liệu thực tế bên trong. Ví dụ đơn giản nhất là các hàm dựng sẵn trong API kiểu, chẳng hạn, người ta có thể đánh dấu số cao nhất bằng màu xanh lá cây và số thấp nhất bằng màu
Mã gấu trúc cũng làm nổi bật các giá trị tối thiểu/tối đa
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
0Một chức năng hữu ích khác là ________ 16 có thể làm nổi bật phạm vi giá trị trong một cột. Ngoài ra, đối số
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
7 cho phép chúng ta chọn bảng màu cho gradient. Tài liệu matplotlib liệt kê tất cả các tùy chọn có sẵn [seaborn cũng có một số tùy chọn]Mã gấu trúc cũng thêm độ dốc nền
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
3Người ta thậm chí có thể sử dụng
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
8khi phong cách không thực sự phụ thuộc vào các giá trị. Trong ví dụ này, chúng tôi sẽ hiển thị tập dữ liệu của mình với nền đen và màu xanh lục cho chính văn bảnMã gấu trúc để hiển thị khung dữ liệu được định dạng theo cùng một cách cho từng ô
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
5Nhưng thành thật mà nói, hầu hết thời gian chúng tôi muốn thay đổi các thuộc tính trực quan hóa tùy thuộc vào các giá trị và điều chúng tôi muốn nhấn mạnh, chúng tôi có thể sử dụng một trong những cách sau để giúp đạt được mục tiêu của mình
df.head[10].style.format[{"BasePay": "${:20,.0f}",
9 cho phong cách phần tử khôn ngoan
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]df.head[10].style.format[{"BasePay": "${:20,.0f}",
0 cho các kiểu theo cột
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]\
.format[{"JobTitle": lambda x:x.lower[],
"EmployeeName": lambda x:x.lower[]}]df.head[10].style.format[{"BasePay": "${:20,.0f}",
1 cho các kiểu theo hàng
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]\
.format[{"JobTitle": lambda x:x.lower[],
"EmployeeName": lambda x:x.lower[]}]df.head[10].style.format[{"BasePay": "${:20,.0f}",
2 cho phong cách tablewise
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]\
.format[{"JobTitle": lambda x:x.lower[],
"EmployeeName": lambda x:x.lower[]}]
Ví dụ đầu tiên là Làm nổi bật tất cả các giá trị âm trong khung dữ liệu
Mã gấu trúc để hiển thị khung dữ liệu được định dạng với màu phông chữ đã thay đổi nếu giá trị là một chuỗi
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
0Cuối cùng, API tạo kiểu gấu trúc cũng hỗ trợ kiểu nâng cao hơn như vẽ biểu đồ thanh trong các cột, chúng tôi sẽ giới thiệu ở đây hàm
df.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]\
.format[{"JobTitle": lambda x:x.lower[],
"EmployeeName": lambda x:x.lower[]}]
3 và một số tham số để định cấu hình cách hiển thị trong bảngdf.head[10].style.format[{"BasePay": "${:20,.0f}",
"OtherPay": "${:20,.0f}",
"TotalPay": "${:20,.0f}",
"TotalPayBenefits":"${:20,.0f}"}]
2Phần kết luận
API kiểu gấu trúc và API tùy chọn thực sự hữu ích khi bạn đi đến cuối phân tích dữ liệu của mình và cần trình bày kết quả cho người khác. Có một vài thành phần phức tạp đối với định dạng chuỗi, vì vậy hy vọng rằng các mục được đánh dấu ở đây sẽ hữu ích cho bạn