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月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
581 0
|
8月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
638 1
|
8月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
704 0
|
8月前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
388 0
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
1186 4
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
416 2
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
677 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
1870 4
数据分析的 10 个最佳 Python 库
|
供应链 数据可视化 数据挖掘
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
本文详细介绍了第十一届泰迪杯数据挖掘挑战赛B题的解决方案,涵盖了对产品订单数据的深入分析、多种因素对需求量影响的探讨,并建立了数学模型进行未来需求量的预测,同时提供了Python代码实现和结果可视化的方法。
648 3
【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一
|
机器学习/深度学习 数据采集 数据可视化
数据分析之旅:用Python探索世界
数据分析之旅:用Python探索世界
230 3

推荐镜像

更多