Python& Tableau——数据分析招聘岗位的抓取与初步分析

01

今天应上一篇文章的坑,开始Python数据分析的旅程。Python语言易读、易维护,在深度学习、机器学习和人工智能领域表现出色,推动现今最前沿的科学技术发展。Python相对较容易入门,系列的优点促使Python在数据分析领域占据了较大优势。另外,本文使用的Tableau是一项功能强大的数据可视化软件,能将数据运算与可视化图表完美结合起来,在商业实践中被越来越多的公司使用,成为了企业商业智能化解决方案的重要平台之一。本文就借助Python和Tableau的强大功能,进行一项简单的数据分析实例。


02



首先,用Python抓取前程无忧网站公布的全国数据分析相关的招聘岗位,然后对数据进行简单的清洗。使用Pycharm编辑器,同时安装requests/bs4/pandas等Python库,然后即可实现本文的数据分析功能。

首先import所需库,输入待爬虫网站,然后编写爬虫程序,选择需要爬取的信息,写入函数get_contents()中,代码如下:


以上代码运行后抓取了前程无忧网站上共2000页100000的招聘信息,然后再编写一段代码,将下来的信息存入csv文件中,以便于后续操作。

# - * - coding:utf-8 - * -
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = r'https://search.51job.com/list/000000,000000,0000,00,9,99,' \
      r'%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590,2,{}.html?' \
      r'lang=c&stype=1' \
      r'&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&lonlat=0%2' \
      r'C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='
final = []
def get_contents():
    for i in range(0,2001):
        url_real = url.format(i)
        try:
            res = requests.get(url_real)
            res.encoding = 'gbk'
            soup = BeautifulSoup(res.text,'html.parser')
            total_content = soup.select('.dw_table')[0]
            companys = total_content.select('.el')
#           y = total_content.select('.t1 ')
#           print(y)
            for company in companys:
                total = {}
                position_all = company.select('.t1 ')[0]
                position_a = position_all.select('a')
                if len(position_a)>0:
                    total['name'] = company.select('.t2')[0].text.strip()
                    total['position'] = position_a[0]['title']
                    total['location'] = company.select('.t3')[0].text.strip()
                    total['salary'] = company.select('.t4')[0].text.strip()
                    total['update_date'] = company.select('.t5')[0].text.strip()
                    total['pos_url'] = position_a[0]['href'].strip()
#                    total = '{}\t{}\t{}\t{}\t{}\t{}\n'.format(name,position,location,salary,update_date,pos_url)
                    print("Dealing with page " + str(i) + '  Please waiting------')
                    print('Company\'s name is  ' + total['name'] )
                    final.append(total)
        except:
            print('Failed with page ' + str(i) + '  ------')
    return final
def save_my_file():
#    with open('data_analysis.csv','a+') as file_obj:
    df = pd.DataFrame(final)
    df.to_csv('0512_51job-data_analysis.csv', mode = 'a',encoding = 'gbk')
get_contents()
save_my_file()
print(len(final))

放一张爬取的动图,边爬边打印进度:

函数save_my_file()完成了数据的保存。至此全部数据抓取完毕并成功存入本地文件。接下来对数据进行简单的清洗。主要任务包括去除非数据分析类岗位的招聘信息、区域的清洗,只取到市一级单位、区间类型的工资拆开分为最低和最高工资(统一为'K/月'单位)、去除工资项空白的数据等。

# - * - coding:utf-8 - * -
import pandas as pd
import numpy as np
clean_data = []
def select_dataposition():
    data = pd.read_csv('0512_51job-data_analysis.csv',header = 0,encoding= 'gbk')
    df = pd.DataFrame(data)
    #df = df[True - df.name.duplicatde()]
    df = df[df.position.str.contains(r'.*?数据.*?|.*?分析。*?')]
    #df = df[df.dropna(df.salary ='')]
    df.to_excel('data_51.xlsx')
def get_file_elements():
    file = pd.read_excel('data_51.xlsx')
    file = pd.DataFrame(file)
    rows = len(file)
    print(rows)
    for i in range(0, rows):
        raw_data = {}
        raw_data['公司'] = file['name'][i]
        raw_data['职位'] = file['position'][i]
        if '-' in file['location'][i]:
            plc_1 = str(file['location'][i]).find('-')
            raw_data['城市'] = file['location'][i][:plc_1]
        else:
            raw_data['城市'] = file['location'][i]
#        print(file['salary'][i])
        if file['salary'][i] == "":
            raw_data['最低工资'] = ''
            raw_data['最高工资'] = ''
        elif '-' in file['salary'][i]:
            plc_2 = str(file['salary'][i]).find('-')
    #       print(plc_2)
            low_salary = file['salary'][i][:plc_2]
            high_salary = file['salary'][i][plc_2 + 1 :].rstrip('万/月|千/月|万/年')
    #       print(raw_data['high_salary'])
            if '万/月' in file['salary'][i]:
                raw_data['最低工资'] = float(low_salary) * 10
                raw_data['最高工资'] = float(high_salary) * 10
            elif '千/月' in file['salary'][i]:
                raw_data['最低工资'] = float(low_salary)
                raw_data['最高工资'] = float(high_salary)
            elif '万/年' in file['salary'][i]:
                raw_data['最低工资'] = float(low_salary) * 10 / 12
                raw_data['最高工资'] = float(high_salary) * 10 / 12
        else:
            raw_data['最低工资'] = file['salary'][i]
            raw_data['最高工资'] = file['salary'][i]
        raw_data['网址'] = file['pos_url'][i]
        raw_data['更新日期'] = file['update_date'][i]
        clean_data.append(raw_data)
        print('Processing with line ' + str(i) + '------')
        print('Still have ' + str(rows + 1 - i) + ' rows to complete------')
    return clean_data
def save_clean_data():
    lt = pd.DataFrame(clean_data)
    lt.to_excel('final_result.xlsx')
    print("Successfully Saved My File!")
#select_dataposition()
get_file_elements()
save_clean_data()


完成清洗后数据剩余7088条(最新数据截至5月12日)。


03




获得全部数据后,运用Tableau进行一些简单的分析,包括招聘公司的区域分布、招聘岗位薪资最高的城市和招聘岗位薪资最高的公司等。时间限制,先进行三项简单分析。后续对招聘岗位进行详细分类整合,如数据分析专员、数据分析师、数据专家、大数据分析师等类,对数据分析详细类别的岗位薪资、公司岗位类别进行进一步分析,分析结论将更具有现实意义。

(1)招聘岗位的区域分布:


数据可视化结果表明数据分析招聘岗位主要分布在沿海地区,江浙包邮区、珠三角地区分布密集,工资水平也较高;分布趋势由沿海向内陆逐渐递减,中西部地区岗位主要在省会城市,且这些省会城市的工资水平大致相当。

(2)招聘岗位薪资最高的城市:


排名前13的城市以沿海地区为主,薪资水平均超10K,目前最新招聘数据中上海被其余城市超越,但薪资也已经达到12K,有木有很激动?

(3)招聘岗位薪资最高的公司:


现招聘薪资排名前15的公司如上所示。平均月薪超40K,岗位以大数据工程师、架构师、总监等为主,属于数据分析的高端岗位。

本文的分享至此结束,招聘信息时时在更新,后续将继续就最新数据,做一些更深入的可视化分析、挖掘等,也可以作为今后技能学习、工作选择的指南针。

欢迎大家关注本人微信公众号,公众号将持续更新python,tableau,SQL等数据分析的文章。

ID: DataDreamInitiate

公众号名称数据分析X小硕

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Tableau案例集是一种触手可及的大数据分析工具,它提供了用户友好的界面和强大的数据分析功能,帮助用户更好地理解和利用大数据。 首先,Tableau案例集可以轻松地连接和整合不同来源和格式的数据,包括Excel、CSV、数据库等。它能够自动识别和解析数据,用户只需简单拖拽和点击就能将数据导入工具中。 其次,Tableau案例集拥有直观的可视化功能。用户可以根据需要创建各种图表和图形,如柱状图、折线图、地图等,以及仪表盘和报告。通过简单的交互操作,用户可以迅速发现数据中的模式、趋势和异常,进而做出准确的决策。 此外,Tableau案例集还提供了高级的数据分析功能,如数据透视、分组、过滤和计算字段等。用户可以根据自己的需求灵活地进行数据处理和分析,快速得出结论和洞察。 最重要的是,Tableau案例集具有强大的性能和扩展性。它可以处理大规模数据集,保证用户能够及时获取和分析数据。在需要与他人共享和展示分析结果时,Tableau案例集还提供了丰富的导出和发布选项。 综上所述,Tableau案例集是一款触手可及的大数据分析工具。它的用户友好界面、直观的可视化功能、强大的数据分析功能以及高性能和扩展性,使得用户能够更加轻松地理解和利用大数据,为业务决策提供有力的支持。无论是商业用户、数据分析师还是学生,都能够通过Tableau案例集实现数据驱动的决策和创新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值