向Excel说再见,神级编辑器统一表格与Python!

Grid Studio是一个结合Python的在线表格应用,提供类似Excel的界面和Python的数据处理能力。它允许用户直接在表格中编写Python脚本进行数据操作,同时也支持数据的读写、自定义函数以及数据可视化。该项目旨在解决数据科学工作流分散的问题,通过集成Python生态系统,用户可以利用各种数据科学工具和模型。安装和使用非常便捷。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多开发者说自从有了 Python/Pandas,Excel 都不怎么用了,用它来处理与可视化表格非常快速。但是这样还是有一大缺陷,操作不是可视化的表格,因此对技能要求更高一点。近日,开发者构建了名为 Grid studio 的开源项目,它是一个基于网页的表格应用,完全结合了 Python 和 Excel 的优势。

 

是的,在一个界面上同时展示可视化表格与代码,而且同时通过表格与代码修改数据,这不就是 Python 与 Excel 的结合吗?

 

项目地址:https://github.com/ricklamers/gridstudio

 

我们先看看 Grid studio 的效果到底是什么样的。总体而言,我们既可以通过 Python 加载和处理数据,也能通过「Excel」操作数据。

 

在 Python 上处理数据比较好理解,表格上处理数据其实非常像 Excel,如下所示为写一个求和公式。

 

 

也许我们在表格上改了些数据,那么我们也能导入到 NumPy 数组,并做进一步的运算。

 

为什么要创建这个工具?

 

作者表示,他创建 Grid studio 主要是用来解决数据科学项目中工作流分散的问题,在这种项目中,他要在 R studio、Excel 等多个工具之间换来换去。

 

在为 gazillionth-time 导出 CSV 文件时,如果行数过高,应用程序窗口就会卡顿。即使是做一些简单的事情,比如读取 JSON 文件,也能把人逼疯。现有的工具无法提供高效工作所需的环境和相关工作流,这也是作者决定构建该工具的原因。他想要创建一个易用的应用程序,可以把数据科学工作流整合进去。

 

这个工具有何亮点?

 

Grid studio 是一个基于网页的应用,看起来和 Google Sheets、Microsoft Excel 差不多。然而,它的杀手锏是整合了 Python 语言。

 

几乎所有使用过计算机的人都会很自然地使用表格来查看和编辑数据。将这个简单的 UI 与 Python 这种成熟的编程语言结合起来简直不要太好用。

 

用 Python 编写脚本非常简单:只需编写几行代码直接运行即可。

 

核心集成:读、写

 

这一 Python 集成的核心是对电子表格的读写接口,它可以在电子表格的数据和 Python 进程中的数据之间建立一个高性能的连接。

 

可以用以下方式在表格中写入数据:

sheet("A1:A3", [1, 2, 3])

 

用以下这种方式从表格中读取数据:

my_matrix = sheet("A1:A3")

 

你可以通过这种简单而高效的方式直接在表格中读取或写入数据,以自动化数据输入、提取、可视化等过程。

 

编写定制化表格函数

 

虽然通过一个简单的接口完成读写非常灵活,但有时编写可以直接调出的定制化函数也很重要。

 

除了 AVERAGE、SUM、IF 这些默认函数外,你可能还需要其他函数,那么写出来就好了!

def UPPERCASE(a):
    return str(a).uppercase()

 

写完这行代码后,在表格中调出该函数,就像调用常规函数一样。

 

利用 Python 生态

 

通过利用 Python 生态中各种强大的软件包,我们能立即访问到当前最优的数据科学工具,因此也能快速访问到强大的模型,例如线性回归和支持向量机等。

 

因为本身 Grid studio 主要就是处理表格数据,那么将它们作为特征可以快速调用 SVM 等模型,从而探索隐藏在这些数据背后的特征。

 

数据可视化

 

在数据科学中,很常见的一个任务就是可视化数据,这样才能获得关于数据的「先验知识」。通过集成交互式绘图库 Plotly.js 和 Python 标准可视化库 Matplotlib,Grid studio 目前已经内置了高级绘图功能。如下所示我们可以在向量表格格式上使用高级绘图功能:

 

为了进一步解释如何使用 Grid studio 的特征以构建可视化图标,项目作者还展示了两个案例,即爬取网页与可视化数据分布,但这里主要展示第一个案例。

 

案例:估计正态分布

私信博主  01  领取更多学习教程!

如下案例展示了 Grid studio 的强大功能,它会以更高的保真度通过 Plotly.js 可视化正态分布,我们可以看看交互式制图到底是如何完成的。

 

使用安装

 

前面介绍了这么多特性,那么我们到底该怎么用呢?Grid studio 的安装和使用都非常简单,通过简单的命令行就能搞定。

 

  • git clone https://github.com/ricklamers/gridstudio
  • cd gridstudio && ./run.sh

 

如上通过下载项目、运行安装脚本两步,我们就能在浏览器中打开本地端口,然后就能愉快地使用了。

 

<think>我们正在设计一个使用CSV文件存储数据的学生信息管理系统。CSV(Comma-SeparatedValues)是一种常用的数据存储格式,它可以用文本编辑器打开,并且易于被Excel等工具处理。在Python中,我们可以使用内置的csv模块来读写CSV文件。系统功能通常包括:1.添加学生信息2.删除学生信息3.修改学生信息4.查询学生信息5.显示所有学生信息6.将数据保存到CSV文件7.从CSV文件加载数据我们将设计一个类`StudentManagementSystem`来管理这些操作。每个学生信息可以包括学号、姓名、性别、年龄、专业等。步骤:1.定义学生信息的结构,我们使用字典来表示每个学生,用列表来存储所有学生。2.使用csv模块读取和写入CSV文件。3.实现上述功能。注意:CSV文件的第一行通常是标题行(字段名)。我们假设CSV文件的格式如下:学号,姓名,性别,年龄,专业代码结构:1.初始化系统时,从指定的CSV文件加载数据(如果文件存在)。2.提供方法用于添加、删除、修改、查询和显示学生信息。3.在每次修改数据后,可以选择立即保存到CSV文件,或者在退出时保存。下面我们实现这个系统,为了简单起见,我们每次操作后都保存到文件(也可以改为退出时保存,但注意异常处理)。我们将实现以下方法:-`__init__(self,filename)`:构造函数,指定CSV文件名,并加载数据。-`load_data(self)`:从CSV文件加载数据到内存。-`save_data(self)`:将内存中的数据保存到CSV文件。-`add_student(self,student_id,name,gender,age,major)`:添加学生。-`delete_student(self,student_id)`:根据学号删除学生。-`update_student(self,student_id,name=None,gender=None,age=None,major=None)`:更新学生信息,如果某个参数为None,表示不修改该字段。-`find_student(self,student_id)`:根据学号查找学生,返回学生信息。-`list_all_students(self)`:列出所有学生信息。注意:学号是唯一标识。由于我们每次操作后都保存,所以每次修改都会写文件。如果数据量大,可以考虑在退出时保存,但需要处理异常以防止数据丢失。现在开始编写代码:</think>### Python学生信息管理系统(CSV存储实现) 我将为您设计一个使用CSV文件存储数据的学生信息管理系统。CSV格式简单易用,适合存储表格数据,且Excel等工具兼容[^1]。 #### 核心实现代码 ```python import csv import os class StudentManagementSystem: def __init__(self, filename='students.csv'): self.filename = filename self.fieldnames = ['学号', '姓名', '性别', '年龄', '专业'] self.students = [] self.load_data() # 启动时自动加载数据 def load_data(self): """从CSV文件加载学生数据""" if os.path.exists(self.filename): with open(self.filename, 'r', newline='', encoding='utf-8') as f: reader = csv.DictReader(f) self.students = list(reader) print(f"成功加载 {len(self.students)} 条学生记录") else: print("数据文件不存在,将创建新文件") def save_data(self): """保存数据到CSV文件""" with open(self.filename, 'w', newline='', encoding='utf-8') as f: writer = csv.DictWriter(f, fieldnames=self.fieldnames) writer.writeheader() writer.writerows(self.students) print(f"数据已保存至 {self.filename}") def add_student(self): """添加学生信息""" student = { '学号': input("请输入学号: "), '姓名': input("请输入姓名: "), '性别': input("请输入性别: "), '年龄': input("请输入年龄: "), '专业': input("请输入专业: ") } self.students.append(student) self.save_data() print("学生信息添加成功!") def delete_student(self): """删除学生信息""" student_id = input("请输入要删除的学号: ") for i, s in enumerate(self.students): if s['学号'] == student_id: del self.students[i] self.save_data() print("学生信息删除成功!") return print("未找到该学号对应的学生") def update_student(self): """修改学生信息""" student_id = input("请输入要修改的学号: ") for s in self.students: if s['学号'] == student_id: print(f"当前信息: {s}") s['姓名'] = input("新姓名(直接回车保持原值): ") or s['姓名'] s['性别'] = input("新性别(直接回车保持原值): ") or s['性别'] s['年龄'] = input("新年龄(直接回车保持原值): ") or s['年龄'] s['专业'] = input("新专业(直接回车保持原值): ") or s['专业'] self.save_data() print("学生信息更新成功!") return print("未找到该学号对应的学生") def search_student(self): """查询学生信息""" keyword = input("请输入学号或姓名: ") results = [s for s in self.students if keyword in (s['学号'], s['姓名'])] if results: print("\n查询结果:") for s in results: print(f"学号: {s['学号']}, 姓名: {s['姓名']}, 性别: {s['性别']}, 年龄: {s['年龄']}, 专业: {s['专业']}") else: print("未找到匹配的学生") def display_all(self): """显示所有学生信息""" if not self.students: print("暂无学生信息") return print("\n所有学生信息:") for s in self.students: print(f"学号: {s['学号']}, 姓名: {s['姓名']}, 性别: {s['性别']}, 年龄: {s['年龄']}, 专业: {s['专业']}") # 主程序 def main(): system = StudentManagementSystem() while True: print("\n===== 学生信息管理系统 =====") print("1. 添加学生") print("2. 删除学生") print("3. 修改学生") print("4. 查询学生") print("5. 显示所有") print("0. 退出系统") choice = input("请选择操作: ") if choice == '1': system.add_student() elif choice == '2': system.delete_student() elif choice == '3': system.update_student() elif choice == '4': system.search_student() elif choice == '5': system.display_all() elif choice == '0': print("感谢使用,再见!") break else: print("无效选项,请重新选择") if __name__ == "__main__": main() ``` #### 系统特点 1. **CSV数据存储** - 使用Python内置`csv`模块处理数据 - 自动创建CSV文件并添加表头 - 每次修改后自动保存,确保数据持久化 2. **完整功能实现** - 增删改查(CRUD)功能齐全 - 模糊查询支持(按学号或姓名) - 批量显示所有学生信息 3. **用户友好设计** - 简洁的菜单界面 - 操作提示清晰 - 修改时可保留原值(直接回车) 4. **数据安全** - 启动时自动加载现有数据 - 使用UTF-8编码支持中文 - 异常处理(文件不存在时自动创建) #### 使用方法 1. 运行程序自动创建`students.csv`文件 2. 通过数字选择菜单功能 3. 添加学生信息后自动保存到CSV 4. 退出后再次启动自动加载历史数据 此实现基于Python标准库,无需额外安装包,兼容Python 3.x版本。CSV文件可直接用Excel打开编辑[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值