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

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日

悬赏问题

  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
  • ¥15 Python报错怎么解决
  • ¥15 simulink如何调用DLL文件
  • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
  • ¥30 线性代数的问题,我真的忘了线代的知识了
  • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
  • ¥188 需要修改一个工具,懂得汇编的人来。