参考链接

1. 官方文档

Streamlit documentation

2. Streamlit創建你的第一個Web應用程式(需翻墙)

輕鬆製作,無需前端技能,完全使用Python!

快速启动:

1. pip安装streamlit库

pip install streamlit

2. 创建一个文件名为hello.py的文件

import streamlit as st

# 设置web页签的标题和图标(随机图标)
# 图标表情可参考:https://streamlit-emoji-shortcodes-streamlit-app-gwckff.streamlit.app/
st.set_page_config(page_title="我的网站1", page_icon=":apple:", layout="wide")
st.title("数据分析Web")

3 . 终端运行 

steamlit run hello.py --server.port 8501

4. 展示

实战页面布局

1. 标题(AI-Excel表分析):

功能1 :左侧导航栏为终端运行hello.py时路径下的excel(.xlsx结尾)的文件

功能2:右侧为读取的excel所展示的结果

功能3 :加入聊天对话 (待加入AI chatgpt模型)

2. 展示效果

3. 代码


import os
import time
import streamlit as st
import pandas as pd

# 获取文件列表
def get_file_list(suffix, path):
    """获取当前目录所有指定后缀名的文件名列表,绝对路径列表
    :param suffix: 文件后缀名
    :param path: 文件路径
    :return: 文件名列表, 绝对路径表
    """
    file_list = []
    abs_path_list = []
    # 设置topdown=False,表示先遍历子目录,再遍历父目录.如果不设置,默认是先遍历父目录,再遍历子目录
    for root, dirs, files in os.walk(path, topdown=False):
        for file in files:
            if os.path.splitext(file)[1] == suffix:
                file_list.append(file)
                abs_path_list.append(os.path.join(root, file))
    return file_list, abs_path_list
    
st.set_page_config(page_title="数据分析", page_icon=":shark:", layout="wide")
st.title("AI-Excel表分析")
load_folder = os.path.abspath(os.path.dirname(__file__))

# 提供用户输入,可能存在其他目录文件被查看风险
# input_folder = st.sidebar.text_input("输入数据所在的目录:(默认为当前目录)",
#                                      value=load_folder,
#                                      max_chars=100, key=None, type='default')
input_folder = load_folder
path = input_folder

# _, file_list_xlsx = get_file_list(".xlsx", path)
file_list_xlsx, _ = get_file_list(".xlsx", path)
print(file_list_xlsx)
if not file_list_xlsx:
    st.sidebar.text("当前目录下没有xlsx文件")
else:
    select_file = st.sidebar.selectbox(
        "选择数据文件:", 
        file_list_xlsx
        )
    st.write("你选择的文件是:", select_file)
    # 提取数据。读取的数据做缓存,避免每次都读取
    @st.cache_data
    def load_data(path):
        df = pd.read_excel(path)
        # 将列名转换为小写
        df.columns = df.columns.str.lower()
        return df
    df = load_data(select_file)
    st.dataframe(df, use_container_width=True)
        
    if "messages" not in st.session_state:
        st.session_state["messages"] = [{"role": "assistant", "content": "你需要什么帮助?"}]
    for msg in st.session_state.messages:
        if msg.get("content"):
            st.chat_message(msg["role"]).write(msg["content"])
    input_text = st.chat_input(max_chars=20, placeholder="输入你的问题,最多20个字符")

    #对输入的请求进行处理
    if input_text:
        st.session_state.messages.append({"role": "user", "content": input_text})
        st.chat_message("user").write(input_text)
        # 时间格式年月日时分秒
        now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        input_text_to_bot = "问题:"+input_text + "   未接入GPT,暂时无法回答您的问题 " + now_time
        msg = input_text_to_bot
        with st.chat_message("assistant"):
            st.session_state.messages.append({"role": "assistant", "content": msg})
            st.write(msg)
                    

附加:

①调试技巧:实时渲染

启动网站后,页面右上角选择Settings,勾选✔Run on save 改了代码保存后界面实时更新

② streamlit和其他相关库的比较(链接参考)

深度比较Python Streamlit和Gradio,谁是真正的利器?

快速生成 AI 应用的框架对比:Gradio、Streamlit 和 Dash - 知乎

Streamlit Gradio等Python Web应用程序库 - 知乎

Streamlit 與 Gradio:Python框架的深度比較

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐