
简介这是一份面向数据分析初学者与SQL实践者的厦门地区招聘数据实战项目资源聚焦真实招聘场景下的数据清洗、多维分析与薪资预测全流程。资源包含100,077条2021年1月采集的厦门人才网原始招聘记录覆盖行业、公司类型、岗位要求、薪资福利等19个字段配套完整技术栈实现pandas清洗、Hive ETL含hql脚本、SQL建表与查询table.sql、Python可视化pyechartsseaborn、sklearn回归预测。压缩包共7个文件含3个核心脚本visualize.py/train.py/etl.py、1个SQL建表文件、1个HQL调度脚本、1个Markdown项目说明及1个原始数据压缩包总大小17.19MB结构清晰、模块解耦便于分步学习与复现。目前已有755人学习下载提供从原始数据加载到交互式图表生成、词云展示及薪资建模的端到端参考方案特别适合巩固SQL基础、提升Pandas数据处理能力及理解招聘市场分析逻辑。 2021年做厦门招聘数据分析这个项目最早其实是冲着“整理一份求职参考”去的结果越做越像一次完整的商业数据分析实战从拿到一包不知道包含什么的压缩文件到清洗出可用的结构化数据再到用Excel和Python做可视化和交叉分析最后得出一批对求职者、对HR、对做城市人才研究的人都有参考价值的结论。这篇文章把整个过程完整复盘一遍包含数据清单的构建、清洗时的坑、核心分析维度、可视化做法以及一些只有实际跑过数据才说得清的细节。如果你正准备找工作、想转行数据分析或者手头正在做类似的城市招聘数据项目这篇应该能给你不少可直接套用的思路。1. 解压“2021厦门招聘数据分析.rar”先搞清楚数据集里到底有什么1.1 文件结构和字段盘点拿到rar文件之后第一反应是赶紧解压看内容。解压出来是一个典型的招聘类数据集里面包含几张表最核心的是招聘岗位明细表辅以公司信息表、行业分类表和地区编码表。字段层面主要包含岗位名称、公司名称、公司规模、所在城市、城区、薪资区间、工作经验要求、学历要求、职位描述、发布日期等。这里有个习惯值得养成先做一张数据字典把每个字段的含义、类型、是否唯一、是否可空全部列出来。尤其要注意同一个含义在不同表里叫法不一致的情况比如岗位明细表里是city公司信息表里是work_city如果不做映射后面join的时候就是一场灾难。我当时拿到的是csv格式还夹杂着部分excel文件编码是UTF-8和GBK混着来。这里踩了一个典型的坑直接用Python的pandas.read_csv去读GBK文件跑出来一堆乱码后来统一加上encodinggbk或者encodingutf-8逐一尝试才解决。遇到csv文件建议用python脚本先嗅探一下编码不要盲目用Excel打开因为Excel打开后另存会破坏原始格式反过来影响后面的批量处理。1.2 清洗中最容易踩的坑清洗阶段有几个问题特别典型第一个是薪资字段的格式混乱。很多岗位写的是“6千-8千”、“1万-1.5万”、“面议”有些是“8K-12K”还有少数按年薪写。要分析必然得先做归一化。我的处理方式是写一个函数统一识别“k/千/万”等单位把区间拆成下限和上限面议记为NaN最终生成salary_low、salary_high和salary_mid三个数值字段单位统一成“元/月”。对于年薪字段如果是“xx万/年”就除以12得到月薪。第二个是重复岗位。同一家公司同一个岗位可能在采集周期内出现多次如果不做去重后面统计岗位数量、平均薪资都会被严重放大。去重的关键不是简单drop_duplicates()而是要根据业务场景定义“重复”我当时的定义是“公司名岗位名薪资区间学历要求经验要求”完全一致才算重复因为有些公司会分多个渠道发布发布时间不同但内容一样如果只按全部字段去重根本去不干净。第三个是岗位名称不统一。“数据分析师”、“数据分析专员”、“数据运营”、“BI分析师”、“商业分析”这些其实属于同族岗位但字符串完全不同。解决思路是先做关键词归类把包含“数据分析”“数据运营”“BI”“商业分析”的岗位打上job_category标签再结合岗位职责描述做二次校验。这样做的好处是后面可以按类别算平均薪资和需求占比而不是被几十种细碎岗位名淹没。清洗完成后一定要做一轮数据质量体检统计每个字段的缺失比例、唯一值数量、数值字段的取值范围、类别字段的频次分布。我习惯把体检结果输出成一份quality_report.xlsx既能自己复核也能作为项目交付物的一部分。2. 2021年厦门就业市场的基本盘需求、薪资与行业分布2.1 岗位发布量与需求结构清洗完数据第一件做的事是看总量整个数据集里共记录了2021年全年厦门相关招聘岗位信息几万条覆盖互联网、制造、金融、教育、医疗、零售等多个行业。其中的第一层发现是互联网/软件行业的岗位数量占比排在最前面但并不是绝对主导——制造业和零售业的技术岗、数字化运营岗在2021年的发布量比预想中高出不少这和厦门本地的产业基础电子制造、半导体、生物医药、软件信息服务是对得上的。从招聘需求结构看技术类岗位量最大的是Java后端、前端开发、测试这和全国市场基本一致。但有一个区域特征很明显厦门对“跨境电商运营”“海外社媒投放”“独立站运营”这类岗位的需求量非常大而且发布时间全年保持高位。原因很好理解厦门本来就有较强的外贸基因加上2021年跨境电商正处于爆发期很多公司在厦门设运营中心。如果你做的是求职导向的数据分析这一类行业特征一定要抓出来这是本地数据相对全国大盘最有差异感的地方。另一个值得关注的维度是城区分布。厦门的数据基本集中在湖里区、思明区其次是集美和翔安。思维上不要把行政区划当成一个普通字段处理而是要把“城区行业薪资”做联动。比如思明区的软件园二期周边互联网公司岗位多薪资中位数高于全市平均而翔安、同安更多是大型制造企业岗位数量多但偏低薪区间。这种联动信息对求职者选区域非常有帮助我最后把结论做成了热力图效果很直观。2.2 薪资水平的真实分布薪资分析是整个项目里最容易被误解的部分。直接取平均值容易误导因为区间数据存在明显长尾——少数高薪管理岗会拉高均值。我计算了按salary_mid的中位数和分位数发现2021年厦门招聘岗位的全行业月薪中位数大概在几千元到一万元左右的区间具体数值视岗位族差异较大远低于平均数的感觉。所以做报告时一定注意呈现分布而不是只放一个平均值。分行业看互联网/金融/生物医药的薪资上限高但下限也高说明入门门槛不低制造业的薪资分布更“平坦”中低段集中但一定层级的技术岗和管理岗上限同样可观。这个发现提示求职者不是只有互联网才有高薪关键是岗位在产业链的位置以及对经验/技能的要求等级。再叠加学历因素本科阶段是需求主力但“本科3-5年经验”是薪资跃升最陡峭的组合。硕士学历岗位的需求量比想象中少但给出的薪资下限明显更高专科岗位数量不少大多集中在零售、客服、制造一线和管理培训生。学历和薪资的关系并非线性的“学历越高越赚钱”而是与行业、岗位类型深度耦合。这一层交叉分析是我认为这个项目里最有商业价值的一块。3. 门槛与天花板学历、经验、技能的组合规律3.1 经验年限与薪资的关系经验要求的分布很有规律0-1年经验的岗位、1-3年、3-5年、5-10年各有占比其中1-3年和3-5年占比最高。这说明2021年厦门招聘市场的主力需求不是应届生也不是资深专家而是有一定经验、能直接上手干活的人。把经验要求和薪资中位数做交叉表可以看到一条比较平滑的爬坡曲线对应届生开的薪资下限不高但3-5年经验的薪资中位数几乎是应届生的1.8到2倍。这个倍数在互联网行业更夸张部分高薪岗位如算法工程师、资深Java开发、数据分析师5年经验的薪资中位数能到应届生的2.5倍以上。需要注意的是经验类型比年限长度更重要也就是“相关经验”vs“泛经验”。同样的3年经验做过电商用户增长的数据分析师和只做过报表录入的“数据分析专员”在市场上的薪资估值完全不一样。岗位描述里的副词会透露信号比如“具备电商行业经验者优先”“有SQL和Python能力优先”这些句子其实是薪资溢价的隐式标签。我后来专门做了技能关键词与薪资的回归分析效果特别好。3.2 技能高频词市场对“会什么”的回答技能分析是招聘数据挖掘里最有意思的部分。我使用的方法是对职位描述做中文分词再用停用词表过滤掉“任职要求”、“岗位职责”、“负责”、“相关”这类无意义词统计高频词频。同时提前构建技能词典把SQL、Python、Excel、Tableau、PowerBI、Java、Spring、Hadoop、Spark、机器学习、数据分析、用户增长、广告投放、PS、AI、LR等等纳入匹配。结果比较清晰通用技能类Excel、Office、沟通能力强、抗压能力、团队协作出现频率最高。这部分是“门槛型”技能几乎每行招聘数据里都有不加分但缺了不行。数字化技能类SQL、Python在数据分析、运营、产品、商业分析岗里高频出现Java、Spring Boot在后端开发岗一骑绝尘Vue、React在前端岗霸榜。平台工具类在厦门市场Shopify、Amazon、Facebook Ads、Google Ads出现频率极高直接反映了跨境电商行业特征。数据分析专项Tableau、PowerBI、Metabase、FineReport均有覆盖但要求PowerBI的外企和外企风格公司居多。这里给想强化技能的人一个实操建议用“技能关键词薪资区间”做技能溢价分析。统计包含某关键词的岗位薪资均值与不包含该关键词的同族岗位薪资均值做对比。结果很明显包含Python的数据分析岗位平均薪资比不包含的高出20%-30%包含Spark/Hadoop的大数据岗位薪资上限高出更多。这说明技能不再只是“加分项”而是直接决定招聘岗位等级和薪资区间的分桶变量。4. 从数据到结论可视化与报告的方法4.1 用Excel快速上手的数据透视与图表很多人一看到这份需求就问我不会Python纯用Excel能不能做完全能。Excel的数据透视表功能非常适合这种数据集选中清洗好的明细表插入数据透视表把“行业”拖到行标签“岗位名称”拖到列标签“薪资中位数”拖到值区域选择平均值立刻就能看到“哪个行业里哪类岗位给钱多”。数据可视化部分在职级场景下用“城市”或“部门”等维度做“分析图”就可以完成大多数工作。值得单说的是Excel里做薪资分布的技巧。直接插入柱状图是不够的建议先用FREQUENCY数组公式或透视表把薪资分成区间如0-5K,5K-8K,8K-12K,12K-20K,20K以上再对区间频数做柱状图这样就能一目了然看到偏态分布。这里提醒一个坑Excel对字符型数字很宽容但如果源数据里混有“8千-1.2万”这样的文本必须提前用分列或公式清洗否则透视表的平均值会算出来极其离谱。4.2 Python数据分析与可视化路线如果你熟悉Python效率会大幅提升。推荐直接用pandas做清洗和分组聚合matplotlib和seaborn做静态图表plotly做交互图表。核心代码并不复杂关键是有清晰的思路pandas.read_csv读入数据统一把列名改成snake_case风格用pd.to_numeric配合errorscoerce把薪资字段转成数值用groupby按“行业”或“城区”分组计算salary_mid的均值、中位数、分位数用value_counts()看岗位类别、技能关键词的频次分布用matplotlib画分组箱线图、堆积柱状图、热力图。实际项目里我建议把分析脚本拆成两到三个.py文件clean.py负责清洗analysis.py负责聚合visualize.py负责出图。不要全部堆在一个notebook里因为后期调整参数、重新跑数会非常痛苦。可视化层面的关键技巧是“一图一观点”每一张图都要带着一个具体问题去画。比如“不同经验段对应的薪资分布箱线图”回答的是门槛问题“高频技能词TOP20水平柱状图”回答的是技能需求问题。图多了反而会让报告失焦。4.3 可视化报告要避免的误区这个项目我反复迭代过好几次总结出三个最容易让人翻车的地方第一别让图表欺骗读者。比如Y轴从4000开始而不是0开始会让不同行业薪资差异看起来比实际大得多。做对比类图表时一定要保持坐标轴范围一致。再比如用色彩编码时深浅跨度不要过大否则打印出来根本分不清。第二别忽略样本量。有些岗位在整个数据集中只出现十几条画箱线图时会显示异常宽的范围这时候要和读者说明“样本较少仅供参考”。不要为了让图表结果好看就把异常值强行删掉而是要理解这些异常值背后的业务原因——有些是高管岗有些是季节性急招它们的“异常”本身就是信息。第三报告里要有“建议”而不是只有“数据”。我最后产出的报告每个分析章节末尾都有一个“对求职者/对HR”的结论模块。比如“厦门跨境电商运营岗位需求量大且薪资有竞争力但普遍要求1年以上实操经验应届生进入难度较大”这种结论比单纯堆数据有用得多。5. 数据分析项目的正确打开方式选型、思考链路与延伸方向5.1 为什么这个项目值得做以及选型思路做数据分析项目选数据很容易选对方向很难。这个项目的价值在于它包含了一个完整的数据分析项目闭环数据获取、数据清洗、探索性分析、交叉分析、可视化、结论输出每一步都踩得到实际问题。对初学者来说这是比用网上现成的“波士顿房价”或者“鸢尾花”顺手得多的练手对象因为它自带业务味道能逼你思考“这个数字到底说明了什么”。选型方面也值得聊聊。你可能觉得数据只有几万条用Excel也能折腾有必要上Python吗我的答案是如果你只是做一次性的报告Excel足够但如果你想把分析流程沉淀成可重复执行的方法或者后续扩展到全国多城市数据那Python和pandas几乎是必须的。不要为了炫技上用不上大而全的Hadoop和Spark数据量根本没有到那个量级本地用pandas跑几百万行数据完全没有压力别动不动就把“大数据框架”搬出来。工具链的完整建议是Excel负责快速探索Python负责清洗和建模PowerBI或Tableau负责制作可交互的看板。前期数据质量不高时用Excel反复操作效率低下建议直接用Python脚本做清洗并导出中间层数据这份中间层数据再导入PowerBI建模型拖拽生成图表就很顺畅。5.2 招聘数据如何拓展为城市人才洞察做完厦门这一个城市的基础分析后这个项目的可拓展性其实很高。一个方向是做多城市对比。把2021年全国主要新一线城市和一线城市的招聘数据放在一起比较同样岗位在不同城市的薪资中位数、需求规模、经验门槛。这份报告对求职者选择城市很有参考价值也可以输出“城市人才吸引力指数”是一个很好的商业分析作品。另一个方向是做时间序列分析。如果手头能拿到更长时间跨度的数据比如2020-2024年各月的数据就可以分析岗位需求量的季节性波动、政策对行业的刺激效应等还可以用statsmodels做简单的时间序列分解。不过时间序列分析要求的数据粒度更细对字段质量要求也更高建议先把横截面的分析做扎实再考虑。还有一个方向是自然语言处理应用。职位描述文本本身包含大量有价值信息可以用jieba分词、TF-IDF特征化和基于词向量的关键词聚类把招聘需求中隐藏的主题组比如出现频率高的几种岗位技能组合挖掘出来。这块的技术难度更高但做出来之后会非常出彩适合简历上需要展示“实际项目落地能力”的人。5.3 SQL、Excel和Python在一个分析项目里怎么分工这个问题我经常被问到尤其在数据分析面试里。如果数据来自数据库第一步必然是用SQL取数这步没什么好说的重点是用WHERE、GROUP BY、JOIN把数据按需要的粒度取出取出来后如果量不大、只做简单分组统计Excel透视表足够如果涉及多文件的合并清洗、自定义复杂函数、多字段条件循环则必须交给Python的pandas最后的可视化如果给业务方看建议输出为PDF/HTML格式交互报告方便别人自己筛选。这三者不是替代关系是接力关系。会合理分工才是数据分析师最值得训练的底层能力。6. 复盘我做完这个数据项目后最想保留的三句话第一句话数据准备占用了超过60%的时间它才是这个项目真正的重点。我最初以为写分析代码是最耗时的结果跑下来发现处理编码问题、清洗薪资字段、统一岗位名称花的时间远远多于画图。任何招聘类数据分析项目一定先把数据清洗想清楚再做否则后续所有结果都是建在流沙上。第二句话给数据一个业务坐标系分析才有意义。一个岗位的平均薪资是8K还是12K孤立着看没有意义要考虑城市生活成本、行业平均水平、经验要求、技能溢价、公司规模。2021年厦门的数据里互联网行业的薪资看起来比制造业高但考虑工作时长和岗位密度之后可能制造业里某些细分技术岗才是性价比之选。这些结论只有在把多个维度交叉起来之后才会出来。第三句话动手做比等数据完美更重要。很多人看到原始数据这么乱第一反应是“这个数据不能用来分析”。但现实中数据永远是不完美的恰恰是那些缺失值、异常值、格式乱码让分析过程变得有价值。完整走完一遍这个项目你学到的绝对值回票价。如果你手里也有一份城市招聘数据想分析别犹豫直接开干吧。第一版不需要追求完美先把全流程跑通再回来迭代第二版你会看到自己的进步。本文还有配套的精品资源点击获取