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

相关文章
|
6天前
|
机器学习/深度学习 监控 算法
Python数据分析与机器学习在金融风控中的应用
Python数据分析与机器学习在金融风控中的应用
31 12
|
3天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
17 4
|
4天前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
微软在 UserVoice 上运营着⼀个反馈论坛,每个⼈都可以在这⾥提交新点⼦供他⼈投票。票数最⾼的功能请求是“将 Python 作为Excel 的⼀门脚本语⾔”,其得票数差不多是第⼆名的两倍。尽管⾃2015 年这个点⼦发布以来并没有什么实质性进展,但在 2020 年年末,Python 之⽗ Guido van Rossum 发布推⽂称“退休太无聊了”,他将会加入微软。此事令 Excel ⽤户重燃希望。我不知道他的举动是否影响了 Excel 和 Python 的集成,但我清楚的是,为何⼈们迫切需要结合 Excel 和 Python 的⼒量,⽽你⼜应当如何从今天开始将两者结合起来。总之,这就是本
|
4天前
|
机器学习/深度学习 物联网 TensorFlow
使用Python实现深度学习模型:在嵌入式设备上的部署
【7月更文挑战第11天】 使用Python实现深度学习模型:在嵌入式设备上的部署
10 2
|
6天前
|
数据采集 机器学习/深度学习 数据挖掘
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
|
5天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:跨平台模型移植与部署
【7月更文挑战第10天】 使用Python实现深度学习模型:跨平台模型移植与部署
10 1
|
6天前
|
数据采集 搜索推荐 算法
Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐
Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐
|
1天前
|
数据采集 数据挖掘 数据处理
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
【7月更文挑战第14天】Python的Pandas和NumPy库是数据分析的核心工具。Pandas以其高效的数据处理能力,如分组操作和自定义函数应用,简化了数据清洗和转换。NumPy则以其多维数组和广播机制实现快速数值计算。两者协同工作,如在DataFrame与NumPy数组间转换进行预处理,提升了数据分析的效率和精度。掌握这两者的高级功能是提升数据科学技能的关键。**
7 0
|
2天前
|
Python
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
4 0
|
2天前
|
前端开发 JavaScript API
MkDocs是一个用Python编写的快速、简单且易于定制的静态网站生成器
MkDocs是一个用Python编写的快速、简单且易于定制的静态网站生成器
4 0