Python數據分析師分析自己前程,他彷彿看到了悲慘的未來

前言

本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。

分析背景

隨着近年來人工智能和大數據的火熱,越來越多的人想要從事或轉行數據分析師,大家對於此行業如此的熱愛,主要原因就是薪資客觀,有發展前景。

以我淺薄的工作經驗,來談談對數據分析師的看法,此行業一直存在一個爭議,到底是工具重要還是業務水平重要,即工具黨和業務黨,先站隊,我是業務黨(以前是工具黨)。雖然我大部分時間都在做數據處理工作,這個能力也是必須的,無論是簡單的EXCEL,SQL,PPT還是複雜的R,Python,finebi,finereport,HIve都有涉及,但是市面上有太多的分析工具,你不能全部掌握完,而各行業的業務知識是基本相同的。一個業務知識經驗的數據分析師看見一堆數據,會清楚地知道從什麼角度來分析,數據呈現狀況如何,數據是否異常,出現異常原因在那,數據可以解決那些問題,數據適用於那些場景,他會有一個完整的數據分析思路。所以說一個合格的數據分析師是能從一堆數據中找出有價值的信息。

回到正題,數據分析的‘錢’景到底如何呢,本文將從BOOS招聘網站上近期招聘的數據分析師崗位來進行分析,涉及到工作城市,工作經驗,薪資水平,技能要求等內容。

 

 

數據分析

本次獲取的崗位數據量爲17485,只保留數據分析崗位的數據量爲5616,,本次數據工具爲selenium,分析的工具爲pandas,繪圖工具爲pyecharts,數據的最終呈現形式爲

 

 

綜合今年的招聘市場需求考慮,本次對於數據分析師崗位的分析,將從以下幾點進行

  1. 崗位所在城市
  2. 學歷要求
  3. 工作年限要求
  4. 薪資分佈
  5. 數據分析師崗位技能要求
  6. 主要招聘行業
  7. 主要招聘公司
  8. 招聘公司福利展示

1、崗位所在城市

 

 

由於數據分析師崗位的特殊,分析城市主要集中在一線和新一線城市,可以看出招聘需求最高的是北上廣浙,其他新一線城市對於此崗位需求不大,不過隨着經濟的發展,大多數公司對於數據的需求就會變大,相應的崗位需求就會變多

2、學歷要求

 

 

從學歷要求上可以看出,對於數據分析師本科學歷佔比達到77.66%

3、工作年限要求

 

從工作年限要求來看,數據分析師崗位對於從事此工作1-5年的人來說比較受歡迎,整體呈現一種正態分佈的狀態。

4、薪資分佈

 

從薪資上來看,本次對於薪資的處理主要是從薪資空間中取最大,最小兩個值(例如8-15k,取值爲8k和15k),薪資分佈出現略高情況,爲避免新一線城市被一線城市平均化,將對比上海和鄭州兩個城市,額........,下圖已經可以說明問題了

 

 

 

5、數據分析師崗位技能要求

 

 

對於技能要求來說,出現頻率最多的是數據挖掘、數據分析、python、數據倉庫、商業分析、HIVE、大數據等詞。可以看出數據分析師對於數據分析工具和業務水平都比較看重。

6、主要招聘行業

 

 

 

從招聘行業來看,需求最大的是互聯網、電子商務、數據服務、金融等行業,主要原因是這些行業會產生大量的數據。人口紅利已過,下沉市場都被攻略,現在都在講究精細化運營,所以對於互聯網行業來說,每一個用戶都變得非常重要,而數字化用戶可以更優的運營,所以這些行業對於數據分析師的崗位需求非常大,以後會更大

 

7、主要招聘公司

 

招聘需求最多的還是大公司

 

8、招聘公司福利展示

大多數公司的福利都是五險一金和帶薪年假,節日福利等,不過這5616招聘公司中有860個是沒有福利的,還看到做六休一是公司福利,996都變成福報了,看來對於任何行業來說,打工都是有風險的。打工是不可能打工的,只能另謀出路了 (附:職業規劃)

 

 

數據抓取

數據來源爲BOOS直聘招聘網站,對於BOOS網站主要的反爬措施是動態cookie,主要是Cookie加密字段__zp_stoken__逆向解密,我沒搞定。。。,只能使用selenium自動化爬取了,反正數據搞下來了,O(∩_∩)O哈哈~

 

 

代碼展示:

from selenium import webdriver
import time
from urllib import parse
import string
from lxml import etree
import csv


def get_parse(driver):
    htmls=driver.page_source
    html=etree.HTML(htmls)
    items = html.xpath('//div[@class="job-list"]/ul/li')
    D=[]
    try:
        for item in items:
            zhiwei=item.xpath('.//div[@class="job-title"]/span[@class="job-name"]/a/text()')[0]
            diliweizhi = item.xpath('.//span[@class="job-area"]/text()')[0]
            xinzi = item.xpath('.//span[@class="red"]/text()')[0]
            gongzuonianxian = item.xpath('.//div[@class="job-limit clearfix"]/p/text()')[0]
            xueli = item.xpath('.//div[@class="job-limit clearfix"]/p/text()')[1]
            yaoqiu = item.xpath('.//div[@class="tags"]/span/text()')[0]
            yaoqiu1 = item.xpath('.//div[@class="tags"]/span/text()')[1]
            try:
                yaoqiu2 = item.xpath('.//div[@class="tags"]/span/text()')[2]
            except:
                yaoqiu2=' '
            try:
                yaoqiu3 = item.xpath('.//div[@class="tags"]/span/text()')[3]
            except:
                yaoqiu3 = ' '
            try:
                yaoqiu4 = item.xpath('.//div[@class="tags"]/span/text()')[4]
            except:
                yaoqiu4=' '
            gongsi = item.xpath('.//div[@class="company-text"]/h3/a/text()')[0]
            try:
                hangye = item.xpath('.//div[@class="company-text"]/p/a/text()')[0]
            except:
                pass
            try:
                gongsidaxiao1 = item.xpath('.//div[@class="company-text"]/p/text()')[0]
            except:
                gongsidaxiao1=' '
            try:
                gongsidaxiao2 = item.xpath('.//div[@class="company-text"]/p/text()')[1]
            except:
                gongsidaxiao2=' '
            try:
                fuli = item.xpath('.//div[@class="info-desc"]/text()')[0]
            except:
                fuli=' '
            print(zhiwei, diliweizhi, xinzi, gongzuonianxian, xueli, yaoqiu,yaoqiu1,yaoqiu2,yaoqiu3,yaoqiu4, gongsi, hangye, gongsidaxiao1,gongsidaxiao2,fuli)
            data=[zhiwei, diliweizhi, xinzi, gongzuonianxian, xueli, yaoqiu,yaoqiu1,yaoqiu2,yaoqiu3,yaoqiu4, gongsi, hangye, gongsidaxiao1,gongsidaxiao2,fuli]
            D.append(data)
    except:
        pass
    save(D)


def save(data):
    with open('./boss2.csv','a',newline='',encoding='utf-8')as f:
        writer=csv.writer(f)
        writer.writerows(data)


def main():
    header=['職位','區域','薪資','工作年限','學歷要求','技能要求1','技能要求2','技能要求3','技能要求4','技能要求5','公司名稱','行業','公司狀況','公司大小','福利']
    with open('./boss2.csv', 'a', newline='', encoding='utf-8')as f:
        writer = csv.writer(f)
        writer.writerow(header)
    chromedriver_path='C:/Users/10489/Desktop/chromedriver_win32/chromedriver.exe'
    # 使用chrome驅動器
    options = webdriver.ChromeOptions()
    # 設置爲開發者模式,防止被各大網站識別出來使用了Selenium
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    driver = webdriver.Chrome(executable_path=chromedriver_path, options=options)
    a='數據分析師'
    position=parse.quote(a, safe=string.printable)
    # 北京、上海、廣州、深圳、杭州、天津、西安、蘇州、武漢、廈門、長沙、成都、鄭州、重慶
    city=['101010100','101020100','101280100','101280600','101210100','101030100','101110100','101190400','101200100','101230200','101250100','101270100','101180100','101040100']
    for j in city:
        # 應屆生、1年以內、1-3年、3-5年、5-10年、10年以上
        # https://www.zhipin.com/c101020100/e_103/?query={}&ka=sel-exp-102
        # https://www.zhipin.com/c101020100/e_103/?query={}&ka=sel-exp-103
        # https://www.zhipin.com/c101020100/e_103/?query={}&ka=sel-exp-104
        # https://www.zhipin.com/c101020100/e_103/?query={}&ka=sel-exp-105
        # https://www.zhipin.com/c101020100/e_103/?query={}&ka=sel-exp-106
        # https://www.zhipin.com/c101020100/e_103/?query={}&ka=sel-exp-107
        for i in range(2,8):
            driver.get('https://www.zhipin.com/c{}/e_10{}/?query={}&ka=sel-exp-10{}'.format(j,i,position,i))
            # driver.get('https://www.zhipin.com/job_detail/?query={}&city=101020100&industry=&position='.format(position))
            driver.maximize_window()
            time.sleep(10)
            get_parse(driver)
            try:
                while True:
                    time.sleep(5)
                    driver.execute_script("window.scrollTo(0,6000)")
                    time.sleep(10)
                    driver.find_element_by_xpath('//a[@class="next"]').click()
                    get_parse(driver)
            except:
                pass


if __name__ == '__main__':
    main()
歡迎點擊左上角關注小編,除了分享技術文章之外還有很多福利,私信學習資料可以領取包括不限於Python實戰演練、PDF電子文檔、面試集錦、學習資料等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章