excel里的数据如何利用python进行分词 python excel分表_表名


我们工作中经常要遇到这种情况:需要把一个总的excel工作薄,按‘部门’字段分成N个工作薄,单独发给不同的部门。

通过网上搜索,有方方格子等插件能实现部分功能。但遇到工作薄下有多个工作表时仍然不好操作。比如我现在遇到的问题:


excel里的数据如何利用python进行分词 python excel分表_字段_02

1、要按渠道名称分成不同的工作薄


excel里的数据如何利用python进行分词 python excel分表_字段_03

2、每个工作薄下又有很多工作表,每个表都要按部门分开

这种情况,插件也不好使,想了想便考虑用python来解决。下面来说解决思路和代码。

1、首先导包,设置目标工作表的路径。


import numpy as np
import pandas as pd

#输入的excel文档名
a=input('目标工作表:')   #手动输入表名
out='C:UsershubiaoDesktop'+a+'.xlsx'   #目标表的路径,我这里是放在桌面了


2、并获取工作薄下的所有表名,并设置按哪个字段分表(我这里是按'渠道名称')。


#获取工作薄所有表名
datashname=pd.read_excel(out,None) #第二个参数为None,获取一个已表名为键的字典
sname=datashname.keys()   #获取字典的键

#通过工作薄的第一张表获取所有的渠道名称
qudao=pd.read_excel(out,sheet_name=0)['渠道名称'].value_counts().index


3、接下来就是分表了,我这里的思路是:建立一个某个渠道的工作薄,然后再把这个渠道相关的表分别写入不同的sheet。用两个for循环实现,代码不复杂,关键是理清思路。


#分表
for y in qudao:  #循环部门,并设置保存的路径
    writer=pd.ExcelWriter('C:UsershubiaoDesktoppyexport'+y+'.xlsx')
    for x in sname:
        dataall=pd.read_excel(out,sheet_name=x)  #遍历不同的sheet表
        dt=dataall.loc[dataall['渠道名称']==y]   #筛选对应的渠道
        dt.to_excel(writer,x) #写入
    writer.save()   #保存


好了,基本就是这样了,看看效果。


excel里的数据如何利用python进行分词 python excel分表_字段_04

各个部门的工作薄

excel里的数据如何利用python进行分词 python excel分表_python3字典写入excel_05

每个工作薄下有相关的表

可以看到效果很好。

后边想了想,还是有优化的空间比如,在循环里面频繁的读取文档,影响了一定的速度。可以先全部读取进来,建立个总的字典,再去一一筛选。这个后边再去优化了。

附上整体代码。


import numpy as np
import pandas as pd

#输入的excel文档名
a=input('目标工作表:')   
out='C:UsershubiaoDesktop'+a+'.xlsx'  

#获取工作薄所有表名
datashname=pd.read_excel(out,None) 
sname=datashname.keys()  

#通过工作薄的第一张表获取所有的渠道名称
qudao=pd.read_excel(out,sheet_name=0)['渠道名称'].value_counts().index 

#分表
for y in qudao:
    writer=pd.ExcelWriter('C:UsershubiaoDesktoppyexport'+y+'.xlsx')
    for x in sname:
        dataall=pd.read_excel(out,sheet_name=x)
        dt=dataall.loc[dataall['渠道名称']==y]
        dt.to_excel(writer,x)
    writer.save()