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

Gridstudio是一款结合Python与Excel优势的开源表格应用,可在同一界面展示可视化表格与代码,实现数据的双向修改,有效提升数据科学工作效率。

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

点击“开发者技术前线”,选择“星标?”

13:21 在看|星标|留言,  真爱


640?wx_fmt=jpeg

来自:机器之心    |   编辑:可可


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


640?wx_fmt=png


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


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


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

640?wx_fmt=gif


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

640?wx_fmt=gif


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

640?wx_fmt=gif


为什么要创建这个工具?


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


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


这个工具有何亮点?


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


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


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

640?wx_fmt=gif


核心集成:读、写


这一 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 生态中各种强大的软件包,我们能立即访问到当前最优的数据科学工具,因此也能快速访问到强大的模型,例如线性回归和支持向量机等。

640?wx_fmt=png


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


数据可视化


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

640?wx_fmt=gif


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


案例:估计正态分布


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

640?wx_fmt=gif


使用安装


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


  • git clone https://github.com/ricklamers/gridstudio

  • cd gridstudio && ./run.sh


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

参考链接:

https://hackernoon.com/introducing-grid-studio-a-spreadsheet-app-with-python-to-make-data-science-easier-tdup38f7
https://github.com/ricklamers/gridstudio

https://gridstudio.io

---END---

选择”开发者技术前线 “星标?,内容一触即达。点击原文更多惊喜!

开发者技术前线 汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。


历史推荐


生日没给女友送礼物,如何用 Python 哄女票开心

如何用 Python 写一个安卓 APP ?

今日头条 App 屏幕适配方案落地研究

640?

点个在看,解锁更多惊喜!

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在 Excel 电子表格中,回车换行符常用于分隔文本,使数据呈现多行显示。但在某些场景下,比如数据导入其他系统或进行特定计算时,这些换行符可能会引发问题。因此,批量清除或替换 Excel 中的回车换行符就显得十分关键。 我们可以通过手动操作来替换或清除 Excel 中的回车换行符。具体操作为:打开 Excel 文件,选中包含换行符的单元格或整个工作表,点击顶部的“查找和选择”按钮,在弹出的对话框中选择“替换”选项卡。在“查找内容”栏中,按住 Alt+Enter 键输入回车换行符(在无字符显示处按一次即可),在“替换为”栏中不输入任何内容,表示将回车换行符替换为空,最后点击“全部替换”按钮,Excel 会遍历整个选区,将所有回车换行符替换为空。不过,手动操作效率较低,尤其是当文件较大或需要处理多个文件时,这种方法就不太适用了。 此时,可以借助第三方工具,例如 ReplaceExcelEnterWrap.exe。这是一个专门用于批量处理 Excel 文件中回车换行符的小型应用程序。使用步骤如下:首先,下载并解压缩 ReplaceExcelEnterWrap.exe 压缩包;接着,将包含需要处理的 Excel 文件的文件夹 ReplaceExcelEnterWrap.exe 放在同一目录下;然后,运行 ReplaceExcelEnterWrap.exe 程序,它会自动搜索该目录下的所有 Excel 文件;程序会询问是否替换回车换行符以及是否清除空格,根据需求选择相应选项;最后,等待程序执行完毕,所有指定操作将在原文件上完成,无需手动保存。 除了 ReplaceExcelEnterWrap.exe,还可以使用其他编程语言(如 Python、VBA 等)编写脚本来实现批量处理。例如,在 Pyt
<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、付费专栏及课程。

余额充值