纯Python构建Web应用:Remi与 Pandas 结合实现数据分析与展示

引言

大家好,我是 ICodeWR。在前几篇文章中,我们介绍了 Remi 的基础功能、多页面应用、动态更新、与 Flask 结合、与数据库结合以及与 Matplotlib 结合。

今天将深入探讨如何将 Remi 与 Pandas 结合,实现数据分析与展示功能。

Pandas 是 Python 中最流行的数据分析库之一,通过将其与 Remi 结合,我们可以在 Web 应用中动态展示数据分析结果。


Pandas 简介

Pandas 是一个强大的数据分析库,提供了高效的数据结构(如 DataFrame)和数据处理功能。

通过将 Pandas 与 Remi 结合,我们可以在 Web 应用中动态展示数据分析结果,例如表格、统计信息和图表。


案例:创建一个数据分析与展示应用

我们将通过一个数据分析与展示应用的案例,演示如何将 Remi 与 Pandas 结合。最终效果如下:

前端(Remi)

  • 显示数据表格。
  • 提供按钮,用于加载数据和展示统计信息。

后端(Pandas)

  • 使用 Pandas 加载和分析数据。
  • 将分析结果嵌入到 Remi 应用中。

代码实现

1. 安装依赖

在开始之前,确保已安装 Pandas 和 Remi。

在项目 RemiEg 目录下创建 day10 子目录,然后在 RemiEg 目录下执行:

# 添加 pandas 库
uv add pandas remi

# 激活虚拟环境
.\.venv\Scripts\activate

2. 数据准备

在day10目录下创建一个 CSV 文件 data.csv,内容如下:

Name,Age,City
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago
Diana,28,Houston

3. Remi 前端代码

在day10目录下创建remi_pandas_app.py,其代码如下:

from remi import start, App, gui
import pandas as pd

class PandasApp(App):
    def __init__(self, *args):
        super(PandasApp, self).__init__(*args)

    def main(self):
        # 创建一个垂直布局容器作为根容器
        root_container = gui.VBox(width=600, style={'margin': 'auto', 'padding': '20px', 'border': '1px solid #ccc'})

        # 创建标题标签
        title = gui.Label("数据分析与展示", style={'font-size': '24px', 'text-align': 'center', 'margin-bottom': '20px'})

        # 创建数据表格容器
        self.table = gui.Table(width='100%', height=200, style={'margin-bottom': '20px'})

        # 初始化表头 - 正确的方法
        self.header_row = gui.TableRow()
        
        for text in ['Name', 'Age', 'City']:
            self.header_row.append(gui.TableItem(text))
        self.table.append(self.header_row)


        # 创建统计信息标签
        self.stats_label = gui.Label("统计信息将显示在这里", style={'font-size': '16px', 'text-align': 'center', 'margin-bottom': '20px'})

        # 创建加载数据按钮
        load_button = gui.Button("加载数据", width=100, height=30)
        load_button.onclick.do(self.on_load_clicked)

        # 创建展示统计信息按钮
        stats_button = gui.Button("展示统计信息", width=150, height=30)
        stats_button.onclick.do(self.on_stats_clicked)

        # 将所有组件添加到根容器中
        root_container.append(title)
        root_container.append(self.table)
        root_container.append(self.stats_label)
        root_container.append(load_button)
        root_container.append(stats_button)

        # 返回根容器
        return root_container

    def on_load_clicked(self, widget):
        try:
            # 加载 CSV 数据
            self.df = pd.read_csv('data.csv')
            
            # 清空表格(保留表头)
            keys=[]

            if len(self.table.children) > 1:  # 保留第一行(表头)
                for key, value in self.table.children.items():
                    if value != self.header_row:
                        keys.append(key)
                for key in keys:
                    self.table.remove_child(self.table.children[key])

            # 添加数据行 - 正确的方法
            for _, row in self.df.iterrows():
                table_row = gui.TableRow()
                table_row.append(gui.TableItem(str(row['Name'])))
                table_row.append(gui.TableItem(str(row['Age'])))
                table_row.append(gui.TableItem(str(row['City'])))
                self.table.append(table_row)
        except Exception as e:
            self.stats_label.set_text(f"加载数据失败: {str(e)}")

    def on_stats_clicked(self, widget):
        if hasattr(self, 'df'):
            try:
                # 计算统计信息
                stats = self.df['Age'].describe()
                # 更新统计信息标签
                self.stats_label.set_text(f"统计信息:\n{stats.to_string()}")
            except Exception as e:
                self.stats_label.set_text(f"计算统计信息出错: {str(e)}")
        else:
            self.stats_label.set_text("请先加载数据!")

# 启动 Remi 应用
if __name__ == "__main__":
    start(PandasApp, address='0.0.0.0', port=8080)

运行步骤

启动 Remi 应用:

# 进入 day10 子目录
cd day10

# 执行脚本
python remi_pandas_app.py

打开浏览器,访问 http://127.0.0.1:8080,你将看到一个数据分析与展示应用。

首界面:

加载数据后:

统计数据:



代码解析

Pandas 数据加载

  • 使用 pd.read_csv 加载 CSV 数据。

Remi 表格显示

  • 使用 gui.Table 组件显示数据表格。
  • 通过 from_2d_matrix 方法动态更新表格内容。

统计信息计算

  • 使用 Pandas 的 describe 方法计算统计信息。

事件处理

  • 通过 on_load_clicked 方法处理加载数据按钮点击事件。
  • 通过 on_stats_clicked 方法处理展示统计信息按钮点击事件。

总结

今天详细记录了如何将 Remi 与 Pandas 结合,并通过一个数据分析与展示应用的案例演示了数据分析与展示的实现。在接下来的文章中,我们将深入探讨 Remi 与其他 Python 库的集成。


交流讨论

  1. 你在使用 Remi 与 Pandas 结合时遇到过哪些问题?欢迎在评论区分享!
  2. 你希望在本系列中看到哪些 Remi 的实际应用场景?欢迎留言告诉我们!

附录:本篇案例用到的函数原型

1. pd.read_csv 方法

功能:读取 CSV 文件并返回 DataFrame。

原型

pd.read_csv(filepath_or_buffer, **kwargs)

示例

df = pd.read_csv('data.csv')

2. DataFrame.describe 方法

功能:生成描述性统计信息。

示例

stats = df['Age'].describe()

3. gui.Table.from_2d_matrix 方法

功能:用二维数组填充表格。

原型

table.from_2d_matrix(matrix, first_row=None)

示例

self.table.from_2d_matrix(self.df.values.tolist(), first_row=['Name', 'Age', 'City'])

将陆续更新 Python 编程相关的学习资料!

作者:ICodeWR

标签:#编程# #python# #在头条记录我的2025# #春日生活打卡季#


相关文章

Python数据分析(四)

现在上手一个数据分析实际案例: 从数据结果集本身入手,使用通用性检查分析数据+业务规则校验是否有异常,最终形成分析报告,若有问题及时做出人工干预 背景:数据最终到应用层面,会经过很多前面很多节点处理...

今天我学习了Python数据统计分析教程,把笔记分享出来

一、环境搭建1. 安装 Python :从官网下载适合你操作系统的版本并安装,建议勾选 “Add Python to PATH” 选项。2. 安装相关库 :常用的有 NumPy(数值计算)、Panda...

Python数据分析(三)

续接Python分析,本篇主要是关于python中一些高阶函数的应用以下是针对你提到的几个高级知识点(数据合并、apply、iterrows、agg、map)的详细解释和案例,帮助你系统学习和理解这些...

Python 数据分析必学的 10 个核心库:从基础操作到高阶建模全攻略

在Python数据分析领域,掌握核心工具库能让你效率倍增。本文精选10个高实用性库,结合代码示例详解从数据处理到机器学习的全流程操作,助你快速进阶数据分析高手。一、Pandas:结构化数据处理的全能选...

工业数据分析工具的力量:用Python释放数据的潜能

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。如需转载请附上本文源链接!工业数据是现代制造业和工程领域的重要资源。从设备的实时运行指标到生产线的整体效率数据,工...

Python数据分析实战:以数据分析岗为例,探索行业与薪资关联性

金三银四,数据分析师成为众多行业竞相追逐的热门岗位,想知道如何在这个领域精准发力、脱颖而出吗?今天,我将以 BOSS 直聘上的数据为样本,借助 Python 强大的数据分析能力,深度剖析各个行业与薪资...