用python做数据分析的流程(用Python自制了一张网页)
用python做数据分析的流程(用Python自制了一张网页)var_list = list(df.columns) option3 = st.sidebar.multiselect( '筛选出您希望在数据分析报告中包含的变量' var_list) df = df[option3] 用户可以挑选到底是“简单分析”或者是“完整分析”,要是勾选的是“完整分析”的话,会跳出相应的提示,提示“完整分析”由于涉及到更加复杂的计算操作,耗时更加地长,要是遇到大型的数据集,还会有计算失败的情况出现if uploaded_file is not None: df = pd.read_csv(uploaded_file) option1 = st.sidebar.radio( '您希望您的数据分析报告中包含哪些变量呢' ('所有变量'
作者:俊欣
来源:关于数据分析与可视化
今天小编带领大家用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={
"简介": '欢迎关注公众号:关于数据分析与可视化'
"作者": '俊欣'
"时间": '2022.05'
})
st_profile_report(profile)
elif mode=='minimal':
profile=ProfileReport(df1
minimal=True
title="User uploaded table"
progress_bar=True
dataset={
"简介": '欢迎关注公众号:关于数据分析与可视化'
"作者": '俊欣'
"时间": '2022.05'
})
st_profile_report(profile)
最后出来的结果如下,这里再来显示一遍