用Python自制了一张网页,一键自动生成探索性数据分析报告

2022-05-12     CDA数据分析师

原标题:用Python自制了一张网页,一键自动生成探索性数据分析报告

作者:俊欣

来源:关于数据分析与可视化

今天小编带领大家用Python自制一个自动生成探索性数据分析报告这样的一个工具,大家只需要在浏览器中输入url便可以轻松的访问,如下所示

第一步

首先我们导入所要用到的模块,设置网页的标题、工具栏以及logo的导入,代码如下

from st_aggrid import AgGrid

import streamlit as st

import pandas as pd

import pandas_profiling

from streamlit_pandas_profiling import st_profile_report

from pandas_profiling import ProfileReport

from PIL import Image

st.set_page_config(layout= 'wide') #Choose wide mode as the default setting

#Add a logo (optional) in the sidebar

logo = Image.open(r 'wechat_logo.jpg')

st.sidebar.image(logo, width=120)

#Add the expander to provide some information about the app

with st.sidebar.expander( "关于这个项目"):

st.write( """

该项目是将streamlit和pandas_profiling相结合,在您上传数据集之后自动生成相关的数据分析报告,当然该项目提供了两种模式 全量分析还是部分少量分析,这里推荐用部分少量分析,因为计算量更少,所需要的时间更短,效率更高

""" )

#Add an app title. Use css to style the title

st.markdown( """ """ , unsafe_allow_html=True)

st.markdown( '

请上传您的数据集,该应用会自动生成相关的数据分析报告

', unsafe_allow_html=True)

output

上传文件以及变量的筛选

紧接的是我们需要上传 csv 文件,代码如下

uploaded_file = st.file_uploader( "请上传您的csv文件: ", type=[ 'csv'])

我们可以选择针对数据集当中所有的特征进行一个统计分析,或者只是针对部分的变量来一个数据分析,代码如下

ifuploaded_file is not None:

df = pd.read_csv(uploaded_file)

option1 = st.sidebar.radio(

'您希望您的数据分析报告中包含哪些变量呢',

( '所有变量', '部分变量'))

ifoption1 == '所有变量':

df = df

elifoption1 == '部分变量':

var_list = list(df.columns)

要是用户勾选的是部分变量,只是针对部分变量来进行一个分析的话,就会弹出来一个多选框来供用户选择,代码如下

var_list = list(df.columns)

option3 = st.sidebar.multiselect(

'筛选出您希望在数据分析报告中包含的变量',

var_list)

df = df[option3]

用户可以挑选到底是“简单分析”或者是“完整分析”,要是勾选的是“完整分析”的话,会跳出相应的提示,提示“完整分析”由于涉及到更加复杂的计算操作,耗时更加地长,要是遇到大型的数据集,还会有计算失败的情况出现

option2 = st.sidebar.selectbox(

'筛选模式,完整分析还是简单分析',

( '简单分析', '完整分析'))

ifoption2 == '完整分析':

mode = 'complete'

st.sidebar.warning(

'完整分析由于涉及到更加复杂的计算操作,耗时更加地长,要是遇到大型的数据集,还会有计算失败的情况出现,这里推荐使用简单分析')

elifoption2 == '简单分析':

mode = 'minimal'

grid_response = AgGrid(

df,

editable=True,

height=300,

width= '100%',

)

updated = grid_response[ 'data']

df1 = pd.DataFrame(updated)

当用户点击“生成报告”的时候就会自动生成一份完整的数据分析报告了,代码如下

ifst.button( '生成报告'):

ifmode== 'complete':

profile=ProfileReport(df,

title= "User uploaded table",

progress_bar=True,

dataset={

"简介": '欢迎关注公众号:关于数据分析与可视化',

"作者": '俊欣',

"时间": '2022.05'

})

st_profile_report(profile)

elifmode== 'minimal':

profile=ProfileReport(df1,

minimal=True,

title= "User uploaded table",

progress_bar=True,

dataset={

"简介": '欢迎关注公众号:关于数据分析与可视化',

"作者": '俊欣',

"时间": '2022.05'

})

st_profile_report(profile)

最后出来的结果如下,这里再来显示一遍

点这里关注我,记得标星哦~

CDA课程咨询

文章来源: https://twgreatdaily.com/zh-hans/e3368feba47d12a7cf5f21a7023e07ab.html