当前位置: 首页 > article >正文

基于Python 和 pyecharts 制作招聘数据可视化分析大屏

在本教程中,我们将展示如何使用 Python 和 pyecharts 库,通过对招聘数据的分析,制作一个交互式的招聘数据分析大屏。此大屏将通过不同类型的图表(如柱状图、饼图、词云图等)展示招聘行业、职位要求、薪资分布等信息。
在这里插入图片描述

1. 准备工作

1.1 安装必要的 Python 库

在开始之前,确保你已经安装了以下 Python 库:

pip install pandas pyecharts jieba openpyxl
  • pandas:用于数据处理。
  • pyecharts:用于生成可交互的图表。
  • jieba:用于中文分词。
  • openpyxl:用于读取 Excel 文件。

1.2 数据集准备

假设我们已经有一个招聘数据集 tmp.xlsx,它包含以下字段:

  • Industry:行业
  • Job Experience:工作经验要求
  • Job Education:学历要求
  • Staff Size:公司规模
  • Job Location:工作地点
  • key_word_list:关键词列表
  • Job Intro:职位介绍
  • lowest_salary:最低薪资
  • highest_salary:最高薪资

数据集的每一行代表一个招聘职位信息。

2. 数据加载与处理

2.1 读取数据

我们使用 pandas 读取 Excel 文件,并进行一些初步的数据清理。

import pandas as pd

# 读取 Excel 数据
df_reset = pd.read_excel('./tmp.xlsx')

# 查看数据基本信息
print(df_reset.head())

2.2 统计行业数量

我们通过 Counter 来统计招聘数据中不同行业的数量,跳过 “None” 值。

from collections import Counter

# 统计行业数量,跳过 "None" 值
industry_count = Counter(industry for industry in df_reset['Industry'] if industry != 'None')

# 获取前 10 个最常见的行业
industry_count_top10 = dict(industry_count.most_common(10))

2.3 统计工作经验和学历要求

我们同样可以对工作经验和学历要求进行统计,并获取前 10 个最常见的要求。

# 统计工作经验要求
education_counts = pd.Series(df_reset['Job Experience']).value_counts()
top10_education_counts = education_counts.head(10)

# 统计学历要求
education_counts = pd.Series(df_reset['Job Education']).value_counts()
top10_education_counts = education_counts.head(10)

2.4 处理员工规模

对于员工规模字段,我们需要将包含字符串 “None” 的值替换为 NaN,然后进行统计。

# 替换 "None" 为 NaN
df_reset['Staff Size'] = df_reset['Staff Size'].replace('None', pd.NA)
size_counts = df_reset['Staff Size'].value_counts().dropna()

2.5 处理职位地点

为了分析职位的地理分布,我们将城市名称处理为带有“市”字的格式,并统计不同城市的数量。

# 定义函数,在每个有效字符串值后面添加"市"
def add_city(value):
    if isinstance(value, str):
        return value + "市"
    return value

# 应用函数到 Job Location 列
df_reset["Job Location"] = df_reset["Job Location"].apply(add_city)

# 去除空值行
df_reset1 = df_reset.dropna(subset=["Job Location"])

# 统计职位地点
location_counts = df_reset1['Job Location'].value_counts().reset_index()

2.6 关键词提取和频率统计

我们从职位介绍中提取关键词,并统计它们的出现频率。使用 jieba 库进行中文分词,并过滤停用词。

import jieba
from collections import Counter

# 提取所有关键词
all_keywords = []
for keywords in df_reset1["key_word_list"].dropna():
    all_keywords.extend(keywords.split(','))

# 统计关键词出现频率
keyword_counts = Counter(all_keywords)

# 获取前 10 个关键词
top_ten_keywords = keyword_counts.most_common(10)
keywords, counts = zip(*top_ten_keywords)

3. 数据可视化

我们将使用 pyecharts 库来生成各种类型的图表,展示数据的不同方面。

3.1 设置主题与表格

首先,设置一些基础配置,比如页面主题和表格颜色。

from pyecharts import options as opts
from pyecharts.components import Table
from pyecharts.globals import ThemeType
from pyecharts.charts import Page

theme_config = ThemeType.PURPLE_PASSION  # 更改为您需要的主题类型

# 设置表格颜色
table_color = '#5B5C6E'  # 紫色主题的颜色

3.2 创建柱状图:行业数量

我们将创建一个柱状图,展示前 10 个行业的招聘数量。

from pyecharts.charts import Bar

bar_chart = Bar(init_opts=opts.InitOpts(theme=theme_config, width="450px", height="350px"))
bar_chart.add_xaxis(list(industry_count_top10.keys()))
bar_chart.add_yaxis("行业数量", list(industry_count_top10.values()))
bar_chart.set_global_opts(title_opts=opts.TitleOpts(title="前十大行业数量"))

在这里插入图片描述

3.3 创建饼图:学历要求分布

使用 Pie 图来展示工作经验和学历要求的分布。

from pyecharts.charts import Pie

pie_chart_education = Pie(init_opts=opts.InitOpts(theme=theme_config, width="450px", height="350px"))
sizes = [int(count) for count in top10_education_counts]
pie_chart_education.add("", [list(z) for z in zip(top10_education_counts.index, sizes)], radius=["30%", "75%"], rosetype="radius")
pie_chart_education.set_global_opts(title_opts=opts.TitleOpts(title="学历要求分布"))

在这里插入图片描述

3.4 创建雷达图:职位地点

为了展示职位地点的分布,我们使用 Radar 图。

from pyecharts.charts import Radar

radar = Radar(init_opts=opts.InitOpts(theme=theme_config, width="450px", height="350px"))
radar.add_schema(
    schema=[opts.RadarIndicatorItem(name=city, max_=1000) for city in location_counts['Job Location']]
)
radar.add("职位地点", [location_counts['Job Location'].tolist()], areastyle_opts=opts.AreaStyleOpts(opacity=0.5))
radar.set_global_opts(title_opts=opts.TitleOpts(title="职位地点雷达图"))

在这里插入图片描述

3.5 创建词云图:职位介绍

使用 WordCloud 图展示职位介绍中的高频词。

from pyecharts.charts import WordCloud

wordcloud = WordCloud(init_opts=opts.InitOpts(theme=theme_config, width="450px", height="350px"))
wordcloud.add("", top_words, word_size_range=[20, 100])
wordcloud.set_global_opts(title_opts=opts.TitleOpts(title="职位介绍词云图"))

在这里插入图片描述

3.6 创建薪资分布直方图

计算每个职位的平均薪资,并绘制薪资分布的直方图。

df_reset['average_salary'] = (df_reset['lowest_salary'] + df_reset['highest_salary']) / 2
salary_distribution = df_reset['average_salary'].value_counts().sort_index().reset_index()

salary_histogram = Bar(init_opts=opts.InitOpts(theme=theme_config, width="450px", height="350px"))
salary_histogram.add_xaxis(salary_distribution['index'].astype(str).tolist())
salary_histogram.add_yaxis("Frequency", salary_distribution['average_salary'].tolist())
salary_histogram.set_global_opts(title_opts=opts.TitleOpts(title="薪资分布"))

在这里插入图片描述

3.7 将所有图表组合成页面

最后,我们将所有生成的图表组合成一个页面,并渲染为 HTML 文件。

page = Page(page_title="基于Python分析大屏")
page.add(
    bar_chart,
    pie_chart_education,
    radar,
    wordcloud,
    salary_histogram
)

page.render('招聘分析大屏.html')

4. 结果展示

运行完上述代码后,你将得到一个名为 招聘分析大屏.html 的文件。打开这个 HTML 文件,你将看到一个交互式的招聘数据分析大屏,展示了不同的图表和统计结果,包括行业分布、学历要求、职位地点等信息。
在这里插入图片描述

总结

本教程展示了如何利用 Python 和 pyecharts 库,从招聘数据中提取关键信息,并通过多种可视化图表呈现分析结果。你可以根据自己的需求调整数据来源和图表类型,进一步扩展和优化你的数据分析大屏。
在这里插入图片描述

数据集和代码可添加


http://www.kler.cn/a/396273.html

相关文章:

  • Spring boot + Vue2小项目基本模板
  • 关于在Reverse函数中不能使用L=s而是*L=*s的原因分析
  • 【route】route add命令详解
  • go反射深入学习
  • 【学习日记】notebook添加JAVA支持
  • MySQL【三】
  • windows系统开发环境使用docker打包Django程序部署至服务器Ubuntu系统中
  • PDF编辑的好东西
  • 【动手学电机驱动】 STM32-FOC(7)MCSDK Pilot 上位机控制与调试
  • vue3:computed
  • 腾讯IM web版本实现迅飞语音听写(流式版)
  • Vagrant 没了 VirtualBox 的话可以配 Qemu
  • 自动驾驶系列—自动驾驶中的短距离感知:超声波雷达的核心技术与场景应用
  • Linux:进程间通信
  • 每日一练 | 包过滤防火墙的工作原理
  • 什么是C++中的常量表达式?有什么用途?
  • 三菱变频器A800逆变器模块及整流桥模块的检查方法
  • 【计算机网络】TCP协议特点1
  • 前端知识点---Window对象(javascript)了解
  • mybatis-spring-boot-starter和mybatis-plus-spring-boot3-starter冲突
  • 更改 Jupyter Notebook 中文件的存放位置
  • PHP承兑汇票识别API-承兑汇票如何快速识别-私有化部署集成
  • 探索 HTML 和 CSS 实现的模拟时钟
  • 鸿蒙学习生态应用开发能力全景图-赋能套件(1)
  • 机器学习:梯度提升树(GBDT)——基于决策树的树形模型
  • 面试时问到软件开发原则,我emo了