salary_ranges = { "10000以下": 0, "10000-50000": 0, "50000-100000": 0, "100000-200000": 0, "200000以上": 0 } # 统计各个薪资范围的数量 for salary in data: # print(data[salary]) annual_salary = classify_salary(salary) if annual_salary is not None: if annual_salary < 10000: salary_ranges["10000以下"] += data[salary] elif 10000 <= annual_salary < 50000: salary_ranges["10000-50000"] += data[salary] elif 50000 <= annual_salary < 100000: salary_ranges["50000-100000"] += data[salary] elif 100000 <= annual_salary < 200000: salary_ranges["100000-200000"] += data[salary] else: salary_ranges["200000以上"] += data[salary] salary_pie = ( Pie() .add( series_name="年薪分布饼状图", data_pair=[(key, value) for key, value in salary_ranges.items()], radius=["40%", "75%"], ) .set_global_opts( title_opts=opts.TitleOpts( title="年薪分布饼状图", pos_left="center", title_textstyle_opts=opts.TextStyleOpts(font_weight="bold"), ), legend_opts=opts.LegendOpts( orient="vertical", pos_top="middle", pos_right="5%", item_width=20, item_height=10, ), ) .set_series_opts( label_opts=opts.LabelOpts(formatter="{b}: {c}", font_size=12, font_weight="bold") ) ) salary_pie.width = "100%vh" salary_pie.height = "100vh" salary_pie.render('templates/salary_pie_chart.html')
时间: 2023-11-22 10:52:08 浏览: 158
这段代码看起来像是用 Python 的 pyecharts 库来制作一个年薪分布饼状图。首先,定义了一个字典 `salary_ranges`,其中包含了不同的薪资范围和初始值。然后通过循环遍历数据集,将薪资按照不同范围进行分类,统计每个范围的数量。接着,使用 Pyecharts 中的 Pie 类来创建一个饼状图,设置数据系列、半径、标题、图例等参数,最后将饼状图渲染到模板文件 `salary_pie_chart.html`。
相关问题
def classify_salary(salary): if '·' in salary: salary_parts = salary.split('·') if len(salary_parts) == 2: salary_range = salary_parts[0].split('-') if len(salary_range) == 2: try: low_salary = float(salary_range[0]) high_salary = float(salary_range[1].replace('K', '')) # 移除额外字符 salary_multiplier = float(salary_parts[1].replace('薪', '')) annual_salary = ((low_salary + high_salary) / 2) * salary_multiplier * 1000 return annual_salary except ValueError: print(salary) return None
这是一个 Python 函数,其目的是将输入的薪资字符串转换为年薪。函数中的主要逻辑如下:
1. 首先判断薪资字符串中是否包含 '·' 字符,如果不包含则无法进行转换,返回 None。
2. 如果包含 '·' 字符,则将薪资字符串按照 '·' 进行拆分。
3. 如果拆分后的列表长度为 2,则说明薪资字符串中包含了薪资范围和薪资倍数两部分信息。
4. 将薪资范围部分按照 '-' 进行拆分,得到最低薪资和最高薪资。
5. 将最低薪资和最高薪资转换为 float 类型。
6. 将最高薪资中的 'K' 字符移除,并转换为 float 类型。
7. 将薪资倍数中的 '薪' 字符移除,并转换为 float 类型。
8. 根据公式 ((最低薪资 + 最高薪资) / 2) * 薪资倍数 * 1000 得到年薪。
9. 如果任意一个转换过程出现异常,则返回 None。
这个函数可以用于处理形如 "10-20K·12薪" 的薪资字符串,将其转换为年薪。
salary_range = salary.split('-') if len(salary_range) == 2: try: low_salary = float(salary_range[0]) high_salary = float(salary_range[1].replace('K', '')) # 移除额外字符 monthly_salary = (low_salary + high_salary) / 2 annual_salary = monthly_salary * 12 * 1000 return annual_salary except ValueError: print(salary) return None
这段代码是将输入的薪资范围字符串拆分成最低薪资和最高薪资,并计算其平均月薪和年薪。具体来说,它首先使用字符串的split方法将薪资范围字符串按照"-"符号拆分成两个子字符串,分别表示最低薪资和最高薪资。然后,它将最低薪资和最高薪资转换成浮点数类型,并计算它们的平均值作为月薪。接着,它将月薪乘以12(表示一年有12个月)和1000(将单位从千元转换成元),得到年薪,并将其返回。如果在转换过程中出现了ValueError异常,则会打印出薪资字符串并返回None。
阅读全文