If you’ve created a Streamlit component with React you’ll have a frontend/public
folder from which to serve static HTML files. I figured if I could generate the static analysis output of Sweetviz
into that folder, then it would be easy to display it in my Streamlit
app. Sure enough, it is very easy:
import streamlit as st
import streamlit.components.v1 as components
import pandas as pd
# https://pypi.org/project/sweetviz/
# https://github.com/fbdesignpro/sweetviz
import sweetviz as sv
def app(title=None):
st.title(title)
df = pd.read_csv('./data/Time_Series.csv')
st.write(df.head())
skip_columns_years = [str(y) for y in range(2016, 2026)]
skip_columns_time_series = ['Date of last update', 'Databank code', 'Scenario', 'Location code', 'Indicator code'] + skip_columns_years
# Use the analysis function from sweetviz module to create a 'DataframeReport' object.
analysis = sv.analyze([df,'EDA'], feat_cfg=sv.FeatureConfig(
skip=skip_columns_time_series,
force_text=[]), target_feat=None)
# Render the output on a web page.
analysis.show_html(filepath='./frontend/public/EDA.html', open_browser=False, layout='vertical', scale=1.0)
components.iframe(src='http://localhost:3001/EDA.html', width=1100, height=1200, scrolling=True)
app(title='Sweet Visualization')
I’m loading a CSV of time series data (with annual data for 2016-2025). The year/value columns and a few others are ignored in the EDA analysis (skip_columns_years
, skip_columns_time_series
). Sweetviz
generates its analysis output HTML file into './frontend/public/EDA.html'
(i.e., the component’s static content folder). analysis.show_html()
is configured to not open the analysis itself in a separate browser window. Finally, I display the static HTML file with components.iframe()
!
There are just two lines of important Sweetviz
code and in combination with Streamlit
you can achieve something pretty powerful for your EDA tasks.
P.S. From the docs: Pandas-Profiling was the original inspiration for this project.