好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

利用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(""" <style> .font {
? ? font-size:30px ; font-family: 'Cooper Black'; color: #FF9633;}
? ? </style> """, unsafe_allow_html=True)
st.markdown('<p class="font">请上传您的数据集,该应用会自动生成相关的数据分析报告</p>', unsafe_allow_html=True)

output:

上传文件以及变量的筛选

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

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

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

代码如下:

if uploaded_file is not None:
? ? ?df = pd.read_csv(uploaded_file)
? ? ?option1 = st.sidebar.radio(
? ? ? ? ? '您希望您的数据分析报告中包含哪些变量呢',
? ? ? ? ? ('所有变量', '部分变量'))
?
? ? ?if option1 == '所有变量':
? ? ? ? ? df = df
? ? ?elif option1 == '部分变量':
? ? ? ? ? var_list = list(df.columns)

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

代码如下:

var_list = list(df.columns)
option3 = st.sidebar.multiselect(
? ? ?'筛选出您希望在数据分析报告中包含的变量',
? ? ?var_list)
df = df[option3]

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

option2 = st.sidebar.selectbox(
? ? ? '筛选模式,完整分析还是简单分析',
? ? ? ('简单分析', '完整分析'))

?if option2 == '完整分析':
? ? ? mode = 'complete'
? ? ? st.sidebar.warning(
? ? ? ? ? ?'完整分析由于涉及到更加复杂的计算操作,耗时更加地长,要是遇到大型的数据集,还会有计算失败的情况出现,这里推荐使用简单分析')
?elif option2 == '简单分析':
? ? ? mode = 'minimal'
? ? ? grid_response = AgGrid(
? ? ? ? ? ?df,
? ? ? ? ? ?editable=True,
? ? ? ? ? ?height=300,
? ? ? ? ? ?width='100%',
? ? ? )

? ? ? updated = grid_response['data']
? ? ? df1 = pd.DataFrame(updated)

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

if st.button('生成报告'):
? ? ? ? if mode=='complete':
? ? ? ? ? ? profile=ProfileReport(df,
? ? ? ? ? ? ? ? title="User uploaded table",
? ? ? ? ? ? ? ? progress_bar=True,
? ? ? ? ? ? ? ? dataset={

? ? ? ? ? ? ? ? })
? ? ? ? ? ? st_profile_report(profile)
? ? ? ? elif mode=='minimal':
? ? ? ? ? ? profile=ProfileReport(df1,
? ? ? ? ? ? ? ? minimal=True,
? ? ? ? ? ? ? ? title="User uploaded table",
? ? ? ? ? ? ? ? progress_bar=True,
? ? ? ? ? ? ? ? dataset={
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? })
? ? ? ? ? ? st_profile_report(profile)

最后出来的结果如下:

到此这篇关于利用Python自制了网页并实现一键自动生成探索性数据分析报告的文章就介绍到这了,更多相关 Python自制网页内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

查看更多关于利用Python自制网页并实现一键自动生成探索性数据分析报告的详细内容...

  阅读:59次