import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
from wordcloud import WordCloud
# 添加表头,保存为新文件(避免污染元数据)
df = pd.read_csv('拉勾复现.csv',names=['岗位','公司','行业','城市','薪水','学历要求','职位性质'])
df.to_csv('数据分析招聘信息.csv',index=False)
# 读取文件
df = pd.read_csv('数据分析招聘信息.csv')
df
# 获取作图数据
city = list(df['城市'].value_counts().index)
cityNumber = list(df['城市'].value_counts())
# 设置中文字体
plt.rcParams['font.family'] = ['Fangsong']
# 设置画布大小
plt.figure(figsize=(30,15))
#设置坐标刻度字体大小
plt.xticks(fontsize=25)
plt.yticks(fontsize=25)
#画柱状图
plt.bar(city,cityNumber)
plt.title('岗位城市分布图',fontsize=40)
plt.xlabel('城市',fontsize=40)
plt.ylabel('岗位数',fontsize=40)
plt.show()
可以看到,招聘数量最多的四个城市为:北京、上海、深圳和广州。
education = list(df['学历要求'].value_counts().index)
educationNumber = list(df['学历要求'].value_counts())
# 设置画布大小
plt.figure(figsize=(10,10))
#画柱状图
plt.pie(educationNumber,labels=education,explode=(0.1,0,0,0),colors=['lightskyblue','yellow','green','orange'],textprops = {
'fontsize':30},autopct='%1.2f%%')
plt.title('学历要求占比图',fontsize=30)
plt.show()
# 制作词频
company = list(df['公司'].value_counts().index)
companyNumber = list(df['公司'].value_counts())
word_frequency = dict(zip(company,companyNumber))
# 词云
wordcloud = WordCloud(font_path='C:/Windows/Fonts/simfang.ttf',mode='RGBA',background_color=None,width=1000,height=800).fit_words(word_frequency)
# 画图
plt.figure(figsize=(15,10))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
# 保存到文件
wordcloud.to_file('招聘企业词云图.png')
由词云图可以看出,招聘岗位数目比较多的企业有:字节跳动、快手、美团、恒泰投资和拉勾网等等,其中互联网需求最旺盛。
# 薪水处理函数
def pre_salary(data):
min = int(data.split('-')[0][:-1])
max = int(data.split('-')[1][:-1])
return (min+max)*500
# 仅统计全职性质岗位的薪资
df = df[df['职位性质'] == '全职']
# 数据处理
df_1 = pd.DataFrame(df['城市'])
df_2 = df['薪水'].apply(pre_salary)
df_aver = df_1.assign(平均薪水 = df_2)
df_aver = df_aver.groupby('城市').agg({
'平均薪水':'mean'})
df_aver = df_aver.sort_values('平均薪水',ascending=False)
# 获取作图数据
city = list(df_aver.index)
salary_aver = list(df_aver['平均薪水'])
# 画图
plt.figure(figsize = (30,15))
plt.bar(city,salary_aver)
plt.title('各城市数据分析岗平均薪资对比图',fontsize = 40)
plt.xlabel('城市',fontsize = 40)
plt.ylabel('薪资',fontsize = 40)
plt.xticks(fontsize = 25)
plt.yticks(fontsize = 25)
plt.show()
令人意外的是,平均薪水前四城市为:北京、厦门、上海和深圳,广州不仅掉出前四,甚至只排到第八。原因一方面可能是,广州薪水确实比较低;另一方面可能是,收集数据的时候,由于拉勾只动态展示30页数据,而这其中广州招聘岗位给的薪水较低。从严谨程度出发,应进行多次数据采集再求均值。不过这篇文章重点在于数据处理、分析和可视化操作,从这个方面来看,目的已达成。