热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将python和Excel连接进行操作

加载一个Jupyter插件后,无需写代码就能做数据分析,还帮你生成相应代码?     没错,只需要加载这个名为Mito的小工具包,用Python做数据分析,变得和用Exc

加载一个Jupyter插件后,无需写代码就能做数据分析,还帮你生成相应代码?

 

 

 

 

 

没错,只需要加载这个名为Mito的小工具包,用Python做数据分析,变得和用Excel一样简单:

 

 

 

 

 


介绍

以 Excel 为代表的电子表格是探索数据集的最重要、最具适应性的方式之一。它可以帮助对数据类型进行必要的更改、创建新特征、对数据进行排序以及从现有特征中创建新特征。

遵循以上相同的思路,Mito是一个Jupyter-Lab扩展和Python库,它使得在支持GUI的电子表格环境中操作数据变得超级容易。

Mito的出现,像是将Python的强大功能、和Excel的易用性进行了结合。

只需要掌握Excel的用法,就能使用Python的数据分析功能,还能将写出来的代码“打包带走”

它弥补了Excel在数据分析上的几个缺陷



  • Excel无法做大数据分析(大型数据集处理得不好)

  • Excel运行缓慢

  • Excel无法轻松创建可重复流程

同时,又比SQL和Python更简单、直观。毕竟这些专业工具对于0基础初学者来说,需要至少几年时间,才能完全上手。

在本文中,我们将一起学习:



  1. 如何合理设置Mito

  2. 如何debug安装错误

  3. 使用 Mito 提供的各种功能

  4. 该库如何为对数据集所做的所有操作生成 Python 等效代码


安装Mito

Mito 是一个 Python 库,可以通过 pip 包管理器安装。它需要 Python 3.6 及以上版本。此外,系统上需要安装 Nodejs,一个 Javascript 运行时环境。

另外,可以在单独的环境(虚拟环境)中安装这个包,可以避免一些依赖错误。接下来在终端中运行这些命令,完成安装即可。


1. 创建环境

我正在使用 Conda 创建一个新环境。你还可以使用 Python 的“venv”来创建虚拟环境。

conda create -n mitoenv python=3.8

2. 激活环境

conda activate mitoenv

3. 通过pip安装Mito

pip install mitoinstaller

4. 运行 Mito 安装程序

python -m mitoinstaller install

此过程将需要一段时间来安装和设置 Mito。


5. 启动 Jupyter Lab

jupyter lab

报错解决

当启动 Jupyter Lab时,可能会遇到如下错误:

.
.

File "c:userslenovoanaconda3envsmitoenvlibsite-packagesjupyter_corepaths.py", line 387, in win32_restrict_file_to_user
    import win32api
ImportError: DLL load failed while importing win32api: The specified module could not be found.

要修复此错误,只需运行以下命令:

pip install --upgrade pywin32==225

如果你遇到其他困难,请随时在下面发表评论。我很乐意提供帮助。


MitoSheets 界面

在 Jupyter Lab中,创建一个新笔记本并初始化 Mitosheet:

import mitosheet
mitosheet.sheet()

第一次,系统会提示输入你的电子邮件地址进行注册:

 

 

 

填写完基础知识后,将被重定向到 GUI 电子表格。接下来我们一起看看这个接口的所有特性,并一起学习如何生成 Python 等效代码。


加载数据集

要在 MitoSheets 中加载数据集,只需单击导入。有两个选择:



  1. 从当前文件夹添加文件:这将列出当前目录中的所有 CSV 文件,可以从下拉菜单中选择文件。

  2. 按文件路径添加文件:这将仅添加该特定文件。

如下图所示

 

 

 

如果你看下面的单元格,你会发现Python等效的代码导入一个数据集使用pandas已经生成了适当的注释!

 

 

 

这就是 Mito 的魅力,你在 Mitosheet 中执行的每个操作都将转换为 Python 等效代码!接下来我们一起详细探讨一下 Mito 的所有功能。


添加和删除列


添加列

就像在 Excel 等电子表格中一样,你可以添加一个新列,该列可能是从现有列或特征创建的。要在 Mito 中执行此操作,只需单击“Add Col”按钮。该列将添加到当前选定的列旁边。最初,列名将是一个字母表,列的所有值都为零。


 

 


编辑新列的内容



  1. 单击新列名称(分配的字母表)

  2. 将弹出侧边栏菜单,你可以在其中编辑列的名称。

  3. 要更新该列的内容,请单击该列的任何单元格,然后输入值。你可以输入一个常量值,也可以根据数据集的现有特征创建值。如果要从现有列创建值,则直接使用要执行的运算符调用列名。

  4. 新列的数据类型根据分配的值进行更改。

下面的 GIF 演示了上面提到的所有内容:

 

 

 


删除列



  1. 通过单击选择任何列。

  2. 单击“Del Col”,该特定列将从数据集中删除。


 

 


Python代码

在下一个单元格中生成带有正确注释的 Python 等效代码,用于执行的操作是:

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-7bf77d26-84f4-48ed-b389-3f7a3b729753') # Let Mito know which analysis is being run
# Imported edxCourses.csv
import pandas as pd
edxCourses_csv = pd.read_csv('edxCourses.csv')
# Added column H to edxCourses_csv
edxCourses_csv.insert(7, 'H', 0)
# Renamed H to newCol in edxCourses_csv
edxCourses_csv.rename(columns={"H": "newCol"}, inplace=True)
# Set newCol in edxCourses_csv to =coursePrice + courseEnrollments
edxCourses_csv['newCol'] = edxCourses_csv['coursePrice'] + edxCourses_csv['courseEnrollments']
# Deleted column newCol from edxCourses_csv
edxCourses_csv.drop('newCol', axis=1, inplace=True)
# MITO CODE END (DO NOT EDIT)

创建数据透视表

数据透视表是一个重要的 excel 功能,它根据另一个分类特征汇总数字变量。要使用 Mito 创建这样的表,



  1. 单击“Pivot”并选择源数据集(默认加载 CSV)

  2. 选择数据透视表的行、列和值列。还可以为值列选择聚合函数。所有下拉选项,如求和、平均值、中值、最小值、最大值、计数和标准偏差都可用。

  3. 选择所有必要的字段后,将获得一个单独的表,其中包含数据透视表的实现。

下面的 GIF 演示了如何为聚合函数“均值”创建数据透视表:


 

 


Python代码

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-a35246c0-e0dc-436b-8667-076d4f08e0c1') # Let Mito know which analysis is being run
# Imported edxCourses.csv
import pandas as pd
edxCourses_csv = pd.read_csv('edxCourses.csv')
# Pivoted edxCourses_csv into df2
pivot_table = edxCourses_csv.pivot_table(
    index=['courseOrganization'],
    values=['coursePrice'],
    aggfunc={'coursePrice': 'mean'}
)
# Reset the column name and the indexes
df2 = pivot_table.rename_axis(None, axis=1).reset_index()
# MITO CODE END (DO NOT EDIT)

合并两个数据集

合并数据集是数据科学项目的重要组成部分。通常,数据集被划分到不同的表格中,以增加信息的可访问性和可读性。合并 Mitosheets 很容易。



  1. 单击“Merge”并选择数据源。

  2. 需要指定要对其进行合并的键。

  3. 也可以从数据源中选择合并后要保留的列。默认情况下,所有列都将保留在合并的数据集中。

 

 

 

 


Python代码

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-88ac4a92-062f-4ed8-a55d-729394975740') # Let Mito know which analysis is being run
# Imported Airport-Pets.csv, Zipcode-Data.csv
import pandas as pd
Airport_Pets_csv = pd.read_csv('Airport-Pets.csv')
Zipcode_Data_csv = pd.read_csv('Zipcode-Data.csv')
# Merged Airport_Pets_csv and Zipcode_Data_csv
temp_df = Zipcode_Data_csv.drop_duplicates(subset='Zip')
Airport_Pets_csv_tmp = Airport_Pets_csv.drop(['State', 'Division'], axis=1)
Zipcode_Data_csv_tmp = temp_df.drop(['Mean_Income', 'Pop'], axis=1)
df3 = Airport_Pets_csv_tmp.merge(Zipcode_Data_csv_tmp, left_on=['Zip'], right_on=['Zip'], how='left', suffixes=['_Airport_Pets_csv', '_Zipcode_Data_csv'])
# MITO CODE END (DO NOT EDIT)

修改列数据类型、排序和过滤

你可以更改现有列的数据类型,按升序或降序对列进行排序,或通过边界条件过滤它们。在 Mito 中的这些都很简单,可以通过选择屏幕上的选项通过GUI本身完成。



  1. 单击所需的列

  2. 将看到一个数据类型列表。可以根据需要从下拉列表中选择任何数据类型,该数据类型将应用于整个列。

  3. 接下来可以通过选择提供的选项按升序或降序对数据进行排序。

  4. 还可以使用自定义过滤器过滤数据。

 

 

 

 


Python代码

# MITO CODE START (DO NOT EDIT)
from mitosheet import * # Import necessary functions from Mito
register_analysis('UUID-cc414267-d9aa-4017-8890-ee3b7461c15b') # Let Mito know which analysis is being run
# Imported edxCourses.csv
import pandas as pd
edxCourses_csv = pd.read_csv('edxCourses.csv')
# Changed coursePrice from int64 to float
edxCourses_csv['coursePrice'] = edxCourses_csv['coursePrice'].astype('float')
# Sorted coursePrice in edxCourses_csv in descending order
edxCourses_csv = edxCourses_csv.sort_values(by='coursePrice', ascending=False, na_position='first')
edxCourses_csv = edxCourses_csv.reset_index(drop=True)
# Filtered coursePrice in edxCourses_csv
edxCourses_csv = edxCourses_csv[edxCourses_csv['coursePrice'] >= 500]
edxCourses_csv = edxCourses_csv.reset_index(drop=True)
# MITO CODE END (DO NOT EDIT)

图表和统计数据生成

还可以直接在此扩展中生成图形,而无需编写绘图逻辑。默认情况下,此扩展生成的所有图都是使用 Plotly 制作的。这意味着绘图是交互式的,可以即时修改。

注意,这里并没有像操作列一样,在下一个单元格中生成图形代码(也许开发人员会在以后的更新中推送此代码)

可以使用 Mito 生成两种类型的图:


1. 通过点击图表按钮

你将看到一个侧边栏菜单,用于选择图形类型和要选择的相应轴。

 

 

 

 


2. 通过点击列名

当你点击电子表格中的列名称时,可以看见过滤器和排序选项。但如果你导航到“Summary Stats”,则会根据变量的类型显示线图或条形图以及变量的摘要。此摘要更改为文本和没有文本变量。


 

 


保存和回放

对数据集所做的所有转换都可以保存并用于其他类似的数据集。这在 Excel 中采用宏或 VBA 的形式。也可以通过这些功能完成相同的操作。

 

 

 

 

 

 

文件是以Python编写的,而不是用比较难懂的VBA。

 

 


回溯执行的所有步骤

要想重复上面的步骤的话,也非常容易,Mito自带“重复已保存分析步骤”功能,一键就能用同样的方法分析其他数据。这个功能是最有趣的。你实际上可以追踪在 Mitosheet 中应用的所有转换。所有操作的列表都带有适当的标题。

此外,你可以查看该特定步骤!这意味着假设你更改了一些列,然后删除了它们。你可以退回到未删除的时间。


 

 


写在最后

到这里,就和云朵君一起学习了一个新工具“Mito”。用于在 Python 环境中实现类似电子表格的功能,并为所做的每一步生成等效操作的 Python 代码。

项目主页:
https://trymito.io



推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 测绘程序设计Excel度分秒转换模板附代码超实用版
    本文介绍了测绘程序设计Excel度分秒转换模板附代码超实用版的相关知识,包括准备工作、编写表达式和注意事项。在实际工作中,将GPS实测的经纬度度转换为度分秒是常见需求,本文提供了在Excel中快速进行转换的方法,以提高工作效率。 ... [详细]
  • MATLAB函数重名问题解决方法及数据导入导出操作详解
    本文介绍了解决MATLAB函数重名的方法,并详细讲解了数据导入和导出的操作。包括使用菜单导入数据、在工作区直接新建变量、粘贴数据到.m文件或.txt文件并用load命令调用、使用save命令导出数据等方法。同时还介绍了使用dlmread函数调用数据的方法。通过本文的内容,读者可以更好地处理MATLAB中的函数重名问题,并掌握数据导入导出的各种操作。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
author-avatar
一千万223
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有