基于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 Pagetheme_config = ThemeType.PURPLE_PASSION # 更改为您需要的主题类型# 设置表格颜色
table_color = '#5B5C6E' # 紫色主题的颜色
3.2 创建柱状图:行业数量
我们将创建一个柱状图,展示前 10 个行业的招聘数量。
from pyecharts.charts import Barbar_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 Piepie_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 Radarradar = 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 WordCloudwordcloud = 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 库,从招聘数据中提取关键信息,并通过多种可视化图表呈现分析结果。你可以根据自己的需求调整数据来源和图表类型,进一步扩展和优化你的数据分析大屏。

数据集和代码可添加
相关文章:
基于Python 和 pyecharts 制作招聘数据可视化分析大屏
在本教程中,我们将展示如何使用 Python 和 pyecharts 库,通过对招聘数据的分析,制作一个交互式的招聘数据分析大屏。此大屏将通过不同类型的图表(如柱状图、饼图、词云图等)展示招聘行业、职位要求、薪资分布等信息。 …...
探索光耦:晶体管光耦——智能家居的隐形桥梁,让未来生活更智能
在这个日新月异的科技时代,智能家居正以前所未有的速度融入我们的日常生活,从智能灯光到温控系统,从安防监控到语音助手,每一处细节都透露着科技的温度与智慧。而在这场智能化浪潮中,一个看似不起眼却至关重要的组件—…...
三、模板与配置(上)
三、模板与配置 1、WXML模板语法-数据、属性绑定 讲解: 1-1、数据绑定的基本原则 在data中定义数据 Page({data: {//这里是你需要定义的数据} })在WXML中使用数据 {{ 你定义的数据 }}1-2、在data中定义页面的数据 在页面对应的.js文件中,把数据定…...
基于SpringBoot和Vue的公司文档管理系统设计与开发(源码+定制+开发)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
Java21 Switch最全使用说明
Java21 Switch最全使用说明 Java 21 对 switch 语句进行了重大的改进和增强,使其变得更加灵活和强大。本文将详细介绍 Java 21 中 switch 语句的各种用法,包括基本语法、新特性、高级用法和最佳实践。 1. 基本语法 1.1 传统的 switch 语句 传统的 sw…...
普通电脑上安装属于自己的Llama 3 大模型和对话客户端
#大模型下载地址:# Llama3 因为Hugging Face官网正常无法访问,因此推荐国内镜像进行下载: 官网地址:https://huggingface.co 国内镜像:https://hf-mirror.com GGUF 模型文件名称接受,如上述列表中&…...
微信小程序原生 canvas画布截取视频帧保存为图片并进行裁剪
html页面: 视频尺寸过大会画布会撑开屏幕,要下滑 尺寸和视频链接是从上个页面点击传过来的,可自行定义 <canvas id"cvs1" type"2d" style"width: {{videoWidth}}px;height: {{videoHeight}}px;"><…...
社交网络图中结点的“重要性”计算
题目描述 输入 输出 输入样例1 9 14 1 2 1 3 1 4 2 3 3 4 4 5 4 6 5 6 5 7 5 8 6 7 6 8 7 8 7 9 3 3 4 9 输出样例1 Cc(3)0.47 Cc(4)0.62 Cc(9)0.35 AC代码 #include <iostream> #include <vector> #include <queue> #include <iomanip>using na…...
前端(1)——快速入门HTML
参考: W3school 1. HTML 我使用的是vs code,在使用之前,先安装以下几个插件: Auto Rename TageHTML CSS SupportLive Server 1.1 HTML标签 HTML全称是 Hypertext Markup Language(超文本标记语言) HTML通过一系列的标签(也称为…...
gitlab角色、权限
GitLab是一个基于Web的Git仓库管理工具,它提供了一套完整的角色和权限管理机制,以控制用户对项目和仓库的访问和操作权限。以下是GitLab中不同角色的基本权限概述: 访客(Guest): 可以查看项目中的公开信息。…...
Python办公——批量eml文件提取附件
目录 专栏导读背景1、库的介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动…...
Spring Boot 中 Druid 连接池与多数据源切换的方法
Spring Boot 中 Druid 连接池与多数据源切换的方法 在Spring Boot项目中,使用Druid连接池和进行多数据源切换是常见的需求,尤其是在需要读写分离、数据库分片等复杂场景下。本文将详细介绍如何在Spring Boot中配置Druid连接池并实现多数据源切换。 一、…...
JavaScrip中私有方法的创建
在 JavaScript 中,私有方法是指只能在类的内部使用,外部无法访问的函数。为了实现这一点,JavaScript 提供了几种方法,主要通过以下几种方式来创建私有方法: 1. 使用 #(私有字段和方法) 从 ECM…...
.Net Core根据文件名称自动注入服务
.Net Core根据文件名称自动注入服务 说明分析逻辑所有代码一键注入 说明 这个适用于.Net Core 的Web项目,且需要在服务中注入接口的需求.因为之前些Java Web习惯了,所以会有Dao层,Serivce层和Controller层.但是如果一个项目里面对于不同的数据库会有多个Dao,如果一个一个引入会…...
APT 参与者将恶意软件嵌入 macOS Flutter 应用程序中
发现了一些恶意软件样本,这些样本据信与朝鲜民主主义人民共和国 (DPRK)(又称北朝鲜)有关,这些样本使用 Flutter 构建,Flutter 的设计可以对恶意代码进行混淆。JTL 深入研究了恶意代码的工作原理,以帮助保护…...
第 3 章 -GO语言 基本语法
1. 注释 在编程中,注释是帮助理解代码的重要工具。Go语言支持两种类型的注释: 单行注释:以 // 开头,直到行尾都是注释。多行注释:以 /* 开始,以 */ 结束,可以跨越多行。 示例 package maini…...
【qt】控件
1.frameGeometry和Geometry区别 frameGeometry是开始从红圈开始算,Geometry从黑圈算 程序证明:使用一个按键,当按键按下,qdebug打印各自左上角的坐标(相当于屏幕左上角),以及窗口大小 Widget::Widget(QWid…...
入侵检测算法平台部署LiteAIServer视频智能分析平台行人入侵检测算法:科技守护安全的新篇章
在现代化城市快速发展的背景下,安全防范已成为城市管理与社会生活中不可或缺的一环。随着人工智能、大数据、物联网等技术的飞速发展,智能化安防系统正逐步改变着传统的安全防护模式,特别是在行人入侵检测领域,视频智能分析平台Li…...
【AiPPT-注册/登录安全分析报告-无验证方式导致安全隐患】
前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…...
【设计模式】行为型模式(二):策略模式、命令模式
行为型模式(二):策略模式、命令模式 3.策略模式(Strategy)3.1 示例3.1.1 定义策略接口3.1.2 实现具体策略3.1.3 定义上下文类3.1.4 客户端代码3.1.5 输出结果 3.2 总结3.2.1 优点3.2.2 缺点 4.命令模式(Com…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
