再见 Excel,你好 Python Spreadsheets!⛵
highlight: a11y-dark
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情
- 💡 作者:韩信子@ShowMeAI
- 📘 数据分析 ◉ 技能提升系列:http://www.showmeai.tech/tutorials/33
- 📘 数据分析实战系列:http://www.showmeai.tech/tutorials/40
- 📘 本文地址:http://www.showmeai.tech/article-detail/294
- 📢 声明:版权所有,转载请联系平台与作者并注明出处
- 📢 收藏ShowMeAI查看更多精彩内容
Excel是大家最常用的数据分析工具之一,借助它可以便捷地完成数据清理、统计计算、数据分析(数据透视图)和图表呈现等。
但是!大家有没有用 Excel 处理过大一些的数据(比如几十上百万行的数据表),Excel 就会变得非常慢,甚至直接崩溃。
辛辛苦苦做一半的工作很有可能要重做!那就不只是 Excel 崩溃了,我们也得一边崩溃一边加班赶 deadline。
在本篇文中,ShowMeAI 将给大家介绍到 Python 中非常好用的交互式表格工具,它们的功能性和使用便捷度和 Excel 相当,同时有很好的内存优化,非常适合处理大文件表格。
工具1:Mito
Mito 是 Python 中的电子表格,它同时拥有 Excel 电子表格的简单易用性和 Python 的强大功能。我们可以像使用 Excel 一样使用 Mito,并且在我们执行每个操作之后,Mito 将自动生成与每个操作对应的 Python 代码。
使用 Mito 工具库,我们首先需要安装 Python 和 Jupyter Notebook 或 Jupyter Lab, 然后我们通过终端或命令行运行以下命令来安装 Mito。
python -m pip install mitoinstaller
python -m mitoinstaller install
下面我们来演示一下,如何在 Mito 中完成我们在 Excel 中的操作,如读取文件、创建列、数据透视表、可视化等。
💡 Mito:文件读取
Excel 默认对文件行数有限制。在内存足够时,Excel 可以打开数百万行的文件,但是只显示前 1048576 行。感兴趣的话可以测试下这个数据~同样在内存充足的情况下,Mito 打开文件的大小没有限制。来看具体操作!
读入表格文件
在读取 CSV 文件之前,先导入工具库,创建一个 Mito 电子表格对象,代码如下:
import mitosheet
mitosheet.sheet()
接下来的读取操作就可以用鼠标完成了, 下图的演示中,使用到的数据集是学校成绩数据集,大家可以在ShowMeAI的百度网盘地址下载 。 下载文件后,单击『+』或『导入』按钮进行阅读,如下图所示:
🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [7] 使用 Mito 和 Bamboolib 进行超大量数据的处理(Python) 『Spreadsheets 数据集』
⭐ ShowMeAI官方GitHub:http://github.com/ShowMeAI-Hub
自动生成代码
除了导入之外,还会自动生成下面的代码。(这本是需要熟悉 Pandas 工具库的同学通过编码完成的。但现在我们简单操作之后,就可以自动生成了!)
import pandas as pd
StudentsPerformance_csv = pd.read_csv(r'StudentsPerformance.csv')
💡 Mito:基本表格操作
在 Excel 中,我们会创建一个『宏』来记录一组可以随时执行的操作。对应到 Mito中,我们可以做同样的事情,借助于 Python 生态与各种开源库,我们可以完成更多自动化的操作,比如处理完表格之后通过电子邮件发送报告,使用微信发送文件,导入数据到数据库中等。
下面我们用 Mito 执行一些操作,就好像我们在使用 Excel 一样。
创建新列&重命名列
如果要创建新列,只需单击『添加列』按钮。默认情况下,『Add Col』按钮将创建一个名为『new-column』的列,我们将通过双击列名将其重命名为『average』。
自动代码生成
这一步结束后,Mito 又生成了与我们在电子表格上执行的操作相对应的 Python 代码!
```
Added column new-column-uca5 to StudentsPerformance_csv
StudentsPerformance_csv.insert(8, 'new-column-uca5', 0)
Renamed new-column-uca5 to average in StudentsPerformance_csv
StudentsPerformance_csv.rename(columns={'new-column-uca5': 'average'}, inplace=True) ```
💡 Mito:统计分析
我们经常要对数据做统计分析,如果要对一行做统计计算,我们只需将公式写在一个单元格中。
求平均统计
假设我们要计算数学、阅读和写作的平均分数。 我们只需要在『average』列的任何单元格中填入公式 (math score+reading score+writing score)/3
,如下图所示:
自动代码生成
同样 Mito 生成了pandas的统计代码:
```
Set new-column-uca5 in StudentsPerformance_csv to =(math score+reading score+writing score)/3
StudentsPerformance_csv['average'] = (StudentsPerformance_csv['math score']+StudentsPerformance_csv['reading score']+StudentsPerformance_csv['writing score'])/3 ```
💡 Mito:数据透视表
在Mito中创建数据透视表同样非常简单,单击『数据透视』按钮, 然后选择行、列和值。
创建数据透视表
下图演示了我们创建一个数据透视表,在『种族/民族』列中显示 A、B、C、D 和 E 组的数学和阅读分数的平均值。
自动生成代码
同样在Mito操作过后,我们生成了如下的 Python 代码。
```
Imported StudentsPerformance.csv
import pandas as pd StudentsPerformance_csv = pd.read_csv(r'StudentsPerformance.csv')
Pivoted StudentsPerformance_csv into df2
unused_columns = StudentsPerformance_csv.columns.difference(set(['race/ethnicity']).union(set([])).union(set({'math score', 'reading score'}))) tmp_df = StudentsPerformance_csv.drop(unused_columns, axis=1) pivot_table = tmp_df.pivot_table( index=['race/ethnicity'], values=['math score', 'reading score'], aggfunc={'math score': ['mean'], 'reading score': ['mean']} ) pivot_table.columns = [flatten_column_header(col) for col in pivot_table.columns.values] df2 = pivot_table.reset_index() ```
💡 Mito:可视化&绘图
使用 Mito 可以轻松创建饼图和条形图等基本图例用于可视化, 我们只需要点击『图表』并选择图表类型。
条形图示例
让我们为之前创建的数据透视表创建一个条形图,在 X 轴上显示『种族/民族』,在 Y 轴上显示『数学分数平均值』。
很炫酷有没有!而且 a、b、c 和 d 中生成的代码行相当于 Excel 宏, 每次我们运行代码时,我们都会执行所有记录下来的操作。
工具2:Bamboolib
当我们在Excel工作簿中进行内存密集型计算时,它非常容易卡顿感和崩溃,但这些计算在 Python 中是非常简单可以完成的,我们可以结合另一个名为bamboolib 的 Python 库完成一系列数据操作。
大家可以通过命令 pip install --upgrade bamboolib --user
安装 bamboolib。
安装完成之后,我们运行以下命令来读取 CSV 或 Excel 文件。
import bamboolib as bam
bam
📢 Bamboolib:大文件读取
在这里,我们使用包含超过 100 万行的 CSV 大文件sales-data-1M来讲解操作和计算实现,大家可以在ShowMeAI的百度网盘地址下载。
🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [7] 使用 Mito 和 Bamboolib 进行超大量数据的处理(Python) 『Spreadsheets 数据集』
⭐ ShowMeAI官方GitHub:http://github.com/ShowMeAI-Hub
和 Mito 工具库一样,Bamboolib 也为我们生成代码如下
后续内容中我们只演示步骤,但会隐藏生成的代码,大家可以实际操作来查看生成的代码
import pandas as pd
df = pd.read_csv('./data/sales-data.csv', sep=',', decimal='.', nrows=100000)
df
📢 Bamboolib:新建列&统计计算
如果我们要创建一个新列,我们可以在搜索栏上搜索『列命名』操作,然后键入列公式。下图演示我们使用公式创建一个『价格』列 (revenue/quantity)
.
📢 Bamboolib:数据透视表
下面我们在搜索栏中输入『数据透视表』。 然后我们在数据行中按产品对数据进行分组,并使用『sum』作为聚合函数,整个操作如下图所示:
📢 Bamboolib:可视化&绘图
接下来,我们创建一个饼图。 我们点击『Create Plot』按钮,选择图形类型,然后选择我们想要显示的值。
📢 Bamboolib:信息/属性抽取
下面我们从『日期』列中提取属性,我们希望提取出月份,要完成这个操作,我们会将『日期』列的数据类型更改为 date
(现在类型为 str
),然后再提取属性。操作动图演示如下:
参考资料
- 🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [7] 使用 Mito 和 Bamboolib 进行超大量数据的处理(Python) 『Spreadsheets 数据集』
- ⭐ ShowMeAI官方GitHub:http://github.com/ShowMeAI-Hub
- 📘 Mito 官方文档 http://docs.trymito.io/
- 📘 Mito Github http://github.com/mito-ds/monorepo
- 📘 Mito 使用示例 http://github.com/mito-ds/mito-demo
- 📘 Bamboolib官方文档 http://bamboolib.8080labs.com/
- 📘 Bamboolib Github http://github.com/tkrabel/bamboolib
- 感谢飞书放过幕布!100个GPT-4实战案例;GPT-4免费平替Poe;AI绘画新手指南之SD篇;new Bing靠谱教程 | ShowMeAI日报
- whylogs工具库的工业实践!机器学习模型流程与效果监控 ⛵
- 脉脉疯传!2023年程序员生存指南;多款prompt效率加倍工具;提示工程师最全秘籍;AI裁员正在发生 | ShowMeAI日报
- 中国风?古典系?AI中文绘图创作尝鲜!⛵
- Python中内置数据库!SQLite使用指南!
- Pandas中你一定要掌握的时间序列相关高级功能
- 数据科学家赚多少?数据全分析与可视化 ⛵
- 交互式仪表板!Python轻松完成!⛵
- ChatGPT!我是你的破壁人;比尔·盖茨不看好Web3与元宇宙;FIFA押中4届世界杯冠军;GitHub今日热榜 | ShowMeAI资讯日报
- ChatGPT要收费了;华尔街大裁员;阿里2023十大科技趋势;小红书元宇宙虚拟服饰被吐槽;GitHub今日热榜 | ShowMeAI资讯日报
- AI创业时代!这9个方向有钱途;AIGC再添霸榜应用Lensa;美团SemEval2022冠军方法分享;医学图像处理工具箱… | ShowMeAI资讯日报
- 嘘!P站数据分析年报;各省市疫情感染进度条;爱奇艺推出元宇宙App;You推出AI聊天机器人;GitHub今日热榜 | ShowMeAI资讯日报
- 美国公司裁员潮时间线◉科技寒冬可视化;3份报告回顾中国开发者2022;自动驾驶下半场,谁会冲出重围 | ShowMeAI每周通讯 #005-01.07
- 副业月入过万?数据有话说;扫地机器人发展到哪步了;疫情后要不要重返办公室;淘宝元宇宙直播间;GitHub今日热榜 | ShowMeAI资讯日报
- 大战谷歌!微软Bing引入ChatGPT;羊了个羊40万年薪招研发;Debian彻底移除Python2;GitHub今日热榜 | ShowMeAI资讯日报
- 酸了!乐视工作制改为四天半;高通新年裁员;AI绘画公司开始倒闭;网易入股张艺谋元宇宙公司;GitHub今日热榜 | ShowMeAI资讯日报
- 要么干要么滚!推特开始裁员了;深度学习产品应用·随书代码;可分离各种乐器音源的工具包;Transformer教程;前沿论文 | ShowMeAI资讯日报
- 真实世界的人工智能应用落地——OpenAI篇 ⛵
- 阳过→阳康,数据里的时代侧影;谷歌慌了!看各公司如何应对ChatGPT;两份优质AI年报;本周技术高光时刻 | ShowMeAI每周通讯 #003-12.24
- 用魔法打败魔法!这件毛衣让摄像头看不到你;两款酷炫的AI写作软件;快如闪电的B站下载工具;基于扩散模型的蛋白质设计 | ShowMeAI资讯日报