Python与Excel表格综合实例四:对 Excel 表格内数据进行去重、分类,异常处理及分析
前言:
介绍一个用 Python 实现对 Excel 表格中的数据进行去重、分类、标记异常数据等功能的实例。
虚拟文件简介:
有一份电商数据的 Excel 表格数据,该数据中有部分字段缺失和数据异常,表格部分数据如下:
数据下载地址:示例数据下载地址(注:因实例演示需要,数据有删改,操作Excel文件可私信或留言咨询。)
具体需求:
1、数据去重: 读取所有数据,对数据中每个字段内容都一致的数据删除;
2、数据分类: 按分类二对数据进行分类,将每类数据写入不同的sheet表中;
3、异常处理: a:标记商品名称为空,市场价、店铺价、数量为NA的数据(红色字体); b: 标记店铺价大于市场价的数据(橙色字体);
4、数据分析: 找出每类商品中(按分类三)市场价与商品价差距最大的数据,并加粗斜体、蓝色字体显示;
5:用函数封装完成上述需求的代码。
最终完成效果图:
主要实现代码及思路:
1、主要思路:
实现上述需求的主体思路为:
第一步: 先获取到Excel的所有数据,因为每一行数据是一条独立数据,所以读取数据的方式为按行读取;
第二步: 去除重复数据,遍历读取到的数据,如果数据全部字段都相同则删除重复数据。
这里有一个问题,是先查找异常数据还是先对数据进行分类?
考虑到需要在新建的Excel表格里标记异常数据,所以先对数据按分类二字段分类,再对分类后的数据进行异常处理会好更简单一点。
第三步: 按分类二字段对数据分类,以字典数据结构存放分类数据。再对每类数据进行异常处理及数据分析,因需要是要标记异常值及分析后数据值,所以异常分析函数和数据分析函数只记录异常数据和数据分析结果数据的索引值。
第四步: 创建异常数据和分析结果数据标记的样式表,将数据写入Excel表格。先按分类二创建不同的sheet表写入数据,再对每一类数据的异常数据按创建的样式重写数据。
以下是实现上述分析的具体函数:
2、读取数据函数:
模块导入:
import xlrd
import xlwt
用 xlrd 模块按行读取文件数据:
# 读取数据方法
def read_data(path):
# 打开Excel文件,获取sheet对象
work_book = xlrd.open_workbook(path)
sheet = work_book.sheet_by_index(0)
# 按行获取所有数据
all_data = sheet._cell_values
return all_data
3、数据去重函数:
数据去重函数:主要模拟pandas模块dataframe 里对数据去重的方法。
主要思路为:
1、先创建一个将放入bool值的 tag 列表;
2、创建一个中间列表存放临时查重值;
3、遍历需查重对象,没有重复的放入临时列表,tag 列表增加 True 值;
4、重复对象不放入临时列表,tag 列表增加 False 值;
5、根据 tag 列表提取查重对象无重复对象和重复对象。
代码:
# 数据去重
def del_duplication(data):
tags = [] #
m = []
for ds in data:
if ds not in m:
m.append(ds)
tags.append(True)
else:
tags.append(False)
clean_data = [ds for i,ds in enumerate(data)
if tags[i]]
del_data = [ds for i,ds in enumerate(data)
if not tags[i]]
del m
return clean_data,del_data
测试: