Python将Excel表数据可视化,数据可视化PythonExcel表格

  Python将Excel表数据可视化,数据可视化PythonExcel表格

  例Excel表中数据的重复数据删除、分类、异常处理和分析。前言:主要实现代码和思路:1 .主要思路:2。读取数据功能:3。重复数据删除功能:4。数据分类功能:5。发现异常数据:6。数据分析功能:7。汇总异常数据,分析数据功能:8。创建标记样式函数:

  前言:

  本文介绍了一个使用Python对Excel表格中的异常数据进行去重、分类和标记的实例。

  虚拟文件简介:

  有一个电子商务数据的Excel电子表格,有些字段缺失,数据异常。一些电子表格数据如下:

  数据下载地址:样本数据下载地址(注:因实例演示需要,数据有删改,操作Excel文件可私信或留言咨询。)

  具体需求:

  1、数据去重:读取所有数据,删除各字段内容一致的数据;2、数据分类:按照分类二对数据进行分类,将每种类型的数据写入不同的表中;3、异常处理:A:将商品名称为空、市场价、店铺价、数量的数据(红色字体)标注为NA;b:标注店铺价格大于市场价的数据(橙色字体);4、数据分析:找出每类商品中市场价格与商品价格差距最大的数据(按第3类),用粗体斜体和蓝色字体显示;

  5.封装代码,用功能完成上述需求。

  最终完成效果图:

  主要代码和思路:1。主要思路:实现上述要求的主要思路是:

  第一步:先获取Excel的所有数据,因为每一行数据都是独立的一段数据,所以读取数据的方式是逐行读取;第二步:删除重复数据,遍历读取的数据,如果数据的所有字段都相同,则删除重复数据。

  这里有一个问题,是先查找异常数据还是先对数据进行分类?

  考虑到新创建的Excel表中需要标记异常数据,先按照分类的两个字段对数据进行分类,分类后再对异常数据进行处理,这样更好也更简单。

  第三步:根据分类的两个字段对数据进行分类,并将分类后的数据存储在字典数据结构中。然后,对每种类型的数据进行异常处理和数据分析。因为需要标记异常值和分析的数据值,所以异常分析函数和数据分析函数只记录异常数据的指标值和数据分析结果数据。第四步:创建标有异常数据和分析结果数据的样式表,并将数据写入Excel表格。首先根据类别2创建不同的表表来写入数据,然后针对每种类型数据的异常数据按照创建的样式重写数据。

  以下是实现上述分析的具体函数:

  2.读取数据功能:模块导入:

  Import xlrdimport xlwt使用xlrd模块逐行读取文件数据:

  # Read data方法def read_data(path): #打开Excel文件,获取工作表对象work _ book=xlrd。open _ workbook(path)sheet=work _ book。sheet _ by _ index (0) #按行获取所有数据all _ data=sheet。_ cell _ values返回all _ data3、重复数据删除功能:重复数据删除功能:主要模拟熊猫模块数据帧中的重复数据删除方法。

  主要思路为:

  1.首先,用bool值创建一个标记列表;

  2.创建一个中间列表来存储临时重复检查值;

  3.遍历要复制的对象,如果没有复制就放入临时列表,将真值加入标签列表;

  4.重复的对象不被放入临时列表,并且False值被添加到标签列表;

  5.根据标签列表,提取查重对象、非重复对象和重复对象。

  代码:

  # data de duplication 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 test:

  C _ data,d _ data=del _ duplication (data) #所有数据读取的数据打印截图#删除的重复数据打印(d _ data):

  4.数据分类功能:根据Excel文件中的类别2字段对数据进行分类:

  # 数据分类def classify _ data(data):class _ data={ } for ds in data:如果ds[2]不在class _ data中。keys():class _ data[ds[2]]=[ds]else:class _ data[ds[2]].追加(ds)返回class_data测试:

  D2=分类_数据(c _数据[1:])打印(D2。keys())#打印结果# dict_keys([男装, 男鞋]) 按分类2进行分类时,数据被分为2类:男装、男鞋。

  5、查找异常数据:异常数据有两种,情形一:是数据为空或为钠值,情形二:店铺价大于市场价。

  筛选情形一异常值函数:

  # 查找异常数据,缺失数据、NA数据def strange _ data(data):strange _ index=[]for I,ds in enumerate(data): #数据为空时if ds[0]== :strange _ index。追加(I)#数据为钠值时elif ds[5]== NA :奇异_索引。追加(I)elif ds[6]== NA :strange _ index。追加(I)elif ds[7]== NA :strange _ index。追加(一)返回奇怪_指数注:返回的是异常数据在所有数据中的索引值。

  筛选情形二异常值函数:

  # 店铺价大于商场价的数据def strange _ data _ 2(data):strange _ index=[]for I,ds in enumerate(data):try:if float(ds[6])float(ds[5]):strange _ index。附加(I)除了:通过返回奇怪_指数注:因数据的商场价或店铺价可能为NA值,所以这里用 try 捕捉下异常情况。

  6、数据分析函数:按分类三,查找每类商品中市场价与商品价差距最大的数据:

  # 数据分析定义分析_数据(数据):#按分类3分类对数据进行分类class _ 3 _ data=list(set([ds[3]for ds in data)))max _ index=[]for tag in class _ 3 _ data:middle _={ } for I,ds in enumerate(data):if ds[3]==tag:try:middle _[I]=float(ds[5])-float(ds[6])except:middle _[I]=0 max _ value=max(middle _).values())max _ index=[key for key in middle _ if middle _[key]==max _ value]返回max_index注:数据分析和异常处理共三个函数,可以好好理一下里面的思路。

  7、汇总异常数据及数据分析数据函数: # 汇集异常数据、及数据分析后数据信息def data _ index(data):data _ dict={ } for key in data。keys():#缺失数据索引index _ 1=strange _ data(data[key])#店铺价大于商场价的数据索引index _ 2=strange _ data _ 2(data[key])#数据分析结果索引index _ 3=analysis _ data(data[key])data _ dict[key]=[index _ 1,index_2,index_3]返回数据_字典8,创建标记样式函数: # 建立样式定义样式():#红色字体style1=xlwt .xf style()font 1=style 1。字体字体1。colour _ index=0x0A #橙色字体style2=xlwt .xf style()font 2=style 2。字体字体2。colour _ index=0x 35 #加粗斜体蓝色字体style3=xlwt .XFStyle()font 3=style3。字体字体3。斜体=真实字体3。粗体=真实字体3。颜色索引=0x0C返回样式1、样式2、样式3不清楚如何用xlwt模块设置单元格样式可参考:单元格格式、字体格式、对齐方式、边框等设置方法

  9、写入超过表格函数: # 将数据写入超过表格def create_excel(数据,标签,数据索引,文件名):#建立字体格式s1,s2,s3=styles() styles_=[s1,s2,s3] #建立工作薄work_book=xlwt .data.keys()中键的工作簿()建立表表,打开单元格重写sheet=work_book.add_sheet(key,cell_overwrite_ok=True) #在表表中写入行标签对于col_,枚举中的标签(标签):sheet.write(0,col_,label) #先按默认格式写入所有数据对于行,ds in enumerate(data[key]):对于枚举(ds)中的col,d:sheet。write(第1行,第d列)#再按标记索引重写被标记的数据对于I,ixs in enumerate(data _ index[key]):对于IX in ixs:对于col,d in enumerate(data[key][IX]):sheet。写(IX 1,col,d,styles _[I])work _ book。保存(文件名)注:这里在创建sheet表时 add_sheet(key,cell_overwrite_ok = True) 重写设置需打开。

  主代码:if _ _ name _ _= _ _ main _ :data=read _ data( test 01 . xls )c _ data,D _ data=del _ duplication(data)heads=c _ data[0]D2=classify _ data(c _ data[1:])Ixs=data _ index(D2)new _ excel=create _ excel(D2,heads,Ixs, new.xls )

  异常数据标记效果图:

  End:这个博客的内容就这些了。如果有什么不清楚的地方,请查看之前的博客。感谢阅读。

  专栏【Python与Office】本专栏将详细讲解Python的第三方模块,如xlwt、xlrd、python-docx等是如何实现的。操作办公软件(Word Excel PPT)。同时会配一些例子。一方面会加强对知识点的理解和运用;另一方面也希望能起到引导读者思考如何利用python提高offic办公软件办公效率的作用。

  感兴趣的朋友可以订购按分类三分类计算的商场价与店铺价差价最大的标记效果图:或者关注。如果在博客中遇到什么问题或者想法,可以留言或者私信。

  收藏

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: