文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python练手,样本

2023-01-31 02:05

关注
import pandas as pd

def getEmpDataFrame(num):
    
    '''创建一份可复用的数据,有一定的随机性和真实性'''
    
    #员工编号
    emp = [''] * num
    lenNum = len(str(num))
    for i in range(num):
        emp[i] = str(i+1).zfill(lenNum)
        
    #性别:男多女少
    sex = [1] * int(round(num*0.7)) + [0] * (num - int(round(num*0.7)))
    
    #年龄:年龄是平均分布的,相对来说男同事比女同事要大些
    age = [0] * num
    for i in range(num):
        if sex[i] == 1 :
            age[i] = 28 + i % 33
        if sex[i] == 0 :
            age[i] = 22 + i % 33
            
    #职级:越高级越罕有  与其他因素无关
    lvl = [0] * num
    for i in range(num):
        if lvl[i] ==0 and (i+1) % 33 == 0 :
            lvl[i] = 5 
            continue
        if lvl[i] ==0 and (i+1) % 23 == 0 :
            lvl[i] = 4
            continue
        if lvl[i] ==0 and (i+1) % 13 == 0 :
            lvl[i] = 3
            continue
        if lvl[i] ==0 and (i+1) % 3 == 0 :
            lvl[i] = 2
            continue
        lvl[i] = 1
        
    #入职年长:跟职级和年龄有关  #通常4年升1级  #年龄-最低年龄=可能最大的入职年长
    yrs = [0] * num
    for i in range(num):
        
        if sex[i] == 1 :
            if lvl[i] * 4 >= age[i] - 28 :
                yrs[i] = age[i] - 28 
            else:
                yrs[i] = lvl[i] * 4  
        if sex[i] == 0 :
            if lvl[i] * 4 >= age[i] - 22 :
                yrs[i] = age[i] - 22 
            else:
                yrs[i] = lvl[i] * 4 
    
    #学历:年龄小的平均学历相对高些,职级高的学历相对高些
    edu = [0] * num
    for i in range(num):
        if lvl[i] == 5 or lvl[i] == 4 :
            if age[i] < 40 :
                edu[i] = 4 #年轻高级是博士
            else:
                edu[i] = 3 #年老高级是硕士
        else:
            if age[i] < 40 :
                edu[i] = 2 #年轻低级是大学
            else:
                edu[i] = 1 #年老低级是大专
    
    #工资:规则计算 加上一点随机变化  在加上一点入职时长的倍数鼓励
    sal = [0.] * num
    for i in range(num):
        sal[i] = round( ( 3000 \
                          + yrs[i] * 200 + edu[i] * 1000 + ( lvl[i] - 1 ) * 3000 + sex[i] * 1000 \
                          + i % 7 * 300 ) \
                       * ( 1 + yrs[i] / 100 ) \
                       ,3)
    #离职风险:高低  #年轻大学生容易离职  #低学历大年龄且入职时间短容易被淘汰
    ris = [0] * num
    for i in range(num):
        if yrs[i] < 2 and age[i] < 35 and edu[i] == 2:
            ris[i] = 1
        if edu[i] == 1 and age[i] > 50 and yrs[i] < 5:
            ris[i] = 1
        
    df = pd.DataFrame({"sex":sex,
                       "age":age,
                       "lvl":lvl,
                       "yrs":yrs,
                       "edu":edu,
                       "sal":sal,
                       "ris":ris},
                      index = emp)
    return df
 
# print(getEmpDataFrame(60))


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯