Article Complete
    AIM

    Creating Interactive Data Reports With Datapane

    Creating Interactive Data Reports With Datapane

    Datapane is a Python module that enables you to quickly create shareable reports from existing data analysis components like Pandas DataFrames and plots from a wide range of visualisation libraries l…

    Creating Interactive Data Reports With Datapane
    Aditya Singh··Updated DECEMBER 30, 2024, 5:30 AM
    5 min

    One of the issues of using Python for data analytics is the inability to create shareable data visualization reports quickly. Other analytics tools like PowerBI and Tableau can readily publish and share reports. Sure, you can create shareable reports with modules like dash and Flask but they require quite a bit of extra code. Datapane is a Python module that enables you to quickly create shareable reports from existing data analysis components like Pandas DataFrames and plots from a wide range of visualisation libraries like Plotly and Bokeh. Check out this article to learn the basics of creating a report with Datapane. Recently Datapane has introduced new components that make creating basic reports even easier and allow analysts to exercise more control over the report layout and view.  

    DataTable

    One of these components is the DataTable block; this is an extremely powerful component, so much so that it facilitates the creation of a basic data report with just a few lines of code. The DataTable block takes a DataFrame and creates an interactive table that allows sort and search operations. In addition to that, it incorporates data analysis tools like Pandas-Profiling and SandDance by default.  

    Let’s create a barebones report for the wine quality dataset using just the DataTable block. First, let’s install and set up Datapane.

    Install from PyPI

    pip install -U datapane

     To publish and share reports, you’ll need an API token. Register on the Datapane website and get your token from the account settings. 

     import datapane as dp 
     dp.login('API TOKEN') 

    Load the dataset and pass the DataFrame object to dp.DataTable. Publish the DataTable block using dp.Report(block_name).publish(‘Report Name’, ‘Report Description’)

     import datapane as dp 
     import pandas as pd
     df = pd.read_csv("winequality_white.csv")
     table = dp.DataTable(df)
     dp.Report(table).publish(name='WineData', description='Winedata Example') 

    That’s it! If you visit the above link you’ll find an interactive table like this. 

    Not only that, using the buttons in the top-right corner, you can analyze the data with Padas-Profiling and SandDance.

    Pandas Profiling report on Datapane
    SandDance plots on Datapane

    You can learn more about dp.DataTable here.

    More Sophisticated Layouts 

    The default layout of Datapane reports is good enough for basic use cases, but if you want to create an intricate report layout with multiple pages, you can do so with Select, Group and Page components.

    The dp.Select component enables you to create different tabs for different blocks. Let’s say we have three components we want to display: white wine interactive table, source code of the whole report and a 3D scatter plot of pH, alcohol content and density. 

    To share syntax-highlighted code instead of simple formatted text, we can use another one of the new components, dp.Code. It currently only supports Python and Javascript.

     white = pd.read_csv("winequality_white.csv")
     white_table = dp.DataTable(white)
     fig_3D = px.scatter_3d(white, x='pH', y='alcohol', z='density',
                   color='quality')
    
     # Create plot component from the 3D scatter plot
     plot_3D = dp.Plot(fig_3D, label = '3D Scatter Plot')
    
     # Create the selection of tabs 
     select = dp.Select(blocks=[
         dp.DataTable(white, label ="Table"),
         dp.Code(source_code, label='Source code'),
         plot_3D
         ]) 

    You can learn more about dp.Select here.

    dp.Group can be used to display components side-by-side. Let’s say we want to display the interactive table for red wine data alongside a scatter plot of citric acid and quality.

     red = pd.read_csv("winequality_red.csv")
     red_table = dp.DataTable(red)
     fig = px.scatter(data_frame=white,
               x='citric acid',
               y='quality')
    
     # Create plot component
     plot_2D = dp.Plot(fig)
    
     # Group table component and plot component
     group = dp.Group(blocks=[red_table, plot_2D],
                     columns=2) 

    You can learn more dp.Group here.

    To facilitate the creation of multi-page reports Datapane provides the dp.Page component. Let’s create a combined report of both the wine types using the previously created Select and Group components.

     page1 =  dp.Page(label='Red Wine',
                     blocks=['## Red Wine', group]
                     )
     page2 = dp.Page(label='White Wine',
                     blocks=['## White Wine', select]
                     )
     dp.Report(page1, page2).publish(name='Wine Layout Example') 
    Final multi-page datapane report

    You can learn more about dp.Page here.

    The above report and its source code can be found here. 

    References:

    To learn more about Datapane please refer to the following resources:

    Your reaction

    Discussion

    What's your take on this story?

    0/1000

    No comments yet — be the first to share your view.

    Explore our newsletters

    Build your routine with some of our top newsletters or view them all here.

    Wake up informed

    Make sense of the day's AI news and breakthroughs with our morning briefing.

    Belamy
    WeeklyBelamySee the latest

    Industry intelligence

    Receive a roundup of AI adoption stories by industry vertical, curated for professionals.

    3x WeeklySector6See the latest

    By signing up, you agree to our Privacy Policy.

    Membership

    Stay ahead with AI insights.

    Unlimited access to premium articles, exclusive analysis, and the stories shaping India's AI economy.

    Subscribe now

    AIM Americas

    1190 Miraloma Way Suite P, Sunnyvale, CA 94085

    AIM India

    1st Floor, Sakti Statesman, Bellandur, Bengaluru – 560103

    © 2026 AIM. All rights reserved.