Python 自动化清洗整理CSV文件

应用场景简介

在SEO优化工作中,尤其是针对大型电商平台或内容网站,经常需要处理大量的长尾关键词数据。

这些数据通常以CSV文件的形式存储,且文件名包含特定平台(如Google、亚马逊)和关键词类别。

手动处理这些文件费时费力,且易出现错误。通过这个Python脚本,可以自动化批量处理目录中的CSV文件,将关键词数据提取、清洗并保存到TXT文件中,同时生成统计报告以便后续分析。

这一方案大大提升了工作效率,确保了数据处理的准确性和一致性。

处理速率:

总计发现 63 个CSV文件
处理了 1285805 个关键词数据
处理耗时 2.69 

示范:

import os
import glob
import pandas as pd
import random
import time

# 定义CSV文件路径
csv_directory = r'D:\data\excel'

# 获取所有符合命名规则的CSV文件路径
csv_files = glob.glob(os.path.join(csv_directory, '*--google长尾词_*.csv')) + glob.glob(os.path.join(csv_directory, '*--亚马逊长尾词_*.csv'))

# 如果没有找到CSV文件则终止程序
if not csv_files:
    print("未找到符合条件的CSV文件。")
    exit()

def process_csv(file_path):
    # 尝试用不同编码逐行读取CSV文件
    encodings = ['utf-8', 'ISO-8859-1', 'GBK']
    for encoding in encodings:
        try:
            return pd.read_csv(file_path, encoding=encoding, skiprows=2, usecols=[0])
        except UnicodeDecodeError:
            continue
    raise ValueError(f"无法读取文件: {file_path},可能编码不正确。")

# 记录处理过的变量1避免重复命名
processed_files = {}

# 总计关键词数量
total_keywords = 0

# 处理计时
start_time = time.time()

# 处理每个CSV文件
for csv_file in csv_files:
    # 从文件名中提取第一个变量作为TXT文件名
    file_name = os.path.basename(csv_file)
    var1 = file_name.split('--')[0]

    # 读取CSV文件
    df = process_csv(csv_file)

    # 提取A列的所有关键词并去重
    keywords = df.iloc[:, 0].dropna().unique()

    # 累加总关键词数量
    total_keywords += len(keywords)

    # 处理重复变量1的文件名
    if var1 in processed_files:
        processed_files[var1] += 1
    else:
        processed_files[var1] = 1

    # 构建TXT文件名包含变量1重复编号关键词数量
    if processed_files[var1] > 1:
        txt_file_name = f"{var1}_{processed_files[var1]}_{len(keywords)}.txt"
    else:
        txt_file_name = f"{var1}_{len(keywords)}.txt"

    # 将关键词保存到TXT文件
    with open(os.path.join(csv_directory, txt_file_name), 'w', encoding='utf-8') as txt_file:
        for keyword in keywords:
            txt_file.write(f"{keyword}\n")

    # 删除已处理的CSV文件
    os.remove(csv_file)

    print(f"已处理文件:{file_name},关键词已保存到:{txt_file_name}")

# 计算处理耗时
end_time = time.time()
elapsed_time = end_time - start_time

# 输出处理结果
print(f"总计发现 {len(csv_files)} 个CSV文件")
print(f"处理了 {total_keywords} 个关键词数据")
print(f"处理耗时 {elapsed_time:.2f} 秒")

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注