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

相关文章
|
24天前
|
存储 数据库连接 API
Python环境变量在开发和运行Python应用程序时起着重要的作用
Python环境变量在开发和运行Python应用程序时起着重要的作用
65 15
|
20天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
23天前
|
JSON API 数据格式
如何使用Python开发1688商品详情API接口?
本文介绍了如何使用Python开发1688商品详情API接口,获取商品的标题、价格、销量和评价等详细信息。主要内容包括注册1688开放平台账号、安装必要Python模块、了解API接口、生成签名、编写Python代码、解析返回数据以及错误处理和日志记录。通过这些步骤,开发者可以轻松地集成1688商品数据到自己的应用中。
31 1
|
29天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
1月前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
Pandas 和 NumPy 是 Python 中不可或缺的数据处理和分析工具。本文通过实际案例深入剖析了 Pandas 的数据清洗、NumPy 的数组运算、结合两者进行数据分析和特征工程,以及 Pandas 的时间序列处理功能。这些高级技巧能够帮助我们更高效、准确地处理和分析数据,为决策提供支持。
40 2
|
19天前
|
数据采集 数据可视化 数据挖掘
掌握Python数据分析,解锁数据驱动的决策能力
掌握Python数据分析,解锁数据驱动的决策能力
|
27天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
27天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
29天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
1月前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第33天】本文将介绍如何使用Python编程语言进行数据分析和可视化。我们将从数据清洗开始,然后进行数据探索性分析,最后使用matplotlib和seaborn库进行数据可视化。通过阅读本文,你将学会如何运用Python进行数据处理和可视化展示。