Định dạng pandas bảng HTML

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ác

Theo 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ư

Điều thú vị là chúng ta có thể tìm kiếm trên bảng

Hoặc sắp xếp theo một cột cụ thể

Hoặc chỉnh sửa cài đặt phân trang, ví dụ: hiển thị 50 mục trên mỗi trang

Bạn cũng có thể xem các trang bên dưới bảng

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
9

Kế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


      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
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

      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
0 sẽ quay vòng qua từng cột. Trong trường hợp của tôi, đó là hàng đợi của tôi để thêm các lớp vì tôi muốn căn chỉnh các cột theo một cách cụ thể tùy thuộc vào kiểu dữ liệu của chúng

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 '+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 '

            else:
                row_data += '\n '+str[x.iloc[i,j]]+''
                
    return row_data

Biến


      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
1 trên hàng 3 thiết lập một chuỗi trống để giữ các chuỗi HTML được tạo bởi các vòng lặp for

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


      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
0 vì vậy đó là những gì được sử dụng để áp dụng các lớp học của tôi

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


      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
3. Để lấy nội dung ô thực tế của DataFrame, bạn cần định vị nó trong DataFrame ban đầu bằng cách chạy

      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
4. Hàm

      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
5 là một cách để chọn dữ liệu dựa trên vị trí chỉ mục của nó.

      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
6 được thêm vào để nối các kết quả số thành một chuỗi

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


      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
8 trong điều kiện của mình. Khi

      
      Fruit
      Price
      Weight
    
      0
      
      1
      
      2
      
      3
      
apples 0.50 3.2
oranges 1.12 5.6
pears 0.85 2.2
avocados 1.90 3.1
92 hoặc, cách khác, khi
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

Gấu trúc có thể đọc bảng HTML không?

Hàm pandas read_html[] là một cách nhanh chóng và thuận tiện để biến bảng HTML thành DataFrame của gấu trúc . Chức năng này có thể hữu ích để nhanh chóng kết hợp các bảng từ các trang web khác nhau mà không cần tìm cách cạo HTML của trang web.

Định dạng [] trong gấu trúc là gì?

Giới thiệu về định dạng Pandas. Định dạng Pandas là biểu thị thông tin trong tổ chức cần thiết . Đôi khi, giá trị lớn đến mức chúng ta cần thể hiện khía cạnh mong muốn của điều này hoặc có thể nói ở một số cấu hình lý tưởng. Thư viện gấu trúc Python sử dụng thiết kế ngày giờ tiêu chuẩn nguồn mở.

Làm cách nào để trích xuất bảng HTML từ Python?

Để trích xuất một bảng từ HTML, trước tiên bạn cần mở các công cụ dành cho nhà phát triển của mình để xem HTML trông như thế nào và xác minh xem đó có thực sự là một bảng chứ không phải một phần tử nào khác không. Bạn mở công cụ dành cho nhà phát triển bằng phím F12, xem tab “Thành phần” và đánh dấu thành phần bạn quan tâm .

Thư viện Python nào có read_html[]?

read_html . Đọc các bảng HTML vào danh sách các đối tượng DataFrame.

Chủ Đề