乐趣区

关于数据分析:再见-Excel你好-Python-Spreadsheets-⛵

💡 作者:韩信子 @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 官网文档
  • 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()

接下来的读取操作就能够用鼠标实现了,下图的演示中,应用到的数据集是学校成绩数据集,大家能够在 ShowMeAI 的百度网盘地址下载。下载文件后,单击『+』或『导入』按钮进行浏览,如下图所示:

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI 钻研核心』回复『实战 』,或者点击 这里 获取本文 [[7] 应用 Mito 和 Bamboolib 进行超大量数据的解决(Python)](https://www.showmeai.tech/art…)『Spreadsheets 数据集

ShowMeAI 官网 GitHub:https://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 库实现一系列数据操作。

](https://img-blog.csdnimg.cn/0…)

大家能够通过命令 pip install --upgrade bamboolib --user装置 bamboolib。

  • Bamboolib 官网文档
  • Bamboolib Github

装置实现之后,咱们运行以下命令来读取 CSV 或 Excel 文件。

import bamboolib as bam
bam

📢 Bamboolib:大文件读取

在这里,咱们应用蕴含超过 100 万行的 CSV 大文件 sales-data-1M 来解说操作和计算实现,大家能够在 ShowMeAI 的百度网盘地址下载。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI 钻研核心』回复『实战 』,或者点击 这里 获取本文 [[7] 应用 Mito 和 Bamboolib 进行超大量数据的解决(Python)](https://www.showmeai.tech/art…)『Spreadsheets 数据集

ShowMeAI 官网 GitHub:https://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)](https://www.showmeai.tech/art…)『Spreadsheets 数据集
  • ShowMeAI 官网 GitHub:https://github.com/ShowMeAI-Hub
  • 📘 Mito 官网文档 https://docs.trymito.io/
  • 📘 Mito Github https://github.com/mito-ds/monorepo
  • 📘 Mito 应用示例 https://github.com/mito-ds/mito-demo
  • 📘 Bamboolib 官网文档 https://bamboolib.8080labs.com/
  • 📘 Bamboolib Github https://github.com/tkrabel/bamboolib
退出移动版