使用python计算贝尔宾团队角色测评结果

前言

  1. 什么是贝尔宾团队角色理论?
    基本思想是:没有完美的个人,只有完美的团队。人无完人,但团队却可以是完美的团队,只要适当的拥有如下各种角色。

  2. 产生来源
    团队角色理论是英国组织行为学家、英国剑桥产业培训研究部前主任梅雷迪思·贝尔宾(R.Meredith Belbin)提出的一个分析团队角色和团队合作的一个理论模型。贝尔宾是团队工作理论的早期倡导者,为了研究团队取得成功的原因,他进行了两个为期 9 年的重要研究团队试验。1981 年,贝尔宾首次在《团队管理:他们为什么成功或失败》(Management Teams - Why They Succeed or Fail)一书中提出了贝尔宾团队角色模型,经过12 年的推广应用和修正,于 1993 年再次提出了修正的研究成果。

  3. 基本理念
    其基本理念是:在团队中,人们除了承担工作角色、或功能角色之外,还在承担团队角色。前者多与人们的专业技能、职位水平有关,而后者则反映了人们的兴趣、性格以及思维方式所决定的一种特定行为模式。

  4. 说明
    前几天公司要求做了一个贝尔宾团队角色测评,但是在统计结果的时候发现过于麻烦,所以写了个简单的程序计算测评结果,本程序把最高分和最高分-1选为测评结果的角色

贝尔宾团队角色测评

  1. 测评内容
    在这里插入图片描述
  2. 测试结果表
    在这里插入图片描述
  3. 团队角色测试分析表
    在这里插入图片描述
  4. 测试结果说明
    在这里插入图片描述

结果计算

  1. python实现测评结果测算使用说明
    本程序可以实现批量的根据test文件夹下的测试结果表计算8个团队角色的得分,根据最大分数以及最大分数减一得出所属团队角色(可能是多个),根据test文件夹下excel的文件名在团队角色测试分析表中生成一个新的sheet,把生成的结果存放在这个sheet中。
  2. python实现测评结果目录说明
    在这里插入图片描述
  3. 结果
    在这里插入图片描述
    在这里插入图片描述
  4. python实现测评结果测算源码
    # -*- coding:utf8 -*-
    # @Project : flask_review
    # @Author : qxq
    # @Time : 2019/9/22 3:22 PM
    import os
    import openpyxl
    import pandas as pd
    from openpyxl.styles import Alignment, Font, colors
    
    
    def get_test_result(team_role_test_analysis_table, scores_table):
        a = pd.read_excel(team_role_test_analysis_table, header=2, index_col=0)
        b = a.ix[0:7]
        analysis_table_info = b.dropna(axis=1)
    
        all_list = []
        scores_list = []
        role_dict = {}
        for i in analysis_table_info.columns:
            # globals()[i[:2] + "_list"] = list(analysis_table_info[i])
            exec(i[:2] + "_list = {}".format(list(analysis_table_info[i])))
    
            all_list.append(i[:2] + "_list")
            exec(i[:2] + " = 0")
            scores_list.append(i[:2])
            role_dict[i[:2]] = i[2:]
        scores_table_info = pd.read_excel(scores_table, index_col=0)
    
        for i, idx in enumerate(scores_table_info.index):
            for j, v in enumerate(scores_list):
                # globals()[v] += scores_table_info.ix[idx][eval(all_list[j])[i]]
                exec(v + " += {}".format(scores_table_info.ix[idx][eval(all_list[j])[i]]))
    
        new_title = scores_table.split('.')[0]
        wb = openpyxl.load_workbook(team_role_test_analysis_table)
        if new_title in wb.sheetnames:
            wb.remove(wb[new_title])
        copy_sheet = wb.copy_worksheet(wb["Sheet1"])
        copy_sheet.title = new_title
        # 水平居中, 垂直居中
        alignment_style = Alignment(horizontal='center', vertical='center')
        scores_value_list = []
        for i, v in enumerate(scores_list):
            copy_sheet.cell(row=11, column=(i + 1) * 2).value = eval(v)
            copy_sheet.cell(row=11, column=(i + 1) * 2).alignment = alignment_style
            copy_sheet.cell(row=11, column=(i + 1) * 2).font = Font(size=16, color=colors.RED, bold=True)
            scores_value_list.append(eval(v))
    
        max_v = max(scores_value_list)
        index_flag = 0
        max_index_list = []
        for i in range(scores_value_list.count(max_v)):
            max_index = scores_value_list.index(max_v, index_flag)
            max_index_list.append(max_index)
            index_flag = (max_index + 1)
    
        s_index_list = []
        s_max_v = max_v - 1
        if scores_value_list.count(s_max_v):
            index_flag = 0
            for i in range(scores_value_list.count(s_max_v)):
                max_index = scores_value_list.index(s_max_v, index_flag)
                s_index_list.append(max_index)
                index_flag = (max_index + 1)
    
        ret_list = []
        for i in max_index_list:
            ret_list.append(role_dict[scores_list[i]])
        for i in s_index_list:
            ret_list.append(role_dict[scores_list[i]])
        ret_str = '、'.join(ret_list)
        ret = "  {}  ".format(ret_str)
        copy_sheet.cell(row=15, column=5).value = ret
        copy_sheet.cell(row=15, column=5).alignment = Alignment(horizontal='left', vertical='center')
        copy_sheet.cell(row=15, column=5).font = Font(size=16, bold=True, underline="single")
        wb.save(team_role_test_analysis_table)
    
    
    if __name__ == '__main__':
        team_role_test_analysis_table = "团队角色测试分析表.xlsx"
    
        first_file_dir = os.getcwd()
        team_role_test_analysis_table = first_file_dir + "/" + team_role_test_analysis_table
        dir = 'test'
        os.chdir(dir)
        file_dir = os.getcwd()
        files = list(os.walk(file_dir))[0][-1]
        for file in files:
            if file.split('.')[1] == 'xlsx':
                get_test_result(team_role_test_analysis_table, file)
    
    

网盘地址

文档、表格、源码、测试数据等资料存放网盘地址: https://pan.baidu.com/s/1_B3VToqDkT5ohFX66ea3IQ

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值