Python - 读取CSV文件发现有重复数据,如何清洗以及保存为CSV文件,这里有完整的过程!!!! 片尾有彩蛋

发布时间 2023-09-21 22:38:52作者: 修炼诗人

语言:Python

功能:

  1、清洗CSV文件中重复数据。

  2、保存为CSV文件

大体流程:

  1、首先观察CSV文件中的数据布局格式如何?

  2、通过csv包读取数据。并根据规则使用continue,来跳过本次循环,并将所需数据保存到列表A中,当列表A中的数据变成len(列表A) == 2时,将此数据保存到列表B中。同时将列表A = []

  3、采用csv.writer(file).writerows(列表B) 保存为CSV文件。

  PS:1、保存为CSV文件时,出现:UnicodeEncodeError: 'gbk' codec can't encode character '\ufeff' in position 0: illegal multibyte sequence 错误。在with open().加入encoding='UTF-8'。2、保存的csv文件会出现一行行的空白,所以需要在with open().加入newline = ''。

  首先通过查看CSV文件发现数据格式如下所示:

  发现,重复数据格式:每两行是一样的。也就是说数据四行为一个循环。所以当我们想要读取数据的时候,可以采用“三”作为循环的标志。这里读者获取以四为循环中的第一、二条数据。py文件的代码如下所示:

# 使用CSV读取文件
import csv
import json
filename = 'Resource_DataSet.csv'
list_Theme = []
list_Body = []
with open(filename,"r",encoding='UTF-8') as csvfile:
    csvreader = csv.reader(csvfile,)
    ijk = 1
    ijkl = 2
    # 遍历读到的每一行数据
    for row in csvreader:
        if(ijk == 1):
            # print(row)
            list_Theme.append(str(row[0]))
            ijk = 3
            continue
        if(ijkl == 2):
            list_Theme.append(str(row[0]))
            ijkl = 4
            continue
        if (len(list_Theme)==2):
            list_Body.append(list_Theme)
            list_Theme = []
        ijk = ijk -1
        ijkl = ijkl -1
        # list_Body.append(list_Theme)
        # print(list_Theme)
        # list_Theme = []
print(len(list_Theme))
print(len(list_Body))

  接下来将读取在list列表中的数据读到csv文件中。这个要点在上面展示了。Python代码如下所示:

with open("data_middle.csv", "w",newline='',encoding='UTF-8') as file:
    writer = csv.writer(file)
    writer.writerows(list_Body) # 这里的;list_Body是前面Python代码对应存储list列表的数据

  到此所有的工作也就做完了,下面我们看一下。效果图: