python excel 数据匹配_python初学者,如何快速匹配excel任务

第一次在知乎写长文的python办公类文章,有点小紧张~~

自己是在给女朋友做东西的时候想到,可以分享一些python编程的简单知识,帮助大家提高工作的效率。然后就有了写文章出来的冲动~还开了一个公众号~~

如果大家有什么想法,欢迎大家交流分享。如果有建议的话,也欢迎大家提出来,我一定会吸取意见,嘿嘿~

问题:

玩具制造厂总厂有一张excel表,记录了每种零件的进厂时间及代号,你所在的分厂的excel表只记录了每种玩具对应的零件的代号。

现在你的上司想要你根据总厂的excel表,补充分厂零件的进厂时间。

总厂和分厂的数据如下所示:

问题分析:

可以发现,分厂的零件代号在总厂中并不是唯一的,对一种零件来说,它的进厂时间可能存在多个。

这个例子并不难,大家都知道怎么做,但是没有人会喜欢做,毕竟这种繁琐的工作最让人烦躁。

问题解决:

在写程序之前,先导入pandas和numpy库。pandas库用来读取和保存excel文件,numpy库用来处理数据。

import pandas as pd

import numpy as np

import是用来进行库的导入,pd和np分别是这两个库的简称。

1、 将excel表格中的数据读取到python中

data1 = pd.read_excel('E:/untitled/excel/test.xlsx', sheet_name=0)

data2 = pd.read_excel('E:/untitled/excel/test.xlsx', sheet_name=1)

注:data1中读取的是总厂的数据,data2是分厂。

这两行代码的作用是从excel中读取数据,括号中有两个参数。

第一个参数就是excel的文件名(全路径名)。按住shift+鼠标右击文件,在弹出的菜单中选择“复制为路径”,要记得把反斜杠改为斜杠。

第二个参数sheet_name指在excel文件中需要读取的sheet区域名字。

sheet_name后面既可以接excel中sheet的名字,也可以接sheet的序号,例如:sheet_name="your_sheet_name",或者sheet_name=0。

划重点,在python中,计数是从0开始的,也就是说,0代表excel中第一个sheet表,1代表第二个sheet表,依次类推。

运行结果如下所示:

图中展示的数据正是使用pandas库得到的数据,它的类型是DataFrame,类似于excel表格。NaN是python对空字符的表示方法,表示这里没有数据。

2、 写程序来制定处理规则,让数据按照程序流动,得到想要的结果。

data1 = np.array(data1, dtype=str)

data2 = np.array(data2, dtype=str)

注:这两行代码是将数据格式由DataFrame转化为numpy库中的array数组,方便对它做进一步的操作。Pandas库适合对数据进行查询、筛选,numpy库则适合对数据进行处理。

运行结果如下所示:

观察转化后的数据发现,数据都被单引号引起来,形式变成了字符串,这是因为字符串方便进行查询。Data2的数据在被转化为字符串数组后,多了“.0”,需要在后面的操作中去掉。

length1 = data1.shape[0]

length2 = len(data2)

注:这两行代码用来得到两个数组的行数。两行代码采用了两种不同的方式,都可以得到数组的行数,大家可以自由选择其中一种。

第一种是数据的shape方法,shape[0]会返回数组的行数,shape[1]会返回数组的列数。

第二种的len()方法是python的一个通用的自带方法,可以求出数组的长度。运行结果如下所示:

for i in range(length2):

for j in range(length1):

if data2[i, 0].strip(".0") in data1[j,1]:

data2[i, 1] = data2[i, 1] + " " + data1[j, 0]

注:构建两个for循环对两个数组进行遍历,若检索到分厂的零件代号在总厂的零件代号中,那么将相应的进厂时间放在分厂对应的进厂时间中。

strip函数是用来在字符串的首尾去掉一些不需要的字符,像空格。

将分厂的数据转成字符串后,分厂数据比原始数据多了“.0”,字符串中的“1001”和“1001.0”是不一样的,这会影响与总厂数据的匹配,因此使用strip函数去掉分厂数据中的“.0”。

in是判断分厂的零件代号是否在总厂零件代号中的方法。“\r\n”表示回到行首并换行,用于定义数据的显示格式。

运行完后得到的分厂数据如下:

3、 把得到的处理结果,保存到result.xlsx中

data2 = pd.DataFrame(data2)

data2.to_excel(' E:/excel/result.xlsx')

注:这里的两行代码用来保存数据,括号中填写自己想要保存数据的位置(全路径)。

到此,我们使用jupyter notebook,实现了我们的目标。

最后,把我们写好的程序贴图附在这里。

-----------------------------------------

到这里,我们的第一个excel文件操作任务就告一段落了。我的公众号是 数算天下的红.

如果你想了解更多关于python自动化办公的知识,欢迎关注我的公众号啦~,小数和小红等你一起迈步哦。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值