Python Steamlit 展示模拟chatgpt进行数据分析(链接分享)
·
参考链接
1. 官方文档
2. Streamlit創建你的第一個Web應用程式(需翻墙)
快速启动:
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 - 知乎
更多推荐




所有评论(0)