张小白带你跟着小Mi老师学习用Python操作Excel

举报
张辉 发表于 2021/09/18 20:52:30 2021/09/18
【摘要】 Python Excel的一些入门操作

MindSpore团队的小Mi老师在MindSpore论坛有个干货系列——【跟着小Mi一起机器学习吧!】

张小白特意整理了一下,到目前为止,有以下内容:

【跟着小Mi一起机器学习吧!】2021.5.18 介绍篇 https://bbs.huaweicloud.com/forum/thread-128661-1-1.html
【跟着小Mi一起机器学习吧!】2021.5.26 那些我们快要遗忘的线性代数知识点 https://bbs.huaweicloud.com/forum/thread-130462-1-1.html
【跟着小Mi一起机器学习吧!】2021.5.29 单变量线性回归(一)https://bbs.huaweicloud.com/forum/thread-131009-1-1.html
【跟着小Mi一起机器学习吧!】2021.6.3 单变量线性回归(二)https://bbs.huaweicloud.com/forum/thread-131701-1-1.html
【跟着小Mi一起机器学习吧!】2021.6.9 多变量线性回归(一)https://bbs.huaweicloud.com/forum/thread-132434-1-1.html
【跟着小Mi一起机器学习吧!】2021.6.16 多变量线性回归(二)https://bbs.huaweicloud.com/forum/thread-133107-1-1.html
【跟着小Mi一起机器学习吧!】2021.6.22 逻辑回归(一)https://bbs.huaweicloud.com/forum/thread-133654-1-1.html
【跟着小Mi一起机器学习吧!】2021.6.28 逻辑回归(二)https://bbs.huaweicloud.com/forum/thread-135362-1-1.html
【跟着小Mi一起机器学习吧!】2021.7.9 神经网络表述(一)https://bbs.huaweicloud.com/forum/thread-138471-1-1.html
【跟着小Mi一起机器学习吧!】2021.7.13 神经网络表述(二)https://bbs.huaweicloud.com/forum/thread-139405-1-1.html
【跟着小Mi一起机器学习吧!】2021.7.23 神经网络的学习(上)https://bbs.huaweicloud.com/forum/thread-142545-1-1.html
【跟着小Mi一起机器学习吧!】2021.7.31 神经网络的学习(下)https://bbs.huaweicloud.com/forum/thread-144685-1-1.html
【跟着小Mi一起机器学习吧!】2021.8.6 关于应用机器学习时的一些建议 https://bbs.huaweicloud.com/forum/thread-146476-1-1.html
【跟着小Mi一起机器学习吧!】2021.8.13 机器学习系统的设计 https://bbs.huaweicloud.com/forum/thread-147204-1-1.html
【跟着小Mi一起机器学习吧!】2021.8.20 支持向量机(上)https://bbs.huaweicloud.com/forum/thread-148577-1-1.html
【跟着小Mi一起机器学习吧!】2021.8.28 支持向量机(中)https://bbs.huaweicloud.com/forum/thread-150652-1-1.html
【跟着小Mi一起机器学习吧!】2021.9.3 支持向量机(下)https://bbs.huaweicloud.com/forum/thread-152321-1-1.html 
【跟着小Mi一起机器学习吧!】2021.9.17 聚类算法 https://bbs.huaweicloud.com/forum/thread-155839-1-1.html

 张小白相信,小Mi老师还会接着写下去的,所以想学机器学习的人可以关注下。

当然,小Mi老师最近发了一个Python操作excel的帖子( https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=154274 ),听说照着帖子去实践还会有抽奖,这点首先张小白肯定自己不会拉下,其次也不会让其他的奖品爱好者拉下,所以就让张小白跟着小Mi老师的节奏开始实操吧!

张小白的思路是,先在机器上装好JupyterLab环境,然后在JupyterLab环境下操作即可。有JupyterLab环境的人可以跳过前面的步骤直接进JupyterLab去操作Excel。


按照 《张小白教你在Windows上使用JupyterLab体验MindSpore1.2.0 》( https://bbs.huaweicloud.com/blogs/260796 )的方式装好mindspore 1.3.0和Jupyter Lab:

安装Anaconda

(参见链接 第一步:安装Anaconda)

创建conda环境,顺便安装下mindspore

(参见链接第二步:使用conda安装MindSpore)其实也可以不装mindspore。。

安装jupyter和jupyterlab

。。。

。。。

。。。

创建一个jupyter lab运行的目录 D:\ipynb

进入该目录,启动jupyter lab:

浏览器打开上图箭头所指的链接,进入JupyterLab界面:

点击箭头所指的Python3图标,新建一个Notebook

先验证下mindspore安装:

!python -c "import mindspore;mindspore.run_check()"

好像张小白多此一举了,直接import mindspore;mindspore.run_check()好像也行。。。

这个时候会报一个错,显然这个somas_meta目录不存在。所以可以在ipynb目录下创建这个目录:

重新执行这个cell

仍然报了个找不到指定模块的错,张小白咨询了下mindspore的专家,答复说这是1.3版本的BUG,在1.4版本修复了,所以张小白也不必多管他,反正这次并没有用到MindSpore(只是张小白在夹带私货)

小Mi老师的帖子会让张小白打开另一个文档 :

《可能是全网最完整的 Python 操作 Excel库总结!》( https://mp.weixin.qq.com/s?__biz=Mzg5OTU3NjczMQ==&mid=2247512088&idx=1&sn=64dd609a958d00432dd37484c0d0c382&chksm=c053d6ecf7245ffa39ad6e38bebcff03452271886a8722a5b9ae5f822b3266cda7451fa2a2fc&scene=178&cur_album_id=1732621983021858819#rd

仔细阅读后,发现需要pip安装一些excel相关的包,那就在这里安装吧:

!pip install xlrd -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install xlwt -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install xlutils -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install xlwings -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install XlsxWriter -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

然后需要import一些excel的库(其实也可以用的时候再import,但是先一股脑儿的import其实也没事儿吧。。。)

import xlrd
import xlwt
import xlwings as xw
import xlsxwriter
import openpyxl
import pandas as pd

张小白拿出当年研究过的CANN训练营第二期的奖品价格的表格文件price.xlsx:(至于为啥曾经要研究请不要猜)

然后执行下列脚本:

from openpyxl import load_workbook
workbook = load_workbook( filename = "price.xlsx")
print(workbook.sheetnames)
#sheet =  workbook.active
sheet=workbook['工作表1']
print(sheet.dimensions)

cell1 = sheet["C5"]
print("C5:" , cell1.value)
cell2 = sheet["A7"]
print("A7:", cell2.value)

上面的语句意思大概如下:

打开一个叫做price.xlsx的文件,找到激活的sheet(或者sheet名称为 工作表1的sheet),看一下这个表格的大小,然后打印表格的C5栏位和A7栏位的内容。

运行的结果如下:


看来,excel中特定的网格内容都读出来了。

张小白把price.xlsx文件复制了一份,改名为price2.xlsx,并且加了一列:(乱写的)

那么,我们来一次读取多个文件:

import re
import os
import pandas as pd
files = [ i for i in os.listdir("./") if i.endswith("xlsx")]

for filename in files:
    print(filename)
    print(pd.read_excel(filename))

这里是查看目录下所有带xlsx的文件,循环打印出文件名称和excel文件的内容。

此时需要注意,如果你正在编辑一个excel文件,系统会在同样的目录下生成个不可见的xlsx文件,这样有可能这个语句会报错。记得把excel关闭后再执行就行了。

关闭excel后的执行结果如下:

(请记住第一列是高达基地XXX

再来试试改写excel文件,使用drop和to_excel:

for filename in files:
    file=pd.read_excel(filename)
    filenew=file.drop(file.index[0])
    pd.DataFrame.to_excel(filenew,str(filename),na_rep='.',index=False)

执行完毕,好像没啥动静:

但是再打开两个excel文件看看:

高达基地已经不见了。。。(但是不知道为啥,第一列多了个Unnamed: 0

这就成功地完成了小Mi老师的作业。

其实Python操作Excel的内容还有很多,如果下次用到的时候,记得从这里找到相关的资料哦。。。多跟着小Mi老师学学,一定会有收获的。。

(全文完,谢谢阅读)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。