Tiết lộ. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồng
Có nhiều trường hợp bạn phải chuyển đổi khung dữ liệu Pandas của mình thành bảng HTML. Hai trong số những lý do chính là bạn muốn xem tập dữ liệu của mình tốt hơn với tư cách là nhà phân tích dữ liệu hoặc tích hợp nó vào trang web của tổ chức bạn
Trong hướng dẫn này, chúng tôi sẽ chuyển đổi bất kỳ khung dữ liệu Pandas nào thành một bảng tương tác có phân trang và chúng tôi có thể thực hiện sắp xếp theo cột và tìm kiếm
Tất nhiên, để bắt đầu, bạn phải cài đặt Pandas
$ pip install pandas
Nhập các thư viện cần thiết
import pandas as pd
import webbrowser
Chúng tôi sẽ sử dụng mô-đun webbrowser để tự động mở bảng HTML kết quả trong một tab mới trên trình duyệt mặc định
Hãy tạo một hàm chấp nhận khung dữ liệu làm đối số và trả về nội dung HTML cho điều đó
def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
May mắn thay, Pandas có phương thức
def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
3 tích hợp để tạo nội dung HTML của khung dữ liệu đó dưới dạng thẻ def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
4. Sau đó, chúng tôi tạo một trang HTML hoàn chỉnh và thêm tiện ích mở rộng bảng dữ liệu jQuery để nó tương tácTheo mặc định, phân trang, sắp xếp theo cột và tìm kiếm được bật; . Ví dụ: nếu bạn muốn tắt phân trang và hiển thị toàn bộ khung dữ liệu, bạn có thể bỏ ghi chú
def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
5 [hãy nhớ ghi chú trong Javascript là def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
6 chứ không phải def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
7 như trong Python]Tôi đang lấy tập dữ liệu này cho mục đích trình diễn. Hãy thử nó ra
if __name__ == "__main__":
# read the dataframe dataset
df = pd.read_csv["Churn_Modelling.csv"]
# take only first 1000, otherwise it'll generate a large html file
df = df.iloc[:1000]
# generate the HTML from the dataframe
html = generate_html[df]
# write the HTML content to an HTML file
open["index.html", "w"].write[html]
# open the new HTML file with the default browser
webbrowser.open["index.html"]
Sau khi chúng tôi nhận được nội dung HTML của mình, chúng tôi viết nó vào một tệp
def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
8 mới và mở nó bằng chức năng import pandas as pd
import webbrowser
0. Đây là những gì nó trông giống như Sự kết luận
Được rồi. Đó là nó cho hướng dẫn. Tôi hy vọng nó hữu ích để bạn dễ dàng xem tập dữ liệu của mình tốt hơn hoặc tích hợp nó dưới dạng nội dung HTML trên trang web của bạn
Nếu bạn muốn theo cách khác, trích xuất các bảng HTML và chuyển đổi chúng thành tệp CSV, hãy xem hướng dẫn này
Tập dữ liệu được sử dụng trong hướng dẫn này có nguồn gốc từ Kaggle. Bạn có thể tải tại đây nếu chưa có tài khoản Kaggle
Lưu ý rằng kiểu dáng của bảng sẽ chỉ hoạt động nếu bạn có kết nối Internet. Nếu bạn muốn nó hoạt động ngoại tuyến, bạn chỉ cần tải xuống các tệp JS/CSS và đặt chúng vào thư mục hiện tại để nó tải chúng từ máy cục bộ của bạn thay vì từ CDN
Bạn có thể lấy mã hoàn chỉnh tại đây
Cuối cùng, nếu bạn là người mới bắt đầu và muốn học Python, tôi khuyên bạn nên tham gia khóa học Python For Everyone Coursera, trong đó bạn sẽ học được nhiều điều về Python. Bạn cũng có thể xem trang tài nguyên và khóa học của chúng tôi để xem các tài nguyên Python mà tôi đề xuất về các chủ đề khác nhau
Sử dụng chức năng Pandas tích hợp để xuất DataFrame sang bảng HTML là cách nhanh chóng để xuất DataFrame của bạn nhưng nó có một số hạn chế. Sử dụng vòng lặp for để tạo bảng HTML cho phép bạn thêm bất kỳ kiểu dáng tùy chỉnh hoặc lớp CSS nào để định dạng nâng cao. Trong bài đăng này, tôi sẽ hướng dẫn bạn cách thực hiện điều đó
Chuyển đổi DataFrame thành HTML bằng Pandas. to_html[]
gấu trúc. Khung dữ liệu. to_html[] cho phép bạn trong một dòng mã để chuyển đổi Khung dữ liệu của bạn thành bảng HTML
Đây là một DataFrame mẫu
import pandas as pd import os df = pd.DataFrame[{'Fruit':['apples','oranges','pears','avocados'],'Price':[0.50, 1.12,0.85,1.90], 'Weight': [3.2, 5.6, 2.2, 3.1] }] df
Để chuyển đổi bảng này thành bảng HTML, bạn có thể chạy.
def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
9Kết quả là một bảng HTML trông như thế này khi được xem trong Chrome
Và sẽ tạo ra một đầu ra HTML trông như thế này
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
Tùy thuộc vào mục tiêu của bạn, đầu ra này có thể hoạt động tốt. Tuy nhiên, tôi không thể tìm thấy trong tài liệu cách thêm các lớp CSS cụ thể vào các hàng của bảng hoặc dữ liệu bảng
Trong phần tiếp theo, tôi sẽ hướng dẫn bạn cách tôi giải quyết vấn đề đó
Tạo một bảng HTML từ đầu
Một giải pháp thay thế mà Pandas xuất sang HTML là lặp qua từng ô của DataFrame và tự xây dựng bảng HTML. Về cơ bản, đây là một cách tạo tài liệu HTML động
Có hai phần trong chiến lược này. Đầu tiên là tự động xây dựng bảng HTML. Thứ hai là kết hợp bảng của bạn vào một tài liệu HTML lớn hơn
Vòng qua từng ô
Để tự động lặp qua từng ô của DataFrame, bạn có thể lồng vòng lặp for bên trong vòng lặp for khác. Vòng lặp đầu tiên qua từng hàng và vòng lặp thứ hai qua từng cột. Đây là một ví dụ
for i in range[df.shape[0]]: for j in range[df.shape[1]]: print [i,j]
Trong ví dụ này, bạn có thể thấy biến
if __name__ == "__main__":
# read the dataframe dataset
df = pd.read_csv["Churn_Modelling.csv"]
# take only first 1000, otherwise it'll generate a large html file
df = df.iloc[:1000]
# generate the HTML from the dataframe
html = generate_html[df]
# write the HTML content to an HTML file
open["index.html", "w"].write[html]
# open the new HTML file with the default browser
webbrowser.open["index.html"]
0 sẽ tăng như thế nào khi chúng ta bắt đầu một hàng mới. Đó là hàng đợi của chúng tôi để thêm trình bao bọc Hàng của Bảng HTML if __name__ == "__main__":
# read the dataframe dataset
df = pd.read_csv["Churn_Modelling.csv"]
# take only first 1000, otherwise it'll generate a large html file
df = df.iloc[:1000]
# generate the HTML from the dataframe
html = generate_html[df]
# write the HTML content to an HTML file
open["index.html", "w"].write[html]
# open the new HTML file with the default browser
webbrowser.open["index.html"]
1. Biến apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
Tiếp theo, tôi sẽ sử dụng vòng lặp for để tạo một hàm. Tôi sẽ giải thích chức năng chi tiết hơn bên dưới
def create_html_table[x]: row_data = '' for i in range[x.shape[0]]: for j in range[x.shape[1]]: if [[i % 2] != 0] & [j == 0]: #not an even row and the start of a new row row_data += '\n\n '+str[x.iloc[i,j]]+' ' elif j == 0: #The first column row_data += '\n\n ' else: row_data += '\n'+str[x.iloc[i,j]]+' ' elif j == 1: #second column row_data += '\n'+str[x.iloc[i,j]]+' ' elif j == 2: #third column and our last column in my example row_data += ''+str[x.iloc[i,j]]+' \n'+str[x.iloc[i,j]]+' ' return row_data
Biến
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
Vòng lặp for chứa một loạt các điều kiện và những điều kiện này sẽ phụ thuộc vào cách bạn muốn định dạng dữ liệu. Đối với tôi, tôi muốn có các màu hàng xen kẽ và căn chỉnh các cột tùy thuộc vào loại dữ liệu của chúng. Tôi muốn dữ liệu văn bản của mình được căn trái và dữ liệu số của tôi được căn phải. Căn phải dữ liệu số giúp dễ đọc hơn một chút khi ở trong bảng vì các số lớn hơn sẽ mở rộng sang trái. Mỗi cột được đại diện bởi biến
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
Vòng lặp for lồng nhau chạy qua từng ô của DataFrame và sẽ trả về nội dung ô trong trình bao bọc Dữ liệu Bảng HTML
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
Khi____67, điều đó có nghĩa là chúng ta đã bắt đầu một hàng mới. Đó là lý do tại sao bạn sẽ thấy tôi trả lại trình bao bọc
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
apples | 0.50 | 3.2 |
oranges | 1.12 | 5.6 |
pears | 0.85 | 2.2 |
avocados | 1.90 | 3.1 |
for i in range[df.shape[0]]: for j in range[df.shape[1]]: print [i,j]0, điều đó có nghĩa là chúng tôi đã đến cuối dữ liệu trong hàng và điều kiện sẽ trả về trình bao bọc hàng của bảng đóng
for i in range[df.shape[0]]: for j in range[df.shape[1]]: print [i,j]1
Tiếp theo, bạn có thể chạy chức năng trên DataFrame của mình. Sau đó nối các kết quả lại thành một tệp HTML lớn hơn. Đây là một ví dụ về điều đó
def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
1Đầu ra HTML dưới dạng tệp
Để viết bảng HTML dưới dạng tệp, bạn có thể chạy tệp này
def generate_html[dataframe: pd.DataFrame]:
# get the table HTML from the dataframe
table_html = dataframe.to_html[table_id="table"]
# construct the complete HTML with jQuery Data tables
# You can disable paging or enable y scrolling on lines 20 and 21 respectively
html = f"""
{table_html}
"""
# return the html
return html
2Đầu ra HTML cho một Email
Nếu bạn muốn nhúng đầu ra HTML vào email, bạn có thể sử dụng mã bên dưới. Để biết thêm thông tin về cách gửi email bằng Python, hãy xem bài đăng này – Gửi email có định dạng HTML với tệp đính kèm qua Gmail bằng Python