havy505 2023-05-26 15:44 采纳率: 25%
浏览 62

python统计excel不同表姓名出现的次数汇总

python统计一个系统登录使用人数情况的数据,数据来源excel有多个表,sheet1-sheetN,每张表是每天登录显示的姓名,每张表B列都是姓名,不同的表出现的名字和顺序都有不同,需要统计所有名字在所有表中出现的次数,查了countif函数,但是总实现不了效果,请教是否能贴上用python实现的代码

我想要达到的结果
统计在所有工作表中,所有的姓名出现的次数,在一个汇总表中显示,B列显示姓名,C列显示姓名对应出现的次数

  • 写回答

1条回答 默认 最新

  • apples_kk 2023-05-26 15:50
    关注
    
    import pandas as pd
    import glob
    
    # 获取所有Excel文件
    files = glob.glob("*.xlsx")
    # 定义一个空的DataFrame来存储统计结果
    result = pd.DataFrame(columns=["姓名", "出现次数"])
    
    # 遍历所有Excel文件
    for file in files:
        # 读取当前Excel文件的所有Sheet
        sheets = pd.read_excel(file, sheet_name=None)
        # 遍历所有Sheet
        for sheet_name, sheet_data in sheets.items():
            # 统计当前Sheet中每个姓名的出现次数
            counts = sheet_data["B"].value_counts()
            # 将统计结果添加到结果DataFrame中
            for name, count in counts.items():
                if name in result.index:
                    result.loc[name]["出现次数"] += count
                else:
                    result.loc[name] = [name, count]
    
    # 将结果按照出现次数从大到小排序
    result = result.sort_values(by="出现次数", ascending=False)
    
    # 显示结果
    print(result.head())
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月26日