jobsType = {} for j in jobs: if j.pratice == 0: if jobsType.get(j.type, -1) == -1: # {Java:[1,2,4,3]} jobsType[j.type] = [json.loads(j.salary)[1]] else: jobsType[j.type].append(json.loads(j.salary)[1]) barData = {} for k, v in jobsType.items(): if not barData.get(k, 0): barData[k] = [0 for x in range(5)] for i in v: s = i / 1000 if s < 10: barData[k][0] += 1 elif s >= 10 and s < 20: barData[k][1] += 1 elif s >= 20 and s < 30: barData[k][2] += 1 elif s >= 30 and s < 40: barData[k][3] += 1 else: barData[k][4] += 1 legend = list(barData.keys()) if len(legend) == 0: legend = None return salaryList, barData, list(barData.keys())
时间: 2024-03-03 07:52:17 浏览: 22
这段代码的作用是根据传入的职位列表 `jobs`,统计不同类型职位的薪资分布情况,并将结果以字典方式存储在 `barData` 中,同时返回薪资列表 `salaryList`、`barData` 和 `barData` 的键(即职位类型)列表。
具体地,代码首先创建了一个空字典 `jobsType`,然后遍历职位列表 `jobs`,对每个非实习职位,将其薪资信息中的第二项(即平均薪资)加入到 `jobsType` 中对应类型的列表中。接着,代码创建了一个空字典 `barData`,并遍历 `jobsType` 中的每个类型,将其薪资列表按照一定区间进行分组,并统计各个区间的数量,将结果存储在 `barData` 中。最后,代码返回 `salaryList`、`barData` 和 `barData` 的键列表。
相关问题
def pieData(): jobs = JobInfo.objects.all() jobsType = {} for j in jobs: if j.pratice == 1: if jobsType.get(j.type, -1) == -1: jobsType[j.type] = [json.loads(j.salary)[1]] else: jobsType[j.type].append(json.loads(j.salary)[1]) result = [] for k, v in jobsType.items(): result.append({ 'name': k, 'value': addList(v) }) return result什么意思
这是一个 Python 函数,名为 pieData。它使用 Django 的 ORM 模块从数据库中获取 JobInfo 对象的所有实例。然后,它创建一个空字典 jobsType 用于存储每种工作类型的月平均工资,并遍历所有工作信息,筛选出实习经验(pratice=1)的工作信息,并将它们的月平均工资添加到 jobsType 中。
接着,代码创建一个空列表 result,用于存储每种工作类型的月平均工资的总和,然后遍历 jobsType 中的每个键值对,用 addList 函数将该工作类型的月平均工资求和。最后,将每种工作类型的名称和月平均工资总和添加到 result 中,并将 result 返回。
def getBarData(educational, workExpirence): salaryList = ['0-10k', '10-20k', '20-30k', '30-40k', '40k以上'] if educational == '不限' and workExpirence == '不限': jobs = JobInfo.objects.all() elif workExpirence == '不限': jobs = JobInfo.objects.filter(educational=educational) elif educational == '不限': jobs = JobInfo.objects.filter(workExperience=workExpirence) else: jobs = JobInfo.objects.filter(educational=educational, workExperience=workExpirence) jobsType = {} for j in jobs: if j.pratice == 0: if jobsType.get(j.type, -1) == -1: jobsType[j.type] = [json.loads(j.salary)[1]] else: jobsType[j.type].append(json.loads(j.salary)[1]) barData = {} for k, v in jobsType.items(): if not barData.get(k, 0): barData[k] = [0 for x in range(5)] for i in v: s = i / 1000 if s < 10: barData[k][0] += 1 elif s >= 10 and s < 20: barData[k][1] += 1 elif s >= 20 and s < 30: barData[k][2] += 1 elif s >= 30 and s < 40: barData[k][3] += 1 else: barData[k][4] += 1 legend = list(barData.keys()) if len(legend) == 0: legend = None return salaryList, barData, list(barData.keys())代码解释,有数据分析吗?
这段代码是一个获取柱状图数据的函数,接受两个参数:教育程度和工作经验。函数首先根据传入的参数筛选出符合条件的职位信息(JobInfo),然后对符合条件的职位按照职位类型进行分组,统计每个职位类型的薪资分布情况,并返回一个包含薪资分布数据的字典(barData)和职位类型的列表(legend)。
具体来说,函数将薪资分为五个档次('0-10k', '10-20k', '20-30k', '30-40k', '40k以上'),并统计每个职位类型落在不同薪资档次的职位数量,最终将结果保存到barData字典中。函数还会对barData字典进行一些处理,使其可以直接用于绘制柱状图。最后,函数返回三个值:薪资档次列表(salaryList)、薪资分布数据字典(barData)和职位类型列表(legend)。
从数据分析的角度来看,这段代码实现了一种简单的数据聚合和可视化方法,可以用于快速了解某个行业或职位类型的薪资分布情况。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![dmg](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![dmg](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)