"""
This module implements the create_report(df) function.
"""
import warnings
from typing import Any, Dict, List, Optional
import pandas as pd
from bokeh.resources import INLINE
from jinja2 import Environment, PackageLoader
from ..configs import Config
from .formatter import format_report
from .report import Report
__all__ = ["create_report"]
ENV_LOADER = Environment(
loader=PackageLoader("dataprep", "eda/create_report/templates"),
)
[docs]def create_report(
df: pd.DataFrame,
*,
config: Optional[Dict[str, Any]] = None,
display: Optional[List[str]] = None,
title: Optional[str] = "DataPrep Report",
mode: Optional[str] = "basic",
progress: bool = True,
) -> Report:
"""
This function is to generate and render element in a report object.
Parameters
----------
df
The DataFrame for which data are calculated.
config
A dictionary for configuring the visualizations
E.g. config={"hist.bins": 20}
display
The list that contains the names of plots user wants to display,
E.g. display = ["bar", "hist"]
Without user's specifications, the default is "auto"
title: Optional[str], default "DataPrep Report"
The title of the report, which will be shown on the navigation bar.
mode: Optional[str], default "basic"
This controls what type of report to be generated.
Currently only the 'basic' is fully implemented.
progress
Whether to show the progress bar.
Examples
--------
>>> import pandas as pd
>>> from dataprep.eda import create_report
>>> df = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
>>> report = create_report(df)
>>> report # show report in notebook
>>> report.save('My Fantastic Report') # save report to local disk
>>> report.show_browser() # show report in the browser
"""
_suppress_warnings()
cfg = Config.from_dict(display, config)
context = {
"resources": INLINE.render(),
"title": title,
"components": format_report(df, cfg, mode, progress),
}
template_base = ENV_LOADER.get_template("base.html")
report = template_base.render(context=context)
return Report(report)
def _suppress_warnings() -> None:
"""
suppress warnings in create_report
"""
warnings.filterwarnings(
"ignore",
"The default value of regex will change from True to False in a future version",
category=FutureWarning,
)