利用Python自制网页并实现一键自动生成探索性数据分析报告
作者:欣一2002 发布时间:2023-01-19 13:20:12
标签: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)
最后出来的结果如下:
来源:https://blog.csdn.net/weixin_43373042/article/details/124679107


猜你喜欢
- 闲的无聊。。。网上一堆,正好练手(主要是新手)# coding=utf-8 import requests from bs4 import
- python 消除序列的重复值,并保持原来顺序1、如果仅仅消除重复元素,可以简单的构造一个集合$ pythonPython 3.5.2 (d
- 如下所示:import osimport cv2import sysimport numpy as nppath = "F:\\I
- 图形检测在计算机视觉开发中是一项非常重要的操作,算法通过对图像的检测,分析出图像中可能存在哪些形状。除此之外,除了让计算机识别轮廓之外,轮廓
- 一、截取子串-切片方法:字符串名[初始位置:结束位置:步长]str1 = 'abcdefg'print(str1[:]) #
- 学习了vue.js一段时间,拿它来做2个小组件,练习一下。我这边是用webpack进行打包,也算熟悉一下它的运用。源码放在文末的 githu
- 【简 介】熟悉网页设计的网友就知道,调用Style的方法很多,我们可以单击鼠标右键选择Custon Style来调用Style标准,也可以在
- python函数的两种嵌套方法使用函数的嵌套有两种方式:交叉嵌套回环嵌套交叉嵌套交叉嵌套的方式是在本函数中调用同一级或上一级函数的嵌套方法:
- 叨叨几句哈喽兄弟们,今天实现一下人脸识别。先问大家一个问题什么是百度Aip模块?百度AI平台提供了很多的API接口供开发者快速的调用运用在项
- 目录什么是 MySQL?什么是 MongoDB?MongoDB 与 MySQL 的差异数据模式和容量性能和速度安全性事务的特性:原子性、一致
- 比较两个时间序列在图形上是否相似,可以通过以下方法:1.可视化比较:将两个时间序列绘制在同一张图上,并使用相同的比例和轴标签进行比较。可以观
- 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。2. copy.deepcopy 深拷贝 拷贝对象及其子对象一个
- 1:listWidget 以滚动窗口显示文件下的所有文件: self.listWidget = QtWidget
- 我们知道,关系型数据一般以规范化的形式保存,也就是说你应该尽可能少地重复数据;在正常情况下,表与表之间仅通过各种键值实现关联。进一步地讲,规
- 本文记录了mysql 8.0.22 安装配置图文教程,供大家参考,具体内容如下一、安装(1)、官网下载(2)、安装(前提是之前没安装过mys
- 1.问题描述请编写程序,实现以下功能:在字符串中的所有数字字符前加一个“$”符号。例如,输入A1B2
- 说明1、需要一个函数来处理的参数数是不确定的,这时可以使用多值参数。2、python有两个多值参数,在参数名前增加一个*可以接收元组。在参数
- 以下代码实现环境是mac系统,本地配置mysql服务端和navicat premium客户端,python环境是配置了pymysql的ana
- 1创建窗口1 turtle.setup(width,height,startx,starty)设置主窗口的大小和位置,width如果是整数,
- 有的时候我们在学习或者工作中会使用到SQL语句,那么介绍一下limit和offset的使用方法。mysql limit与offset用法my