Python streamlit框架开发数据分析网站并免费部署

简介: 使用Python的Streamlit框架,开发了一个在线数据分析工具,替代Excel查看设备温度CSV数据。通过pandas读取数据,matplotlib绘制图表。程序处理CSV,提取所需列,计算最大最小平均值,用户可多选查看特定数据。[GitHub](https://github.com/yigedaigua/MGHB)上有完整代码,应用已部署至Streamlit Cloud。

近期公司有一个需求,将设备导出的温度数据,使用线上的方式进行分析,取代原先使用Excel的方式分析查看图表,看了python的streamlit web框架,符合此次开发需求,可以快速开发

1.数据分析思路

查看分析设备数据

设备导出的数据为CSV文件,从第14行开始为温度数据,数据使用科学计数表示,数据之间使用“逗号分隔”,数据组织较为简单

image-20240311102845129.png

2.程序开发思路

根据对CSV温度数据的分析,如此我们可以使用“pandas”库来读取所有数据,并将科学计数的数据转换为10进制表示,将转换完的数据使用图表matplotlib库展示出来即可,

3.开发

import streamlit as st
import pandas as pd
from dataprocessing import dataprocessing,datatimeSubdatatime,max_min_avg_stand
import matplotlib.pyplot as plt

import streamlit as st:导入streamlit 框架包,

import pandas as pd:读取分析CSV数据

from dataprocessing import dataprocessing,datatimeSubdatatime,max_min_avg_stand:分析时间,分析数据取最大值最小值等

import matplotlib.pyplot as plt:图表显示库

3.1 主要程序

根据对CSV文件的分析,我们使用Python中的列表存储数据,方便我们对数据进行筛选

#开始处理CSV文件并显示
# 读取CSV文件
my_bar = st.progress(0)
my_bar.progress(10, text="开始读取CSV文件")
data = pd.read_csv(uploaded_files, encoding='utf16', skiprows=13)
# 获取行数
lines = data.values.shape
print(lines)
# 提取第一行数据并去除分号
infolist = []
my_bar.progress(12, text="开始分析CSV文件")
for i in range(lines[0]):
  newinfolist = []
  cleaned_data = str(data.values[i][0]).split(';')

  # 打印清洗后的数据
  # HB时间
  HBdata = f"{cleaned_data[0]}:{cleaned_data[1]}"
  # 设定温度(电流)
  temperature = dataprocessing(cleaned_data[2])
  # 正线
  Mainline = dataprocessing(cleaned_data[3])
  # 回流管
  Returnline = dataprocessing(cleaned_data[4])
  # 流量
  Flowrate = dataprocessing(cleaned_data[11])
  # 系统压力
  Systempressure = dataprocessing(cleaned_data[14])
  # 调节比率
  Regulationratio = dataprocessing(cleaned_data[9])
  # 设定值系统压力
  Setvaluesystempressure = dataprocessing(cleaned_data[13])
  # 泵压差
  Pumppressuredifferential = dataprocessing(cleaned_data[16])
  newinfolist.append(HBdata)
  newinfolist.append(temperature)
  newinfolist.append(Returnline)
  newinfolist.append(Flowrate)
  newinfolist.append(Systempressure)
  newinfolist.append(Mainline)
  newinfolist.append(Regulationratio)
  newinfolist.append(Setvaluesystempressure)
  newinfolist.append(Pumppressuredifferential)
  infolist.append(newinfolist)

数据展示示例

 ['2023-07-06:21:52:03', 40.0,39.3, 10.0,   0.7,   38.6,   0.7,        0,       0.1]

有了列表组成的数据,那么我们对其进行找出最大值最小值就容易多了

如求出最大值,下面这个函数,将我们需要分析的列表数据的索引传到里面,并将所有数据也传进去,将返回最大值,最小值等

Settempervalue = max_min_avg_stand(1,infolist)
def max_min_avg_stand(index:int,infolist):
    # 计算每个子列表中第二个元素的最大值
    max_values = max(sublist[index] for sublist in infolist)
    # 计算每个子列表中第二个元素的最小值
    min_values = min(sublist[index] for sublist in infolist)
    # 计算平均值
    average_value = sum(sublist[index] for sublist in infolist) / len(infolist)
    # 提取第二个元素到一个列表中
    second_elements = [sublist[index] for sublist in infolist]
    # 计算标准差
    standard_deviation = np.std(second_elements)
    # 输出结果
    return [max_values, min_values, average_value,standard_deviation]

还需要实现一个功能,就是人员选择什么就是就在图表中显示什么数据,

那么我们使用streamlit框架创建一个多选框,多选框会返回一个数据,包含索引和“”列名

options = st.multiselect(
        '请选择需要查看的数据',
        ['Set temperature(current)', 'Return line', 'Flow rate', 'System pressure', 'Main line', 'Regulation ratio',
         'Set value system pressure', 'Pump pressure differential'],
        ['Set temperature(current)'])

我们再次声明一个空列表,将选择的数据名称放入其中,已便后续对已选择的数据做判断

    for count in range(len(options)):
        optionslist.append(options[count])

判断已选择的数据是否存在,存在则在图表中创建相关数据图

 if "Set temperature(current)" in optionslist:
                ax.plot(xlist, ylist, color='#000000', label='Set temperature(current)')

至此,主要代码逻辑完成

展示效果:地址:Streamlit (mgghbcsv.streamlit.app)

全部代码地址:GitHub - yigedaigua/MGHB: 这是一个通过python Steamlit框架开发的HB模温机数据分析Web

image-20240311120032592

4.部署

官方提供了免费的部署,速度还行,

需要注意:

需要将代码上传至GitHub,并在代码中包含requirements.txt所有依赖信息,

使用命令“pip freeze > requirements.txt”生成

官方部署:Streamlit • A faster way to build and share data apps

相关文章
|
8月前
|
数据采集 数据可视化 数据挖掘
Python数据分析实战:Pandas处理结构化数据的核心技巧
在数据驱动时代,结构化数据是分析决策的基础。Python的Pandas库凭借其高效的数据结构和丰富的功能,成为处理结构化数据的利器。本文通过真实场景和代码示例,讲解Pandas的核心操作,包括数据加载、清洗、转换、分析与性能优化,帮助你从数据中提取有价值的洞察,提升数据处理效率。
397 3
|
9月前
|
存储 监控 算法
淘宝买家秀 API开发实录Python(2025)
本文讲述了作者在电商开发领域,尤其是对接淘宝买家秀 API 接口过程中所经历的挑战与收获。从申请接入、签名验证、频率限制到数据处理和实时监控,作者分享了多个实战经验与代码示例,帮助开发者更高效地获取和处理买家秀数据,提升开发效率。
|
机器学习/深度学习 人工智能 自然语言处理
构建企业级数据分析助手:Data Agent 开发实践
本篇将介绍DMS的一款数据分析智能体(Data Agent for Analytics )产品的技术思考和实践。Data Agent for Analytics 定位为一款企业级数据分析智能体, 基于Agentic AI 技术,帮助用户查数据、做分析、生成报告、深入洞察。由于不同产品的演进路径,背景都不一样,所以只介绍最核心的部分,来深入剖析如何构建企业级数据分析助手:能力边界定义,技术内核,企业级能力。希望既能作为Data Agent for Analytics产品的技术核心介绍,也能作为读者的开发实践的参考。
2188 3
构建企业级数据分析助手:Data Agent 开发实践
|
7月前
|
数据可视化 大数据 关系型数据库
基于python大数据技术的医疗数据分析与研究
在数字化时代,医疗数据呈爆炸式增长,涵盖患者信息、检查指标、生活方式等。大数据技术助力疾病预测、资源优化与智慧医疗发展,结合Python、MySQL与B/S架构,推动医疗系统高效实现。
|
8月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
915 7
|
8月前
|
数据可视化 数据挖掘 大数据
基于python大数据的水文数据分析可视化系统
本研究针对水文数据分析中的整合难、分析单一和可视化不足等问题,提出构建基于Python的水文数据分析可视化系统。通过整合多源数据,结合大数据、云计算与人工智能技术,实现水文数据的高效处理、深度挖掘与直观展示,为水资源管理、防洪减灾和生态保护提供科学决策支持,具有重要的应用价值和社会意义。
|
9月前
|
存储 数据挖掘 大数据
基于python大数据的用户行为数据分析系统
本系统基于Python大数据技术,深入研究用户行为数据分析,结合Pandas、NumPy等工具提升数据处理效率,利用B/S架构与MySQL数据库实现高效存储与访问。研究涵盖技术背景、学术与商业意义、国内外研究现状及PyCharm、Python语言等关键技术,助力企业精准营销与产品优化,具有广泛的应用前景与社会价值。
|
9月前
|
算法 程序员 API
电商程序猿开发实录:淘宝商品python(2)
本文分享了开发者在对接淘宝商品详情API过程中的真实经历,涵盖权限申请、签名验证、限流控制、数据解析及消息订阅等关键环节,提供了实用的Python代码示例,帮助开发者高效调用API,提升系统稳定性与数据处理能力。
|
Web App开发 应用服务中间件 开发工具
python 第一个网站应用
python 第一个网站应用
10921 0

推荐镜像

更多