Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Tôi đang làm việc trên một dự án phụ nên tôi không có nhiều thời gian để viết blog. Hy vọng rằng tôi sẽ sớm có thể chia sẻ thêm về dự án đó

Trong thời gian chờ đợi, tôi muốn viết một bài về đầu ra kiểu dáng trong gấu trúc. API dành cho kiểu dáng hơi mới và đang được phát triển rất tích cực. Nó chứa một bộ công cụ hữu ích để định kiểu đầu ra của DataFrames và Series gấu trúc của bạn. Theo cách sử dụng của riêng tôi, tôi có xu hướng chỉ sử dụng một nhóm nhỏ các tùy chọn có sẵn nhưng dường như tôi luôn quên các chi tiết. Bài viết này sẽ trình bày các ví dụ về cách định dạng số trong DataFrame của gấu trúc và sử dụng một số tùy chọn trực quan hóa kiểu dáng gấu trúc nâng cao hơn để cải thiện khả năng phân tích dữ liệu của bạn với gấu trúc.

Phong cách là gì và tại sao phải quan tâm?

Ý tưởng cơ bản đằng sau kiểu dáng là người dùng sẽ muốn sửa đổi cách trình bày dữ liệu nhưng vẫn giữ nguyên định dạng cơ bản để thao tác thêm

Ví dụ về kiểu dáng đơn giản nhất là sử dụng ký hiệu tiền tệ khi làm việc với các giá trị tiền tệ. Chẳng hạn, nếu dữ liệu của bạn chứa giá trị 25. 00, bạn không biết ngay nếu giá trị bằng đô la, bảng Anh, euro hay một số loại tiền tệ khác. Nếu con số là 25 đô la thì ý nghĩa là rõ ràng

Tỷ lệ phần trăm là một ví dụ hữu ích khác trong đó định dạng đầu ra giúp hiểu phân tích cơ bản đơn giản hơn. Ví dụ, cái nào nhanh hơn để hiểu. . 05 hay 5%?

Mục quan trọng cần lưu ý là kiểu dáng trình bày dữ liệu sao cho con người có thể đọc được nhưng vẫn giữ dữ liệu ở cùng một loại dữ liệu gấu trúc để bạn có thể thực hiện các hàm toán học, ngày tháng hoặc chuỗi gấu trúc bình thường của mình

Kiểu dáng gấu trúc cũng bao gồm các công cụ nâng cao hơn để thêm màu sắc hoặc các yếu tố hình ảnh khác vào đầu ra. Tài liệu về gấu trúc có một số ví dụ thực sự hay nhưng nó có thể hơi quá sức nếu bạn mới bắt đầu. Phần còn lại của bài viết này sẽ đi qua các ví dụ về cách sử dụng kiểu dáng để cải thiện khả năng đọc bản phân tích cuối cùng của bạn

Định kiểu dữ liệu

Hãy bắt đầu bằng cách xem xét một số dữ liệu. Đối với ví dụ này, chúng tôi sẽ sử dụng một số dữ liệu bán hàng năm 2018 cho một tổ chức hư cấu. Chúng ta sẽ giả làm nhà phân tích tìm kiếm xu hướng bán hàng cấp cao cho năm 2018. Tất cả dữ liệu và sổ ghi chép ví dụ đều có trên github. Vui lòng lưu ý rằng kiểu dáng dường như không hiển thị chính xác trong github nhưng nếu bạn chọn tải sổ ghi chép xuống thì nó sẽ trông ổn

Nhập các thư viện cần thiết và đọc trong dữ liệu

import numpy as np
import pandas as pd

df = pd.read_excel('2018_Sales_Total.xlsx')

Dữ liệu bao gồm các dòng giao dịch bán hàng giống như thế này

số tài khoảnnameskuquantityđơn giáext pricedate0740150Barton LLC B1-200003986. 693380. 912018-01-01 07. 21. 511714466Trantow-BarrowsS2-77896-163. 16-63. 162018-01-01 10. 00. 472218895Kulas IncB1-699242390. 702086. 102018-01-01 13. 24. 583307599Kassulke, Ondricka và MetzS1-654814121. 05863. 052018-01-01 15. 05. 224412290Jerde-HilpertS2-34077683. 21499. 262018-01-01 23. 26. 55

Với dữ liệu này, chúng tôi có thể tóm tắt nhanh để xem số lượng khách hàng đã mua từ chúng tôi và số tiền mua trung bình của họ trông như thế nào

df.groupby('name')['ext price'].agg(['mean', 'sum'])

meansumnameBarton LLC 1334. 615854109438. 50Cronin, Oberbrunner và Spencer1339. 32164289734. 55Frami, Hills và Schmidt1438. 466528103569. 59 Fritsch, Russell và Anderson 1385. 366790112214. 71Halvorson, Crona và Champlin1206. 97172470004. 36

Để đơn giản, tôi chỉ hiển thị 5 mục hàng đầu và sẽ tiếp tục cắt bớt dữ liệu trong suốt bài viết để giữ cho nó ngắn gọn

Khi bạn nhìn vào dữ liệu này, sẽ có một chút khó khăn để hiểu tỷ lệ của các con số vì bạn có 6 điểm thập phân và số hơi lớn. Ngoài ra, không rõ ngay lập tức nếu đây là đô la hoặc một số loại tiền tệ khác. Chúng tôi có thể khắc phục điều đó bằng cách sử dụng DataFrame

df.groupby('name')['ext price'].agg(['mean', 'sum'])
1

(df.groupby('name')['ext price']
 .agg(['mean', 'sum'])
 .style.format('${0:,.2f}'))

Đây là giao diện hiện tại

Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Sử dụng hàm

df.groupby('name')['ext price'].agg(['mean', 'sum'])
2, chúng ta có thể sử dụng tất cả sức mạnh của các công cụ định dạng chuỗi của python trên dữ liệu. Trong trường hợp này, chúng tôi sử dụng
df.groupby('name')['ext price'].agg(['mean', 'sum'])
3 để đặt ký hiệu đô la ở đầu, thêm dấu phẩy và làm tròn kết quả đến 2 chữ số thập phân

Ví dụ chúng ta muốn làm tròn đến 0 chữ số thập phân thì có thể đổi định dạng thành

df.groupby('name')['ext price'].agg(['mean', 'sum'])
4

(df.groupby('name')['ext price']
 .agg(['mean', 'sum'])
 .style.format('${0:,.0f}'))

Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Nếu bạn giống tôi và luôn quên cách thực hiện việc này, tôi thấy Sách hướng dẫn định dạng chuỗi Python là một tài liệu tham khảo nhanh tốt. Định dạng chuỗi là một trong những yếu tố cú pháp mà tôi luôn quên nên tôi hy vọng bài viết này cũng sẽ giúp được những người khác

Bây giờ chúng ta đã thực hiện một số kiểu tạo kiểu cơ bản, hãy mở rộng phân tích này để thể hiện một số kỹ năng tạo kiểu khác

Nếu muốn xem tổng doanh số bán hàng theo từng tháng, chúng ta có thể sử dụng bảng nhóm để tóm tắt theo tháng và cũng tính toán số tiền mỗi tháng là bao nhiêu dưới dạng phần trăm của tổng doanh số hàng năm

________số 8

Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Chúng tôi biết cách tạo kiểu cho các số của mình nhưng giờ đây chúng tôi có sự kết hợp giữa ngày tháng, tỷ lệ phần trăm và tiền tệ. May mắn thay, chúng ta có thể sử dụng từ điển để xác định một chuỗi định dạng duy nhất cho mỗi cột. Điều này thực sự tiện dụng và mạnh mẽ

format_dict = {'sum':'${0:,.0f}', 'date': '{:%m-%Y}', 'pct_of_total': '{:.2%}'}
monthly_sales.style.format(format_dict).hide_index()

Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Tôi nghĩ rằng đó là khá mát mẻ. Khi phát triển các báo cáo đầu ra cuối cùng, loại linh hoạt này khá hữu ích. Độc giả tinh ý có thể nhận thấy rằng chúng tôi không hiển thị chỉ mục trong ví dụ này. Hàm

df.groupby('name')['ext price'].agg(['mean', 'sum'])
5 chặn hiển thị chỉ mục - rất hữu ích trong nhiều trường hợp

Ngoài việc tạo kiểu cho các số, chúng ta cũng có thể tạo kiểu cho các ô trong DataFrame. Hãy đánh dấu số cao nhất bằng màu xanh lục và số thấp nhất bằng màu Trinidad (#cd4f39)

df.groupby('name')['ext price'].agg(['mean', 'sum'])
1

Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Một mục cần làm nổi bật là tôi đang sử dụng chuỗi phương thức để xâu chuỗi nhiều lời gọi hàm cùng một lúc. Đây là một cách tiếp cận rất hiệu quả để phân tích dữ liệu và tôi khuyến khích bạn sử dụng khi bạn tiến xa hơn về trình độ gấu trúc của mình. Tôi khuyên bạn nên đăng bài của Tom Augspurger để tìm hiểu thêm về chủ đề này

Một chức năng hữu ích khác là

df.groupby('name')['ext price'].agg(['mean', 'sum'])
6 có thể làm nổi bật phạm vi giá trị trong một cột

df.groupby('name')['ext price'].agg(['mean', 'sum'])
3

Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Ví dụ trên minh họa việc sử dụng tham số

df.groupby('name')['ext price'].agg(['mean', 'sum'])
7 để áp dụng các hàm cho chỉ một cột dữ liệu. Ngoài ra, đối số
df.groupby('name')['ext price'].agg(['mean', 'sum'])
8 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

Tạo kiểu với Thanh

Chức năng tạo kiểu gấu trúc cũng hỗ trợ vẽ biểu đồ thanh trong cột

Sau đây là cách thực hiện

df.groupby('name')['ext price'].agg(['mean', 'sum'])
6

Làm cách nào để định dạng một cột thành tỷ lệ phần trăm trong python?

Ví dụ này giới thiệu hàm

df.groupby('name')['ext price'].agg(['mean', 'sum'])
9 và một số tham số để định cấu hình cách nó được hiển thị trong bảng. Cuối cùng, điều này bao gồm việc sử dụng
(df.groupby('name')['ext price']
 .agg(['mean', 'sum'])
 .style.format('${0:,.2f}'))
0 để thêm chú thích đơn giản vào đầu bảng

Ví dụ tiếp theo không sử dụng kiểu dáng gấu trúc nhưng tôi nghĩ đó là một ví dụ thú vị mà tôi muốn đưa vào. Ví dụ cụ thể này là của Peter Baumgartner và sử dụng mô-đun biểu đồ thu nhỏ để nhúng một biểu đồ nhỏ vào DataFrame tóm tắt

Làm cách nào để chuyển đổi chuỗi gấu trúc thành tỷ lệ phần trăm?

Vấn đề Python Pandas Convert Series To Percent đã được khắc phục bằng cách sử dụng nhiều ví dụ khác nhau. .
Xác định tổng số tiền bạn muốn tìm một tỷ lệ phần trăm
Chia số để xác định tỷ lệ phần trăm
Nhân giá trị với 100

Làm cách nào để chuyển đổi số thập phân thành tỷ lệ phần trăm trong gấu trúc?

Thay đổi cột có chuỗi phần trăm thành float pandas dataframe. Vì vậy, về cơ bản điều này. , pct_intl_student 2979 0 2880 0. 09 2881 NaN 2882 0. 01 2883 NaN Name. pct_intl_student, Độ dài. 2884, loại. đối tượng Tôi cần giữ nguyên giá trị NaN, chúng sẽ được chuyển đổi thành số phần trăm trung bình sau đó.