Python Pandas实现导出两个Excel数据集的分组记录数分析

编写Python Pandas代码实现从一个Excel文件中的一个Sheet中的表格里取两个维度字段,根据这两个维度字段的数据分组统计,计算记录数的分组总计值,得到一个包含两个维度字段和记录数字段的分组总计值字段的dataframe,再从另一个Excel文件中的一个Sheet中的表格里取两个维度字段,一个计算记录数的分组数据组成一个dataframe,将这两个字段的对应字段full outer join起来,显示所有字段和两个记录数字段值相减的值,以及相减的值除以第一个dataframe的分组记录数的百分比数值。

python 复制代码
import pandas as pd
import numpy as np

# 读取第一个Excel文件
df1 = pd.read_excel('file1.xlsx', sheet_name='Sheet1')
# 分组统计记录数(维度字段名需替换为实际字段名)
df1_group = df1.groupby(['维度字段1', '维度字段2']).size().reset_index(name='记录数1')

# 读取第二个Excel文件
df2 = pd.read_excel('file2.xlsx', sheet_name='Sheet1')
# 分组统计记录数(维度字段名需替换为实际字段名)
df2_group = df2.groupby(['维度字段1', '维度字段2']).size().reset_index(name='记录数2')

# 全外连接合并
merged_df = pd.merge(
    df1_group,
    df2_group,
    on=['维度字段1', '维度字段2'],
    how='outer'
).fillna(0)

# 计算差值列
merged_df['记录数差值'] = merged_df['记录数1'] - merged_df['记录数2']

# 计算百分比列(处理除以0的情况)
merged_df['差值百分比'] = np.where(
    merged_df['记录数1'] != 0,
    (merged_df['记录数差值'] / merged_df['记录数1']) * 100,
    0  # 当记录数1为0时显示0%
)

# 转换数值列为整数类型
merged_df[['记录数1', '记录数2']] = merged_df[['记录数1', '记录数2']].astype(int)

# 显示结果
print("合并结果:")
print(merged_df)

# 可选:保存结果到新Excel
merged_df.to_excel('comparison_result.xlsx', index=False)

使用说明:

  1. 将代码中的'file1.xlsx'和'file2.xlsx'替换为实际文件名
  2. 将'维度字段1'和'维度字段2'替换为实际的维度字段名称
  3. 将sheet_name参数替换为实际的sheet名称
  4. 数值列会自动处理NaN值并转换为整数类型
  5. 结果包含以下列:
    • 维度字段1
    • 维度字段2
    • 记录数1(来自第一个文件)
    • 记录数2(来自第二个文件)
    • 记录数差值(记录数1 - 记录数2)
    • 差值百分比(差值/记录数1)

注意事项:

  1. 确保两个文件的维度字段名称完全一致
  2. 最终结果会自动处理缺失值(用0填充)
  3. 百分比计算已处理除零情况(当记录数1为0时显示0%)
  4. 结果数据会自动保存到comparison_result.xlsx文件(可选)

示例输出:

复制代码
维度字段1  维度字段2  记录数1  记录数2  记录数差值  差值百分比
A        X        10      8        2      20.0
B        Y        20     25       -5     -25.0
C        Z         5      0        5     100.0
D        W         0      3       -3       0.0
相关推荐
STLearner20 分钟前
ICML 2026 | LLM×Graph论文总结[2]【Graph4LLM,Graph4Agent,智能体记忆(Memory)
大数据·人工智能·python·深度学习·学习·机器学习·数据挖掘
牛奔8 小时前
Go 如何打印调试深层或嵌套的结构体
开发语言·后端·golang
geovindu8 小时前
go: Iterative Algorithms
开发语言·后端·算法·golang·迭代算法
学逆向的8 小时前
汇编——JCC指令
开发语言·汇编·网络安全
mayaairi9 小时前
JS循环语句深度解析:嵌套for、while与do...while
开发语言·前端·javascript
郭老二10 小时前
【Python】基本语法:装饰器语法糖@
python
kite012110 小时前
Go语言Map深度解析与最佳实践
开发语言·后端·golang
_Jimmy_11 小时前
Agent常用检索器的详细介绍
python·langchain
小柯南敲键盘11 小时前
图片翻译API接入与自动化实现指南
运维·python·自动化
l1564694811 小时前
突围!图文混合知识库难以解析,Kimi-K3 原生视觉架构深耕知识工作,DMXAPI 统一接口,缩短项目开发周期
java·大数据·开发语言