/datapane

Datapane is the easiest way to create data science reports from Python.

Primary LanguagePythonApache License 2.0Apache-2.0

Datapane

Datapane.com | Docs | Examples | Roadmap & Feature Suggestions | Discord

Pip Downloads Latest release Conda (channel only)

Build interactive reports in 3 lines of Python

Datapane is an open-source framework makes it easy to create beautiful reports from anywhere you can run Python. Love analyzing data in Python but struggle to share results and insights? Datapane is for you!


What makes Datapane special?

  • Static generation: Sharing a report shouldn't require deploying an app. Render a standalone HTML bundle which you can share or host on the web.
  • API-first and programmatic: Programmatically generate reports from inside of Spark, Airflow, or Jupyter. Schedule updates to build real-time dashboards.
  • Dynamic front-end components: Say goodbye to writing HTML. Build reports from a set of interactive components, like DataTables, tabs, and selects.

Getting Started

Want a head start? Check out our Datapane in 3 minutes video:

Datapane.in.3.minutes.mp4

Installing Datapane

The best way to install Datapane is through pip or conda.

pip

$ pip3 install -U datapane

conda

$ conda install -c conda-forge "datapane>=0.15.1"

Datapane also works well in hosted Jupyter environments such as Colab or Binder, where you can install as follows:

!pip3 install --quiet datapane

Creating reports

📊 Include plots and data

Create a report from pandas DataFrames, plots from your favorite libraries, and text.

Simple Datapane report example with text, plot and table

import altair as alt
from vega_datasets import data
import datapane as dp

df = data.iris()
fig = (
    alt.Chart(df)
    .mark_point()
    .encode(
      x="petalLength:Q",
      y="petalWidth:Q",
      color="species:N"
    )
)
report = dp.Report(
    dp.Plot(fig),
    dp.DataTable(df)
)
report.save(path="my_report.html")

🎛 Layout using interactive blocks

Add dropdowns, selects, grid, pages, and 10+ other blocks to make your reports dynamic.

Complex layout

...

dp.Report(
    dp.Formula("x^2 + y^2 = z^2"),
    dp.Group(
        dp.BigNumber(
            heading="Number of percentage points",
            value="84%",
            change="2%",
            is_upward_change=True
        ),
        dp.BigNumber(
            heading="Simple Statistic", value=100
        ), columns=2
    ),
    dp.Select(
        dp.Plot(fig, label="Chart"),
        dp.DataTable(df, label="Data")
    ),
).save(path="Layout_example.html")




Get involved

Discord

Our Discord community is for people who believe that insights, visualizations, and reports are better created with Python instead of drag-and-drop tools. Get help from the team, share what you're building, and get to know others in the space!

Forums

Got feature requests, feedback, or questions? Visit our Forum.

📮 Join our forum

Hosting Reports

In addition to saving documents locally or hosting them yourself, you can host and share your reports using Datapane Cloud.

To get your API key, create a free account.

Next, in your Python notebook or script, change the save function to upload:

dp.Report(
 ...
#).save(path="hello_world.html")
).upload(name="Hello world")

Demos and Examples

Here a few samples of the top reports created by the Datapane community.

Next Steps

Analytics

By default, the Datapane Python library collects error reports and usage telemetry. This is used by us to help make the product better and to fix bugs. If you would like to disable this, simply create a file called no_analytics in your datapane config directory, e.g.

Linux

$ mkdir -p ~/.config/datapane && touch ~/.config/datapane/no_analytics

macOS

$ mkdir -p ~/Library/Application\ Data/datapane && touch ~/Library/Application\ Data/no_analytics

Windows (PowerShell)

PS> mkdir ~/AppData/Roaming/datapane -ea 0
PS> ni ~/AppData/Roaming/datapane/no_analytics -ea 0

You may need to try ~/AppData/Local instead of ~/AppData/Roaming on certain Windows configurations depending on the type of your user-account.