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
相关推荐
君顾14 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
南棱笑笑生4 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
问天_观心5 小时前
大模型微调学习(二)
人工智能·python·深度学习·学习·语言模型·transformer
洋洋不叫杨杨5 小时前
揭秘当下知名的SEO优化渠道,你知道几个?
大数据·python
阿童木写作5 小时前
跨境图片翻译工具推荐:批量处理视频字幕与智能抠图
python·音视频
平头哥技术团队5 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌萨奇也要立志学C++5 小时前
【洛谷】kmp算法
开发语言·算法
梦想的颜色5 小时前
OCR 识别原理与 Python 识图全实战:从文字提取到图像内容理解
python·计算机视觉·ocr·图像识别·python 识图
禹凕5 小时前
Dijkstra算法详解与应用
python·算法
传奇开心果编程5 小时前
【Rust入门知识点学与练】第4课:条件判断 if / else
开发语言·学习·rust