Excel是大家最常用的数据分析工具之一,借助它可以便捷地完成数据清理、统计计算、数据分析(数据透视图)和图表呈现等。
但是!大家有没有用 Excel 处理过大一些的数据(比如几十上百万行的数据表),Excel 就会变得非常慢,甚至直接崩溃。
辛辛苦苦做一半的工作很有可能要重做!那就不只是 Excel 崩溃了,我们也得一边崩溃一边加班赶 deadline。
在本篇文中,ShowMeAI 将给大家介绍到 Python 中非常好用的交互式表格工具,它们的功能性和使用便捷度和 Excel 相当,同时有很好的内存优化,非常适合处理大文件表格。
工具1:Mito
Mito 是 Python 中的电子表格,它同时拥有 Excel 电子表格的简单易用性和 Python 的强大功能。我们可以像使用 Excel 一样使用 Mito,并且在我们执行每个操作之后,Mito 将自动生成与每个操作对应的 Python 代码。
- Mito 官方文档
- Mito Github
- Mito 使用示例
使用 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()
自动生成代码
除了导入之外,还会自动生成下面的代码。(这本是需要熟悉 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。
- Bamboolib官方文档
- Bamboolib Github
安装完成之后,我们运行以下命令来读取 CSV 或 Excel 文件。
import bamboolib as bam
bam
📢 Bamboolib:大文件读取
在这里,我们使用包含超过 100 万行的 CSV 大文件sales-data-1M来讲解操作和计算实现。
和 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
),然后再提取属性。操作动图演示如下:
如果你对Python感兴趣的话,可以试试我整理的这份Python全套学习资料,微信扫描下方二维码免费领取
包括:Python永久使用安装包、Python web开发,Python,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python学习软件
工欲善其事,必先利其器。学习Python常用的开发软件都在这里了!
三、Python入门学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
四、Python练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
五、Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。这份资料也包含在内的哈~
六、Python面试资料
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
七、资料领取
上述完整版Python全套学习资料已经上传CSDN官方,需要的小伙伴可自行微信扫描下方CSDN官方认证二维码输入“领取资料”免费领取!!