第一部分:需求说明

  • 快速拆分excel表格然后进行数据下放,是工作中非常常见的工作需求。如过用手动拆分,需要花费大量的时间,而且很容易出错,我相信很多小伙伴都遇到过这个问题,今天就结合作者在工作中的需求和大家分享用python一键拆分的方法。
  • 本次案例为了推广让从来都没有用过python的小伙伴也能直接使用,所以部分个性化基础数据处理部分沿用excel直接处理,数据拆分部分才用python处理。本文主要讲解安装环境-复制代码直接运行,代码原理不再赘述,适合所有人使用,不需要你会python。如果你不是新手请跳过第二部份安装的介绍,直接到第三部分单字段拆分和第四部分多字段拆分的代码部分。

第二部分:anaconda3的安装

安装说明

  • 为了方便大家anaconda3的安装包作者已经下载好,你可以直接获取按照下面的安装步骤安装即可(此安装过程适用于企业电脑有诸多限制的本地版本,如果你需要使用更多功能,建议你百度一下安装全部功能版本)
  • 安装包作者上传百度云盘供大家下载,如果链接过期请联系作者或者自行下载:复制链接在浏览器中打开: https://pan.baidu.com/s/1x_IZJySpPEmk8sdvBQITDw 提取码:v5wp

安装步骤

  • 下载安装包,点击anaconda3安装(其中pycharm是第三方编程工具可以不用)

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段

  • 点击下一步

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_02

  • 点击同意

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_03

  • 点击仅个人使用版本

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_04

  • 修改自定安装路径,这里推荐使用:D:\anaconda3

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_05

  • 选择python,然后点击安装

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_06

  • 等待安装完毕,需要花费一段时间
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_07

  • 安装结束
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_08


  • 新建存放代码和数据的文件夹
  • 这里我们先新建一个存放代码的文件夹:D:\python代码\python拆分表格
  • 再新建一个存放数据结果的文件夹:D:\python代码\python拆分表格\拆分结果
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_09

  • 使用找到编辑代码的位置
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_10

    python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_11


  • 输入打开代码的位置:jupyter notebook D:\python代码\python拆分表格
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_12

  • 在弹出的网页中首次新建python3的代码编辑
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_13

  • 重命名本次使用的代码名称
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_14


  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_15

  • 输入python需要用到的numpy、pandas模块是否自带的已有,一般都有,导入这两个模块运行不报错即可(如果没有需要pip install numpy 、pip install pandas,这里不再细讲)
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_16

  • ok,到此python的环境已经准备完成。

第三部分:python单条件拆分excel表格

3.1 数据预处理-数据分到个人

为了方便没有使用过python的同学也可以直接复制代码直接运行拆分表格,所以案例中数据处理部分我们使用多数人都会的excel处理。如果你的数据已经预先处理好了,请跳过此部分。直接浏览3.2 python条件拆分表格部分。

  • 数据源及拆分要求
  • 将数据源中的数据随机拆分为10等份(即给到10个人)
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_17

  • excel快速计算行数:=COUNTA(H:H)
  • 生成随机数:=RANDBETWEEN(1,1720) ,复制粘贴为数值,并排序
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_18

  • 新建序号列:1-1711
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_19

  • 分组:vlookup函数
  • 计算每份的行数 =ROUND(P2/10,0),即1712/10

  • 生成分组数组

    python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_20

  • 使用vlookup的模糊匹配分组

    python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_21

    到此数据预处理已经完成,为了截图方便隐藏了部分列,取消隐藏,然后保存数据,关闭excel,数据路劲:D:\python代码\python拆分表格/text.xlsx。

3.2 python对excel进行单条件拆分

需要注意的是下面的代码中的几个点。

  • 打开数据的路径:path_read = r"D:\python代码\python拆分表格/text.xlsx"
  • 拆分的列名需要保持一致:Split_column_name="分组1"
  • 拆分excel的工作簿名称:sheet_name='Sheet1'
  • 数据存储路劲:path_to_excel = r"D:\python代码\python拆分表格\拆分结果/"

然后复制下面的代码块到jupyter notebook中运行即可

# -*- coding: utf-8 -*-
python条件拆分excel表格
2021/1/12
@author:jalen
import numpy as np
import pandas as pd
def plit_excel_table():
    data = pd.read_excel(path_read,sheet_name=sheet_name,dtype = 'str')  #读取excel表格,并指定数据类型
#     data["基准id"]=data["基准id"].apply(str)
    rows = data.shape[0] #获取行数 shape[1]获取列数
    Split_column_name_list = []  #创建一个用于存放拆分列名的列表
    for i in range(rows):  #循环遍历所有行
        temp = str(data[Split_column_name][i])  #需要用于做条件拆分的列
        if temp not in Split_column_name_list:
             Split_column_name_list.append(temp)  #将用于拆分的列分类存在一个列表中
    for Split_column in  Split_column_name_list:  #循环遍历存放好的条件拆分字段
        new_df = pd.DataFrame()  #新建二维表
        #display(new_df)  #查验表
        for i in range (0, rows):  #条件循环遍历原表,将相同条件的内容存在同一个DataFrame中
            if str(data[Split_column_name][i]) == Split_column:
                new_df = pd.concat([new_df, data.iloc[[i],:]], axis = 0, ignore_index = True)
        #print(new_df) #输出查验结果
        #将每个DataFrame写入一个新的excel中
        new_df.to_excel(path_to_excel+str(Split_column)+".xlsx", sheet_name=str(Split_column), index = False)  
if __name__ == "__main__":
    path_read = r"D:\python代码\python拆分表格/text.xlsx"  #读取的excel路径
    sheet_name='Sheet1'       #读取excel的sheet_name
    Split_column_name="分组1"         #条件拆分的列1-- 对应列名
    path_to_excel = r"D:\python代码\python拆分表格\拆分结果/" #拆分后存入的路径
    plit_excel_table() #执行plit_excel_table

点击运行

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_22

运行完毕,结果数据如下。

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_23

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_24

ok,结束了,然后后面经常要用到只需要替换数据源中的数据即可,后面拆分时先清空本次拆分的结果表,同时不是每次拆分的条件字段名都是"分组1"的,只需要修改表格中用于拆分的字段名等于代码中的Split_column_name的名称即可,你可以任意修改代码或者表字段名。

3.3 数据预处理后按照部门人数拆分案例

  • 数据预处理
  • 按照部门人数分组
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_25

  • 假设6个部门每个部门人数不同分组匹配vlookup模糊匹配=VLOOKUP(N2,Q:R,2,1)
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_26

  • ok,数据处理完成点击保存(或者把公式部分复制粘贴保存为数值,然后清除多余部分)。
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_27

  • 拆分代码和上面3.2一致,再次使用代码时需要找到代码位置进入

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_28

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_29

回车

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_30

运行代码

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_31

输出结果

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_32

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_33

3.4 python多条件拆分表格

  • 需求:按照部门、销售姓名组合字段拆分表格
  • 数据预处理不再概述
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_34

  • 新建代码
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_python_35


python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_36

  • 代码块
  • 需要注意拆分字段的名称于代码中的保持一直
  • python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_37

# -*- coding: utf-8 -*-
python条件拆分excel表格
2021/1/12
@author:jalen
import numpy as np
import pandas as pd
def plit_excel_table():
    data = pd.read_excel(path_read,sheet_name=sheet_name,dtype = 'str')  #读取excel表格,并指定数据类型
#     data["基准id"]=data["基准id"].apply(str)
    rows = data.shape[0] #获取行数 shape[1]获取列数
    Split_column_name_list = []  #创建一个用于存放拆分列名的列表
    for i in range(rows):  #循环遍历所有行
        temp = str(data[Split_column_name2][i])+"-"+str(data[Split_column_name][i])  #将需要用于做条件拆分的列连接起来
        if temp not in Split_column_name_list:
             Split_column_name_list.append(temp)  #将用于拆分的列分类存在一个列表中
    for Split_column in  Split_column_name_list:  #循环遍历存放好的条件拆分字段
        new_df = pd.DataFrame()  #新建二维表
        #display(new_df)  #查验表
        for i in range (0, rows):  #条件循环遍历原表,将相同条件的内容存在同一个DataFrame中
            if str(data[Split_column_name2][i])+"-"+str(data[Split_column_name][i]) == Split_column:
                new_df = pd.concat([new_df, data.iloc[[i],:]], axis = 0, ignore_index = True)
        #print(new_df) #输出查验结果
        #将每个DataFrame写入一个新的excel中
        new_df.to_excel(path_to_excel+str(Split_column)+".xlsx", sheet_name=str(Split_column), index = False)  
if __name__ == "__main__":
    path_read = r"D:\python代码\python拆分表格/text.xlsx"     #读取的excel路径
    sheet_name='Sheet1'                     #读取excel的sheet_name
    Split_column_name="销售"         #条件拆分的列1-- 对应列名
    Split_column_name2="部门"        # 条件拆分的列2 -- 对应列名
    path_to_excel = r"D:\python代码\python拆分表格\拆分结果/" #拆分后存入的路径
    plit_excel_table()                   #执行plit_excel_table
  • 运行结果

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_38

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_数据_39

ok,结束。只需要安装anaconda运行环境,复制运行文章中代码即可使用python按照条件拆分excel表格。本文主要讲解安装环境-复制代码直接运行,代码原理不再赘述,适合所有人使用,不需要你会python。

python快速条件拆分excel表格,不需要你写码,简单安装环境即可_字段_40