使用python完成excel文件的合并,并完成简单的数据统计

Python脚本实现了以下功能:

  1. 合并多个Excel文件 :脚本遍历当前目录下的所有.xlsx文件,读取每个文件的内容并合并到一个大的DataFrame中,然后将合并后的数据写入到名为combined_data.xlsx的新文件中。

  2. 统计指定列的重复值 :读取刚刚合并的combined_data.xlsx文件,检查其中的某一列(在这个例子中为攻击类型)是否存在且数据类型为字符串。如果条件满足,则统计该列中不同文本的出现次数,并将重复值及其出现次数按照降序排列。最后,将统计结果写入同一个Excel文件的第二个工作表(Sheet2)中。

注意事项: 以下代码使用了 openpyxl和pandas这两个第三方库 ,使用以下命令获取。

复制代码
pip install openpyxl
pip install pandas
python 复制代码
import os
import openpyxl
import pandas as pd

# 获取当前脚本所在目录
script_dir = os.path.dirname(__file__)
output_file = os.path.join(script_dir, 'combined_data.xlsx')

# 合并当前目录下所有xlsx文件
current_directory = os.getcwd()
file_list = [os.path.join(current_directory, f) for f in os.listdir(current_directory) if f.endswith('.xlsx')]

# 初始化一个空列表来存储所有数据帧
data_frames = []

# 逐个读取xlsx文件并合并
for file in file_list:
    df = pd.read_excel(file)
    data_frames.append(df)

# 合并所有数据帧
combined_df = pd.concat(data_frames, ignore_index=True)

# 将合并后的数据写入新创建的xlsx文件中
combined_df.to_excel(output_file, index=False)

# 检查并处理列名为'攻击类型'的列
target_column = '攻击类型'
if target_column in combined_df.columns and combined_df[target_column].dtype == 'object':
    # 统计该列总行数
    total_rows = combined_df.shape[0]

    # 去除重复值并计算重复次数
    duplicates = combined_df[target_column].duplicated(keep=False)
    duplicate_counts = combined_df[duplicates][target_column].value_counts().reset_index()
    duplicate_counts.columns = [target_column, 'occurrences']

    # 按照重复次数降序排列
    duplicate_counts = duplicate_counts.sort_values(by='occurrences', ascending=False)

    # 新增Sheet2
    with pd.ExcelWriter(output_file, engine='openpyxl', mode='a') as writer:
        writer.book = openpyxl.load_workbook(output_file)
        duplicate_counts.to_excel(writer, sheet_name='Sheet2', index=False)
    print(f"{target_column}重复数据已写入到{output_file}的Sheet2中。")
else:
    print(f"{target_column}不存在或不是字符串类型,请检查数据")

print(f"总行数: {total_rows}")
相关推荐
龙亘川5 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人5 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
quantdash_cc5 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl5 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
Raas1006 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
云和数据.ChenGuang6 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
专注仿真6 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy17 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
呆呆虫127 小时前
用 orjson 加速 SerpBase 响应解析:基准对比与注意事项
开发语言·php
wflynn7 小时前
GitHub 今日推荐|Edge0:让大号 MoE 模型在一台 Mac 上流式跑起来
python·开源·github