havy505 2023-06-02 10:29 采纳率: 25%
浏览 31

python中分条件查询统计excel数据

python统计打卡人数情况的数据,数据来源excel有多个表,sheet1-sheetN,每张表是每天登录显示的姓名,每张表A列都是姓名,不同的表出现的名字和顺序都有不同,需要统计所有名字在所有表中出现的次数,
但是因为有姓名相同,部门不同的情况,原有代码统计出来把两个同样姓名的人归到一条记录了,现在需要区别姓名和部门统计出现的人数


for w in all_ws:    
    for row in range(2, w.max_row-1):        
        if w['B'+str(row)].value not in res.keys():
                res.update({w['B'+str(row)].value:{'部门':w['C'+str(row)].value,
                           '出现次数':1}})        
        else:   
            res[w['B'+str(row)].value]['出现次数'] += 1

按照这段代码,输出结果是:
姓名 部门 出现次数
李明 人事部 10
王明 人事部 5

我想要达到的结果
统计在所有工作表中,所有的姓名出现的次数,在一个汇总表中显示,A列显示姓名,B列显示部门,C列显示姓名对应出现的次数
如:姓名 部门 出现次数
李明 人事部 7
李明 销售部 3
王明 人事部 5

  • 写回答

2条回答 默认 最新

  • 爱吃土豆丝的打工人 河南登凌教育科技有限公司官方账号 2023-06-02 11:19
    关注

    可以使用Python的pandas库来读取Excel文件,并使用groupby和agg函数来统计每个人在不同表中出现的次数。具体实现方法如下

    import pandas as pd
    
    # 读取Excel文件中的所有表格
    excel_file = pd.ExcelFile('your_excel_file.xlsx')
    dfs = {sheet_name: excel_file.parse(sheet_name) for sheet_name in excel_file.sheet_names}
    
    # 合并所有表格中的数据
    df = pd.concat(dfs.values())
    
    # 统计每个人在不同表格中出现的次数
    result = df.groupby(['姓名', '部门']).agg({'部门': 'count'})
    
    # 重命名列名
    result.columns = ['出现次数']
    
    # 输出结果
    print(result)
    
    
    

    在上面的代码中,首先使用pandas库的ExcelFile函数读取Excel文件中的所有表格,并使用concat函数将所有表格中的数据合并成一个DataFrame。然后使用groupby函数按照姓名和部门进行分组,并使用agg函数统计每个人在不同表格中出现的次数。最后使用rename函数重命名列名,并输出结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月2日