DataFrame là cấu trúc dữ liệu gấu trúc hai chiều, được sử dụng để biểu thị dữ liệu dạng bảng ở định dạng hàng và cột
Chúng ta có thể tạo một đối tượng DataFrame của gấu trúc bằng cách sử dụng danh sách từ điển python. Nếu chúng ta sử dụng từ điển làm dữ liệu cho hàm DataFrame thì chúng ta không cần chỉ định tên cột một cách rõ ràng
Ở đây, chúng tôi sẽ tạo DataFrame bằng danh sách từ điển, trong ví dụ dưới đây
Ví dụ
# Creating list of dictionaries li = [{'i': 10, 'j': 20, 'k': 30},{'i': 8, 'j': 40, 'k': 60},{'i': 6, 'j': 60, 'k': 90}] # creating dataframe df = pd.DataFrame[l, index=[100,101,102]] #display the output print[df]
Giải trình
Danh sách li có một danh sách từ điển, ở đây các khóa của mỗi từ điển được biểu thị dưới dạng nhãn cột và giá trị của từ điển được biểu thị dưới dạng dữ liệu [giá trị] của DataFrame. Nếu bạn muốn thay đổi nhãn hàng mặc định thì bạn có thể sử dụng các tham số chỉ mục như ví dụ trên
đầu ra
i j k 100 10 20 30 101 8 40 60 102 6 60 90
Đầu ra của đối tượng DataFrame 'df' được hiển thị trong khối trên, nhãn cột được tự động lấy theo khóa từ điển và nhãn hàng được xác định bằng cách sử dụng tham số chỉ mục
Ví dụ
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]
Giải trình
Trong ví dụ sau đây, các khóa trong danh sách từ điển không giống nhau, do đó, chúng tôi sẽ lấy dữ liệu bị thiếu làm thành phần trong Đối tượng DataFrame kết quả
đầu ra
A B C J 0 10 89 43.0 NaN 1 88 7 NaN 50.0 2 9 8 12.0 NaN
Chúng ta có thể thấy các giá trị NaN trong đối tượng DataFrame ở trên. Vì không có dữ liệu được xác định trong danh sách từ điển cho cột J
Tiện ích dòng lệnh sẽ được cài đặt từ
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 đến
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob5 trên Linux [e. g.
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob6]; . g.
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob9]
Bạn có thể cân nhắc chỉ cài đặt thư viện cho người dùng hiện tại
i j k 100 10 20 30 101 8 40 60 102 6 60 900
Trong trường hợp này, tiện ích dòng lệnh sẽ được cài đặt vào
i j k 100 10 20 30 101 8 40 60 102 6 60 9010 trên Linux và
i j k 100 10 20 30 101 8 40 60 102 6 60 9011 trên Windows
Để chỉ cài đặt thư viện trên các hệ điều hành giống Unix
i j k 100 10 20 30 101 8 40 60 102 6 60 903
Trên Windows
i j k 100 10 20 30 101 8 40 60 102 6 60 904
trạng thái xây dựng
sử dụng thư viện
Mô-đun chỉ cung cấp một hàm,
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4, lấy danh sách các danh sách hoặc kiểu dữ liệu dạng bảng khác làm đối số đầu tiên và xuất ra một bảng văn bản thuần túy được định dạng đẹp mắt
i j k 100 10 20 30 101 8 40 60 102 6 60 906
Các kiểu dữ liệu dạng bảng sau đây được hỗ trợ
- danh sách các danh sách hoặc một lần lặp khác của các lần lặp
- list hoặc một lần lặp khác của dicts [phím dưới dạng cột]
- dict của iterables [phím dưới dạng cột]
- danh sách các lớp dữ liệu [Python 3. 7+, tên trường dưới dạng cột]
- mảng NumPy hai chiều
- Mảng bản ghi NumPy [tên dưới dạng cột]
- gấu trúc. Khung dữ liệu
Lập bảng là một thư viện Python3
tiêu đề
Đối số tùy chọn thứ hai có tên là
i j k 100 10 20 30 101 8 40 60 102 6 60 9013 xác định danh sách các tiêu đề cột sẽ được sử dụng
i j k 100 10 20 30 101 8 40 60 102 6 60 908
Nếu
i j k 100 10 20 30 101 8 40 60 102 6 60 9014, thì hàng dữ liệu đầu tiên được sử dụng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]0
Nếu
i j k 100 10 20 30 101 8 40 60 102 6 60 9015, thì các khóa của từ điển/khung dữ liệu hoặc chỉ mục cột được sử dụng. Nó cũng hoạt động đối với mảng bản ghi NumPy và danh sách từ điển hoặc bộ dữ liệu được đặt tên
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob
Chỉ số hàng
Theo mặc định, chỉ gấu trúc. Các bảng DataFrame có một cột bổ sung được gọi là chỉ mục hàng. Để thêm một cột tương tự vào bất kỳ loại bảng nào khác, hãy chuyển đối số
i j k 100 10 20 30 101 8 40 60 102 6 60 9016 hoặc
i j k 100 10 20 30 101 8 40 60 102 6 60 9017 cho
i j k 100 10 20 30 101 8 40 60 102 6 60 9018. Để chặn các chỉ số hàng cho tất cả các loại dữ liệu, hãy vượt qua
i j k 100 10 20 30 101 8 40 60 102 6 60 9019 hoặc
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]70. Để thêm cột chỉ mục hàng tùy chỉnh, hãy vượt qua
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]71, trong đó
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]72 là một số có thể lặp lại
i j k 100 10 20 30 101 8 40 60 102 6 60 901
Định dạng bảng
Có nhiều cách để định dạng bảng ở dạng văn bản thuần túy. Đối số tùy chọn thứ ba có tên là
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]73 xác định cách định dạng bảng
Các định dạng bảng được hỗ trợ là
- "trơn"
- "giản dị"
- "github"
- "lưới"
- "simple_grid"
- "rounded_grid"
- "heavy_grid"
- "mixed_grid"
- "lưới đôi"
- "fancy_grid"
- "đề cương"
- "simple_outline"
- "rounded_outline"
- "heavy_outline"
- "mixed_outline"
- "double_outline"
- "fancy_outline"
- "đường ống"
- "orgtbl"
- "asciidoc"
- "jira"
- "mau"
- "khá"
- "psql"
- "đầu tiên"
- "mediawiki"
- "moinmo"
- "theo dõi"
- "html"
- "không an toànhtml"
- "mủ cao su"
- "latex_raw"
- "latex_booktabs"
- "bàn dài cao su"
- "dệt may"
- "tsv"
Bảng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]74 không sử dụng bất kỳ đồ họa giả nào để vẽ đường
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]7
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]75 là định dạng mặc định [mặc định có thể thay đổi trong các phiên bản sau]. Nó tương ứng với
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]76 trong
i j k 100 10 20 30 101 8 40 60 102 6 60 9000
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]77 tuân theo các quy ước của Markdown có hương vị GitHub. Nó tương ứng với định dạng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]78 không có dấu hai chấm căn chỉnh
i j k 100 10 20 30 101 8 40 60 102 6 60 9001
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]79 giống như các bảng được định dạng bởi bảng của Emacs. gói el. Nó tương ứng với
i j k 100 10 20 30 101 8 40 60 102 6 60 90000 trong phần mở rộng Pandoc Markdown
i j k 100 10 20 30 101 8 40 60 102 6 60 9002
i j k 100 10 20 30 101 8 40 60 102 6 60 90001 vẽ lưới bằng các ký tự vẽ hộp một dòng
i j k 100 10 20 30 101 8 40 60 102 6 60 9003
i j k 100 10 20 30 101 8 40 60 102 6 60 90002 vẽ lưới bằng các ký tự vẽ hộp một dòng với các góc tròn
i j k 100 10 20 30 101 8 40 60 102 6 60 9004
i j k 100 10 20 30 101 8 40 60 102 6 60 90003 vẽ một lưới bằng cách sử dụng các ký tự vẽ hộp một dòng đậm [dày]
i j k 100 10 20 30 101 8 40 60 102 6 60 9005
i j k 100 10 20 30 101 8 40 60 102 6 60 90004 vẽ một lưới bằng cách sử dụng kết hợp các ký tự vẽ hộp có đường kẻ nhẹ [mỏng] và nặng [dày]
i j k 100 10 20 30 101 8 40 60 102 6 60 9006
i j k 100 10 20 30 101 8 40 60 102 6 60 90005 vẽ lưới bằng các ký tự vẽ hộp hai dòng
i j k 100 10 20 30 101 8 40 60 102 6 60 9007
i j k 100 10 20 30 101 8 40 60 102 6 60 90006 vẽ một lưới bằng cách sử dụng kết hợp các ký tự vẽ hộp một dòng và hai dòng
i j k 100 10 20 30 101 8 40 60 102 6 60 9008
i j k 100 10 20 30 101 8 40 60 102 6 60 90007 giống như định dạng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]79 nhưng không vẽ đường giữa các hàng
i j k 100 10 20 30 101 8 40 60 102 6 60 9009
i j k 100 10 20 30 101 8 40 60 102 6 60 90009 giống định dạng của
i j k 100 10 20 30 101 8 40 60 102 6 60 90001 nhưng không vẽ đường kẻ giữa các hàng
i j k 100 10 20 30 101 8 40 60 102 6 60 9030
i j k 100 10 20 30 101 8 40 60 102 6 60 90011 giống định dạng của
i j k 100 10 20 30 101 8 40 60 102 6 60 90002 nhưng không vẽ đường kẻ giữa các hàng
i j k 100 10 20 30 101 8 40 60 102 6 60 9031
i j k 100 10 20 30 101 8 40 60 102 6 60 90013 giống như định dạng của
i j k 100 10 20 30 101 8 40 60 102 6 60 90003 nhưng không vẽ đường kẻ giữa các hàng
i j k 100 10 20 30 101 8 40 60 102 6 60 9032
i j k 100 10 20 30 101 8 40 60 102 6 60 90015 giống như định dạng của
i j k 100 10 20 30 101 8 40 60 102 6 60 90004 nhưng không vẽ đường kẻ giữa các hàng
i j k 100 10 20 30 101 8 40 60 102 6 60 9033
i j k 100 10 20 30 101 8 40 60 102 6 60 90017 giống như định dạng của
i j k 100 10 20 30 101 8 40 60 102 6 60 90005 nhưng không có đường kẻ giữa các hàng
i j k 100 10 20 30 101 8 40 60 102 6 60 9034
i j k 100 10 20 30 101 8 40 60 102 6 60 90019 giống như định dạng của
i j k 100 10 20 30 101 8 40 60 102 6 60 90006 nhưng không có đường kẻ giữa các hàng
i j k 100 10 20 30 101 8 40 60 102 6 60 9035
i j k 100 10 20 30 101 8 40 60 102 6 60 90021 giống như các bảng được định dạng bởi Presto cli
i j k 100 10 20 30 101 8 40 60 102 6 60 9036
i j k 100 10 20 30 101 8 40 60 102 6 60 90022 cố gắng gần với định dạng do thư viện PrettyTables phát ra
i j k 100 10 20 30 101 8 40 60 102 6 60 9037
i j k 100 10 20 30 101 8 40 60 102 6 60 90023 giống như các bảng được định dạng bởi psql cli của Postgres
i j k 100 10 20 30 101 8 40 60 102 6 60 9038
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]78 tuân theo các quy ước mở rộng. Nó tương ứng với
i j k 100 10 20 30 101 8 40 60 102 6 60 90025 trong Pandoc. Định dạng này sử dụng dấu hai chấm để biểu thị căn chỉnh cột
i j k 100 10 20 30 101 8 40 60 102 6 60 9039
i j k 100 10 20 30 101 8 40 60 102 6 60 90026 định dạng dữ liệu giống như một bảng đơn giản có định dạng
i j k 100 10 20 30 101 8 40 60 102 6 60 9040
i j k 100 10 20 30 101 8 40 60 102 6 60 90027 tuân theo các quy ước của chế độ tổ chức Emacs và cũng có thể chỉnh sửa được ở chế độ tổ chức nhỏ. Do đó tên của nó
i j k 100 10 20 30 101 8 40 60 102 6 60 9041
i j k 100 10 20 30 101 8 40 60 102 6 60 90028 tuân theo các quy ước của ngôn ngữ đánh dấu Atlassian Jira
i j k 100 10 20 30 101 8 40 60 102 6 60 9042
i j k 100 10 20 30 101 8 40 60 102 6 60 90029 định dạng dữ liệu giống như một bảng đơn giản có định dạng
i j k 100 10 20 30 101 8 40 60 102 6 60 9043
Định dạng
i j k 100 10 20 30 101 8 40 60 102 6 60 90030 tạo ra một đánh dấu bảng được sử dụng trong Wikipedia và trên các trang dựa trên MediaWiki khác
i j k 100 10 20 30 101 8 40 60 102 6 60 9044
Định dạng ________ 1031 tạo ra một đánh dấu bảng được sử dụng trong MoinMoin wiki
i j k 100 10 20 30 101 8 40 60 102 6 60 9045
Định dạng
i j k 100 10 20 30 101 8 40 60 102 6 60 90032 tạo đánh dấu bảng được sử dụng trong vé Youtrack
i j k 100 10 20 30 101 8 40 60 102 6 60 9046
Định dạng
i j k 100 10 20 30 101 8 40 60 102 6 60 90033 tạo đánh dấu bảng được sử dụng ở định dạng Dệt may
i j k 100 10 20 30 101 8 40 60 102 6 60 9047
i j k 100 10 20 30 101 8 40 60 102 6 60 90034 tạo đánh dấu HTML tiêu chuẩn dưới dạng html. escape'd str với một. repr_html để Jupyter Lab và Notebook hiển thị HTML và. str để HTML thô vẫn có thể truy cập được. Định dạng bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 90035 có thể được sử dụng nếu cần có HTML không thoát
i j k 100 10 20 30 101 8 40 60 102 6 60 9048
Định dạng
i j k 100 10 20 30 101 8 40 60 102 6 60 90036 tạo môi trường
i j k 100 10 20 30 101 8 40 60 102 6 60 90037 cho đánh dấu LaTeX, thay thế các ký tự đặc biệt như
i j k 100 10 20 30 101 8 40 60 102 6 60 90038 hoặc
i j k 100 10 20 30 101 8 40 60 102 6 60 90039 thành ký tự tương ứng LaTeX của chúng
i j k 100 10 20 30 101 8 40 60 102 6 60 9049
i j k 100 10 20 30 101 8 40 60 102 6 60 90040 hoạt động giống như
i j k 100 10 20 30 101 8 40 60 102 6 60 90036 nhưng không thoát khỏi các lệnh LaTeX và các ký tự đặc biệt
i j k 100 10 20 30 101 8 40 60 102 6 60 90042 tạo môi trường
i j k 100 10 20 30 101 8 40 60 102 6 60 90037 cho đánh dấu LaTeX bằng cách sử dụng khoảng cách và kiểu từ gói
i j k 100 10 20 30 101 8 40 60 102 6 60 90044
i j k 100 10 20 30 101 8 40 60 102 6 60 90045 tạo một bảng có thể trải dài trên nhiều trang, sử dụng gói
i j k 100 10 20 30 101 8 40 60 102 6 60 90046
Căn chỉnh cột
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 thông minh trong việc căn chỉnh cột. Nó phát hiện các cột chỉ chứa số và căn chỉnh chúng theo dấu thập phân [hoặc xóa chúng sang bên phải nếu chúng có vẻ là số nguyên]. Các cột văn bản được tuôn ra bên trái
Bạn có thể ghi đè căn chỉnh mặc định bằng các đối số có tên
i j k 100 10 20 30 101 8 40 60 102 6 60 90048 và
i j k 100 10 20 30 101 8 40 60 102 6 60 90049. Các sắp xếp cột có thể là.
i j k 100 10 20 30 101 8 40 60 102 6 60 90050,
i j k 100 10 20 30 101 8 40 60 102 6 60 90051,
i j k 100 10 20 30 101 8 40 60 102 6 60 90052,
i j k 100 10 20 30 101 8 40 60 102 6 60 90053 [chỉ dành cho số] và
i j k 100 10 20 30 101 8 40 60 102 6 60 90054 [để tắt căn chỉnh]
Căn chỉnh theo dấu thập phân hoạt động tốt nhất khi bạn cần so sánh các số trong nháy mắt
i j k 100 10 20 30 101 8 40 60 102 6 60 9060
So sánh điều này với một căn lề phải phổ biến hơn
i j k 100 10 20 30 101 8 40 60 102 6 60 9061
Đối với
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4, bất kỳ thứ gì có thể được phân tích dưới dạng số đều là số. Các số chẵn được biểu diễn dưới dạng các chuỗi được căn chỉnh chính xác. Tính năng này rất hữu ích khi đọc một bảng hỗn hợp văn bản và số từ một tệp
i j k 100 10 20 30 101 8 40 60 102 6 60 9062
Để tắt tính năng này, hãy sử dụng
i j k 100 10 20 30 101 8 40 60 102 6 60 90056
i j k 100 10 20 30 101 8 40 60 102 6 60 9063
Căn chỉnh cột tùy chỉnh
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 cho phép căn chỉnh cột tùy chỉnh để ghi đè ở trên. Đối số
i j k 100 10 20 30 101 8 40 60 102 6 60 90058 có thể là một danh sách hoặc một bộ gồm các đối số có tên
i j k 100 10 20 30 101 8 40 60 102 6 60 90049. Các sắp xếp cột có thể là.
i j k 100 10 20 30 101 8 40 60 102 6 60 90050,
i j k 100 10 20 30 101 8 40 60 102 6 60 90051,
i j k 100 10 20 30 101 8 40 60 102 6 60 90052,
i j k 100 10 20 30 101 8 40 60 102 6 60 90053 [chỉ dành cho số] và
i j k 100 10 20 30 101 8 40 60 102 6 60 90054 [để tắt căn chỉnh]. Bỏ qua căn chỉnh sử dụng mặc định. Ví dụ
i j k 100 10 20 30 101 8 40 60 102 6 60 9064
định dạng số
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 cho phép xác định định dạng số tùy chỉnh được áp dụng cho tất cả các cột số thập phân. Sử dụng đối số có tên
i j k 100 10 20 30 101 8 40 60 102 6 60 90066
i j k 100 10 20 30 101 8 40 60 102 6 60 9065
Đối số
i j k 100 10 20 30 101 8 40 60 102 6 60 90066 có thể là một danh sách hoặc một bộ chuỗi định dạng, mỗi chuỗi một cột, trong trường hợp đó, mỗi cột có thể có định dạng số khác nhau
i j k 100 10 20 30 101 8 40 60 102 6 60 9066
i j k 100 10 20 30 101 8 40 60 102 6 60 90068 hoạt động tương tự cho số nguyên
i j k 100 10 20 30 101 8 40 60 102 6 60 9067
định dạng văn bản
Theo mặc định,
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 xóa khoảng trắng ở đầu và cuối khỏi các cột văn bản. Để tắt tính năng xóa khoảng trắng, hãy đặt cờ cấp mô-đun toàn cầu
i j k 100 10 20 30 101 8 40 60 102 6 60 90070
i j k 100 10 20 30 101 8 40 60 102 6 60 9068
Biểu tượng rộng [toàn chiều rộng CJK]
Để căn chỉnh chính xác các bảng có chứa các ký tự rộng [thường là các nét chữ có chiều rộng đầy đủ từ các ngôn ngữ Trung Quốc, Nhật Bản hoặc Hàn Quốc], người dùng nên cài đặt thư viện
i j k 100 10 20 30 101 8 40 60 102 6 60 90071. Để cài đặt nó cùng với
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4
i j k 100 10 20 30 101 8 40 60 102 6 60 9069
Hỗ trợ ký tự rộng được bật tự động nếu thư viện
i j k 100 10 20 30 101 8 40 60 102 6 60 90071 đã được cài đặt. Để tắt hỗ trợ ký tự rộng mà không cần gỡ cài đặt
i j k 100 10 20 30 101 8 40 60 102 6 60 90071, hãy đặt cờ cấp mô-đun toàn cầu
i j k 100 10 20 30 101 8 40 60 102 6 60 90075
i j k 100 10 20 30 101 8 40 60 102 6 60 9080
ô nhiều dòng
Hầu hết các định dạng bảng đều hỗ trợ văn bản ô nhiều dòng [văn bản chứa các ký tự xuống dòng]. Các ký tự dòng mới được vinh danh là ký tự ngắt dòng
Các ô nhiều dòng được hỗ trợ cho các hàng dữ liệu và cho các hàng tiêu đề
Ngắt dòng tự động hơn nữa không được chèn. Tất nhiên, một số định dạng đầu ra như latex hoặc html tự xử lý định dạng tự động của nội dung ô, nhưng đối với những định dạng không có, các ký tự xuống dòng trong văn bản ô đầu vào là phương tiện duy nhất để ngắt dòng trong văn bản ô
Lưu ý rằng một số định dạng đầu ra [e. g. đơn giản hoặc đơn giản] không đại diện cho các dấu phân cách hàng, do đó, việc biểu thị các ô nhiều dòng ở các định dạng như vậy có thể không rõ ràng đối với người đọc
Các ví dụ sau về đầu ra được định dạng sử dụng bảng sau đây với một ô nhiều dòng và các tiêu đề với một ô nhiều dòng
i j k 100 10 20 30 101 8 40 60 102 6 60 9081
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]74 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9082
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]75 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9083
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]79 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9084
i j k 100 10 20 30 101 8 40 60 102 6 60 90006 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9085
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]78 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9086
i j k 100 10 20 30 101 8 40 60 102 6 60 90027 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9087
i j k 100 10 20 30 101 8 40 60 102 6 60 90028 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9088
i j k 100 10 20 30 101 8 40 60 102 6 60 90021 bảng
i j k 100 10 20 30 101 8 40 60 102 6 60 9089
i j k 100 10 20 30 101 8 40 60 102 6 60 90022 bảng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]00
i j k 100 10 20 30 101 8 40 60 102 6 60 90023 bảng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]01
i j k 100 10 20 30 101 8 40 60 102 6 60 90029 bảng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]02
Các ô nhiều dòng không được hỗ trợ tốt cho các định dạng bảng khác
Tự động hóa nhiều dòng
Mặc dù lập bảng hỗ trợ dữ liệu được truyền vào với các mục nhập nhiều dòng được cung cấp rõ ràng, nhưng nó cũng cung cấp một số hỗ trợ để giúp quản lý nội bộ công việc này
Đối số
i j k 100 10 20 30 101 8 40 60 102 6 60 90087 là một danh sách trong đó mỗi mục chỉ định chiều rộng tối đa cho cột tương ứng của nó. Bất kỳ ô nào vượt quá mức này sẽ tự động ngắt nội dung. Để gán cùng chiều rộng tối đa cho tất cả các cột, có thể sử dụng một bộ chia tỷ lệ int đơn lẻ
Sử dụng
i j k 100 10 20 30 101 8 40 60 102 6 60 90054 cho bất kỳ cột nào không cần cung cấp giá trị tối đa rõ ràng và do đó sẽ không diễn ra quá trình ngắt dòng nhiều dòng tự động
Gói sử dụng hàm tiêu chuẩn python với các tham số mặc định - ngoài chiều rộng
Ví dụ này minh họa việc sử dụng tính năng ngắt dòng nhiều dòng tự động, mặc dù thông thường, các dòng được ngắt dòng có thể sẽ dài hơn đáng kể so với mức này
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]03
Thêm các dòng phân cách
Người ta có thể muốn thêm một hoặc nhiều dòng phân tách để đánh dấu các phần khác nhau trong bảng
Các dòng phân tách sẽ cùng loại với loại được xác định bởi trình định dạng được chỉ định như dòng giữa các hàng, tiêu đề dòng dưới, dòng dưới, dòng trên hoặc chỉ là một dòng trống đơn giản khi không có dòng nào được xác định cho trình định dạng
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]04
hỗ trợ ANSI
Mã thoát ANSI là các chuỗi byte không in được thường được sử dụng cho các hoạt động của thiết bị đầu cuối như cài đặt đầu ra màu hoặc sửa đổi vị trí con trỏ. Bởi vì các chuỗi ANSI nhiều byte vốn không thể in được, nên chúng vẫn có thể tạo thêm độ dài không mong muốn cho các chuỗi. Ví dụ
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]05
Để giải quyết vấn đề này, độ dài chuỗi được tính sau lần đầu tiên loại bỏ tất cả các chuỗi thoát ANSI. Điều này đảm bảo rằng độ dài có thể in thực tế được sử dụng cho độ rộng cột, thay vì độ dài byte. Tuy nhiên, trong bảng cuối cùng, có thể in được, các chuỗi thoát ANSI không bị xóa nên kiểu dáng ban đầu được giữ nguyên
Một số thiết bị đầu cuối hỗ trợ một nhóm đặc biệt các chuỗi thoát ANSI nhằm hiển thị các siêu liên kết giống như cách chúng được hiển thị trong trình duyệt. Chúng được xử lý giống như đã đề cập trước đây. các chuỗi thoát ANSI không in được sẽ bị xóa trước khi tính toán độ dài chuỗi. Sự khác biệt duy nhất với các siêu liên kết thoát là chiều rộng cột sẽ dựa trên độ dài của văn bản URL chứ không phải chính URL đó [các thiết bị đầu cuối sẽ hiển thị văn bản này]. Ví dụ
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]06
Sử dụng tiện ích dòng lệnh
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]07
cân nhắc hiệu suất
Các tính năng như căn chỉnh dấu thập phân và cố phân tích mọi thứ dưới dạng số ngụ ý rằng
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4
- phải "đoán" cách in một kiểu dữ liệu dạng bảng cụ thể
- cần giữ toàn bộ bảng trong bộ nhớ
- phải "hoán đổi" bảng hai lần
- làm nhiều việc hơn nó có thể xuất hiện
Nó có thể không phù hợp để sắp xếp theo thứ tự các bảng thực sự lớn [nhưng dù sao thì ai sẽ làm điều đó?] hoặc in các bảng trong các ứng dụng nhạy cảm về hiệu suất.
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 chậm hơn khoảng hai bậc so với việc chỉ nối các danh sách giá trị bằng tab, dấu phẩy hoặc dấu phân cách khác
Đồng thời,
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 có thể so sánh với các máy in bảng đẹp khác. Đưa ra một bảng 10x10 [một danh sách các danh sách] gồm dữ liệu số và văn bản hỗn hợp,
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob4 dường như chậm hơn
i j k 100 10 20 30 101 8 40 60 102 6 60 90093 và nhanh hơn
i j k 100 10 20 30 101 8 40 60 102 6 60 90094 và
i j k 100 10 20 30 101 8 40 60 102 6 60 90095 Điểm chuẩn nhỏ sau đây đã được chạy trong Python 3. 9. 13 trên Windows 10
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]08
Lịch sử phiên bản
Lịch sử phiên bản đầy đủ có thể được tìm thấy tại thay đổi
Làm thế nào để đóng góp
Đóng góp nên bao gồm các thử nghiệm và giải thích cho những thay đổi mà họ đề xuất. Tài liệu [ví dụ, docstrings, README. md] nên được cập nhật cho phù hợp
Dự án này sử dụng khung thử nghiệm pytest và độc tố để tự động hóa thử nghiệm trong các môi trường khác nhau. Thêm các bài kiểm tra vào một trong các tệp trong thư mục
i j k 100 10 20 30 101 8 40 60 102 6 60 90096
Để chạy thử nghiệm trên tất cả các phiên bản Python được hỗ trợ, hãy đảm bảo rằng tất cả các trình thông dịch Python,
i j k 100 10 20 30 101 8 40 60 102 6 60 90097 và
i j k 100 10 20 30 101 8 40 60 102 6 60 90098 đã được cài đặt, sau đó chạy
i j k 100 10 20 30 101 8 40 60 102 6 60 90098 trong thư mục gốc của cây nguồn dự án
Trên Linux,
i j k 100 10 20 30 101 8 40 60 102 6 60 90098 hy vọng sẽ tìm thấy các tệp thực thi như
i j k 100 10 20 30 101 8 40 60 102 6 60 90301,
i j k 100 10 20 30 101 8 40 60 102 6 60 90302, v.v. Trên Windows, nó tìm kiếm ________ 1303, ________ 1304, v.v. tương ứng
Một cách để cài đặt tất cả các phiên bản cần thiết của trình thông dịch Python là sử dụng pyenv. Tất cả các phiên bản sau đó có thể được cài đặt dễ dàng với một cái gì đó như
# Creating list of dictionaries li = [{'A':10, 'B':89, 'C':43},{'A': 88, 'J': 50, 'B': 7},{'A':9, 'B':8, 'C':12}] # creating dataframe df = pd.DataFrame[li] #display the output print[df]09
Đừng quên thay đổi
i j k 100 10 20 30 101 8 40 60 102 6 60 90305 của bạn để
i j k 100 10 20 30 101 8 40 60 102 6 60 90098 biết cách tìm tất cả các phiên bản đã cài đặt. Cái gì đó như
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob0
Để chỉ kiểm tra một số môi trường Python, hãy sử dụng tùy chọn
i j k 100 10 20 30 101 8 40 60 102 6 60 90307. Ví dụ: để chỉ kiểm tra với Python 3. 7 và Trăn 3. 10, chạy
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob1
trong thư mục gốc của cây nguồn dự án
Để bật kiểm tra NumPy và Pandas, hãy chạy
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob2
[việc này có thể mất nhiều thời gian trong lần đầu tiên, vì NumPy và Pandas sẽ phải được cài đặt trong môi trường ảo mới]
Để sửa định dạng mã
>>> print[tabulate[{"Name": ["Alice", "Bob"], .. "Age": [24, 19]}, headers="keys"]] Age Name ----- ------ 24 Alice 19 Bob3
Xem tệp
i j k 100 10 20 30 101 8 40 60 102 6 60 90308 để tìm hiểu cách sử dụng để kiểm tra các phiên bản Python riêng lẻ
người đóng góp
Sergey Astanin, Pau Tallada Crespí, Erwin Marsi, Mik Kocikowski, Bill Ryder, Zach Dwiel, Frederik Rietdijk, Philipp Bogensberger, Greg [ẩn danh], Stefan Tatschner, Emiel van Miltenburg, Brandon Bennett, Amjith Ramanujam, Jan Schulz, Simon Percivall, Javier