用 Python 对 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

测试:


                
  • 31
    点赞
  • 223
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,您想了解如何使用 PythonExcel 表格的文本数据进行分析和数值化处理。首先,需要安装 pandas 和 openpyxl 库,它们可以帮助读取和写入 Excel 文件。 以下是一些常用的 Python 代码示例: 1. 读取 Excel 文件 ```python import pandas as pd # 读取 Excel 文件 df = pd.read_excel('file.xlsx', sheet_name='Sheet1') ``` 2. 对文本数据进行分析 ```python # 统计文本数据的词频 word_count = df['text_column'].str.split(expand=True).stack().value_counts() # 将文本数据转换为小写并去除标点符号和停用词 import string from nltk.corpus import stopwords stop_words = set(stopwords.words('english')) def clean_text(text): text = text.lower() text = text.translate(str.maketrans('', '', string.punctuation)) text = ' '.join([word for word in text.split() if word not in stop_words]) return text df['clean_text'] = df['text_column'].apply(clean_text) ``` 3. 对数值数据进行处理 ```python # 计算数值列的均值、方差、最大值和最小值 mean = df['numeric_column'].mean() std = df['numeric_column'].std() max_value = df['numeric_column'].max() min_value = df['numeric_column'].min() # 将数值数据离散化 import numpy as np df['discretized'] = pd.cut(df['numeric_column'], bins=np.arange(0, 101, 10)) ``` 4. 写入 Excel 文件 ```python # 写入处理后的数据到新的 Excel 文件 df.to_excel('processed_file.xlsx', sheet_name='Sheet1', index=False) ``` 以上是一些常用的 Python 代码示例,可以根据具体需求进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值