通过前面的文章获取了要分析的取样的数据格式如下,接下来是要对每一列的数据进行分析,并对分析的数据进行数据的处理,通过pandas包对数据进行转换处理,通过matplotlib包对数据有一个直观的图形化显示
1 数据概览
总的数量:34829 去重后的数量:970 数量最多的类型:互联网/电子商务 互联网/电子商务 类型的数量:3476
2 公司类型处理
1def autolabel(rects):
2 for rect in rects:
3 height = rect.get_height()
4 plt.text(rect.get_x()+rect.get_width()/2-0.1, height, '%s' % height)
5def company_type_desc(data,file_name="公司类型数量分布"):
6 companyTypeGroup=data['company_type'].groupby(data['company_type'])
7 companyTypeCount=companyTypeGroup.count().sort_values(ascending=False)
8 plt.figure(figsize=(22, 12))
9 rects =plt.bar(x = arange(len(companyTypeCount.index)),height = companyTypeCount.values)
10 plt.xticks(arange(len(companyTypeCount.index)),companyTypeCount.index,rotation=360)
11 autolabel(rects)
12 plt.title("公司类型数量分布")
13 plt.xlabel('公司类型')
14 plt.ylabel('数量')
15 plt.savefig("data/"+file_name+".jpg")
复制代码
第6行是获取company_type列并根据该列进行分组 第7行是通过count对分组进行计数后通过sort_values对数据进行排序,并且设置为降序 第8行是初始化Matplotlib并且设置好图形的比例 第9-10行是为了解决Matplotlib显示的时候,x轴的数据没有按数据的排序显示的问题,如果是直接按37行的代码直接执行,显示的数据是乱序的 第11行是为了在每个柱状图的上方显示数量进行的处理,其中text方法是可以在图形上任意的地方填写文字,通过计算每个柱状的坐标进行填写
3 学历处理
data=data[data["education"].apply(lambda x:True if str(x).find("招")==-1 else False)]
复制代码
清洗后的数据如下
4 招聘人数处理
headcountCount=headcountGroup.count().sort_values(ascending=False)[0:20]
复制代码
通过前20的图表发现有一些非法的数据,由于占比的数量不多,直接进行过滤掉,代码如下
data=data[data["headcount"].apply(lambda x:True if str(x).find("发布")==-1 else False)]
复制代码
过滤后的数据显示
5 发布时间处理
1def deal_publish_data(value):
2 try:
3 datetime.datetime.strptime(value,'%m-%d')
4 except ValueError:
5 return False
6 return True
7def publish_date_plot_desc(data):
8 data['publish_date']=data['publish_date'].apply(lambda x:str(x).replace("发布",""))
9 data=data[data['publish_date'].apply(lambda x: deal_publish_data(x))]
10 publishDateGroup=data['publish_date'].groupby(data['publish_date'])
11 publishDateCount=publishDateGroup.count().sort_index(ascending=False)
12 plt.figure(figsize=(22, 12))
13 plt.plot(arange(len(publishDateCount.index)), publishDateCount.values)
14 plt.xticks(arange(len(publishDateCount.index)),publishDateCount.index,rotation=90)
15 plt.title("发布时间分布")
16 plt.xlabel('发布时间')
17 plt.ylabel('数量')
18 plt.savefig("data/发布时间分布--按时间.jpg")
复制代码
第8行 是对数据进行替换处理,变成是月份-天数的格式 第9行 是调用了日期转换的判断,选取日期转换成功的数据 第10行 是对索引列进行排序,也就是日期进行排序
6 行业处理
data=data['business'].str.split('/', expand=True).stack().reset_index(level=0).set_index('level_0').rename(columns={0:'business'}).join(data.drop('business', axis=1))
data=data['business'].str.split(',', expand=True).stack().reset_index(level=0).set_index('level_0').rename(columns={0:'business'}).join(data.drop('business', axis=1))
复制代码
关注公众号,回复“51job”获取项目代码