工作过程中经常会碰到一些excel问题,在处理某些情况的时候非常繁琐。但又不得不手动去做。今天就用一个例子,带大家了解怎样使用Python解决Excel无法处理的工作。
需求是这样的,这里有一个待处理的原始表:
原始数据
每个类目当中,有很多“商品ID”,现在需要把同一个类目当中所有ID放到一个单元格,当单元格中的数据大于50个ID的时候,需要另起一行,继续之前的操作,最终得到这样的效果:
输出数据
如果ID少的情况下,尚可在Excel中手动操作,但如果是几千上万个数据,Excel就有些力不从心了。接下来,我们看使用Python如何完成。
第一步:设定程序步骤
写代码之前,需要把任务分解成单独的模块:
- 读取数据
- 对数据去重
- 数据聚合
- 超过50个的单元格切分
- 重新组合输出
第二步:读取数据并去重
这里用到了删除重复项的方法drop_duplocates,参数keep表示删除重复之后保留哪个,这里用的是first,也就是说保留第一个。
第三步:数据聚合
数据聚合
这里的groupby相当于Excel当中的数据透视表,之后的apply是一个自定义函数,括号中的功能,是把所有“分类”一样的元素用“,”串联起来,最后的reset_index是把聚合之后的表变为dataframe。
第四步:数据切分
老规矩,先上代码:
数据切分代码
我们一步步分解来看,
建立一个空列表,用于存放输出结果。
循环每一行数据,id_num表示表格中有多少ID,,id_group_num表示以50个为一组,可以分多少组。
接着使用判断语句,如果需要分组数量大于1
,也就是说超过50个ID,就进行切分,具体切分成几份根据qf_num来使用for循环,最终把结果数据添加到result_list当中。
第五步:组合输出
最终,把result_list当中的数据,使用pandas的DataFrame功能,导出为Excel。
整个数据结果就完成了,大家也可以根据自己再Excel当中的常用操作用Python实现出来。