前言
-
随着求职市场的数字化转型和数据分析的广泛应用,从招聘网站获取数据并进行分析已经成为个人职业发展和企业招聘的重要工具。
在本系列博客中,我们以 BOSS 直聘的职位数据为例,通过 Python 实现了从数据采集到清洗再到深入分析的完整流程。以下是前两篇博客的内容概述:- 使用Python爬取BOSS直聘职位数据并保存到Excel
在第一篇文章中,我们介绍了如何通过 Python 的爬虫工具,自动化爬取 BOSS 直聘上的职位信息,并将其保存到 Excel 文件中。通过这个过程,我们能够高效地获取大规模的招聘数据,为后续分析打下基础。 - BOSS直聘招聘数据分析的第一步:用Python进行深度清洗
第二篇文章详细讲解了数据清洗的全过程,包括缺失值处理、重复数据删除、字段格式标准化等操作。通过深度清洗,我们将原始爬取数据转化为一份高质量的数据集,使其具备分析和建模的条件。
本篇文章是系列的第三篇,将基于清洗后的数据展开深入分析,围绕薪资分布、职位要求、行业分布等多个维度,揭示职场薪资秘密、技能需求和地域分布特点。
- 使用Python爬取BOSS直聘职位数据并保存到Excel
必需安装的库和功能说明
以下 Python 库将在分析中被广泛使用:
库名 | 功能说明 | 安装命令 |
---|---|---|
pandas | 数据清洗与处理,如缺失值填充、分组统计、读取和保存 Excel 文件。 | pip install pandas |
matplotlib | 绘制柱状图、饼图、散点图等基础可视化图表。 | pip install matplotlib |
seaborn | 基于 Matplotlib 的高级可视化库,支持箱线图、分布图等美观图表。 | pip install seaborn |
wordcloud | 生成词云,直观显示职位描述和技能要求中的高频关键词。 | pip install wordcloud |
folium | 生成交互式地理热图,展示职位分布密集度。 | pip install folium |
pyecharts | 绘制交互式图表,如中国地图的城市薪资分布图。 | pip install pyecharts |
openpyxl | 支持 Pandas 读取和保存 Excel 文件(.xlsx 格式)。 |
pip install openpyxl |
快速安装所有依赖
使用以下命令一次性安装所有必要依赖:
pip install pandas matplotlib seaborn wordcloud folium pyecharts openpyxl
数据分析思路与实现
下面从六个维度逐步展示对 BOSS 直聘数据的分析。
1. 薪资水平分析
功能描述
分析薪资字段,挖掘职位薪资分布及其影响因素,包括:
- 整体分布:均值、中位数、最大值、最小值等指标。
- 城市对比:不同城市的薪资水平差异。
- 薪资区间:各薪资区间的职位数量分布。
实现代码
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
def analyze_salary(df):
"""
分析薪资水平,展示整体统计、城市对比和薪资区间分布。
"""
print("薪资水平统计:")
salary_stats = df['薪资描述'].describe()
print(salary_stats)
# 按城市统计薪资均值
city_salary = df.groupby('城市')['薪资描述'].mean().sort_values(ascending=False)
print("\n不同城市的薪资均值:")
print(city_salary)
# 绘制薪资分布箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(data=df, x='城市', y='薪资描述')
plt.title('不同城市的薪资分布')
plt.xticks(rotation=45)
plt.show()
# 绘制薪资区间分布直方图
plt.figure(figsize=(10, 6))
sns.histplot(df['薪资描述'], bins=[0, 5000, 10000, 15000, 20000, 30000, 40000], kde=True)
plt.title('薪资区间分布图')
plt.xlabel('薪资范围')
plt.ylabel('职位数量')
plt.show()
输出说明
- 统计结果:包括均值、中位数等指标,反映整体薪资水平。
- 箱线图:展示不同城市薪资分布的波动范围。
- 直方图:直观体现职位数量在不同薪资区间的分布情况。
2. 职位要求分析
功能描述
通过对职位的学历、经验要求以及职位描述进行分析,可以了解:
- 不同学历和经验要求的职位占比。
- 技能关键词的高频分布趋势(如词云可视化)。
实现代码
from wordcloud import WordCloud
def analyze_job_requirements(df, font_path):
"""
分析职位要求,包括学历分布、经验分布及技能关键词。
"""
# 学历要求分布
education_counts = df['学历要求'].value_counts()
print("学历要求分布:")
print(education_counts)
plt.figure(figsize=(8, 8))
education_counts.plot(kind='pie', autopct='%1.1f%%', startangle=140)
plt.title('学历要求分布')
plt.ylabel('')
plt.show()
# 年限要求分布
experience_counts = df['年限要求'].value_counts()
plt.figure(figsize=(10, 6))
sns.barplot(x=experience_counts.index, y=experience_counts.values)
plt.title('年限要求分布')
plt.xlabel('年限要求')
plt.ylabel('职位数量')
plt.show()
# 职位描述词云
job_descriptions = " ".join(df['岗位要求'].dropna