再见 Excel,你好 Python Spreadsheets! ⛵

简介: Mito 和 Bamboolib 是 Python 库,可以快速流畅地处理大文件表格,功能性与易用性与 Excel 不相上下,但是可以避免出现 Excel 中的卡顿和崩溃。二者的安装和调用都非常简单,绝对值得一试~【代码与数据集亲测可运行】

💡 作者: 韩信子@ ShowMeAI
📘 数据分析◉技能提升系列https://www.showmeai.tech/tutorials/33
📘 数据分析实战系列https://www.showmeai.tech/tutorials/40
📘 本文地址https://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)]( https://www.showmeai.tech/article-detail/294)Spreadsheets 数据集

ShowMeAI官方GitHubhttps://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)]( https://www.showmeai.tech/article-detail/294)Spreadsheets 数据集

ShowMeAI官方GitHubhttps://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),然后再提取属性。操作动图演示如下:

参考资料

目录
相关文章
|
3月前
|
Python
Python办公自动化:xlwings对Excel进行分类汇总
Python办公自动化:xlwings对Excel进行分类汇总
93 1
|
3月前
|
Python
Python自动化:xlwings合并Excel
Python自动化:xlwings合并Excel
58 0
|
22天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
64 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
2月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
64 2
|
2月前
|
Python
Python 自动化操作 Excel - 02 - xlwt
Python 自动化操作 Excel - 02 - xlwt
40 14
|
2月前
|
Python
Python 自动化操作 Excel - 03 - xlutils
Python 自动化操作 Excel - 03 - xlutils
36 13
|
2月前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
215 16
|
2月前
|
Python
Python 自动化操作 Excel - 01 - xlrd
Python 自动化操作 Excel - 01 - xlrd
37 9
|
2月前
|
IDE 开发工具 数据安全/隐私保护
Python编程--实现用户注册信息写入excel文件
Python编程--实现用户注册信息写入excel文件