國內(nèi)數(shù)據(jù)分析師求職需求分析

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings 
from scipy.stats import norm,mode
import re
from wordcloud import WordCloud
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
warnings.filterwarnings('ignore')

讀取csv包警,并且添加header

df=pd.read_csv(r'F:\data\boss.csv',header=None,names=['company','position','address','salary','requires','lables','tags'])
df.head(10)
image.png
df.shape
image.png

去重

df.duplicated().sum()
image.png
df.drop_duplicates(keep='first',inplace=True)
df.duplicated().sum()
image.png
df.shape
image.png

因?yàn)閷?shí)習(xí)的薪資和全職計(jì)算不一樣,所以去掉含有‘實(shí)習(xí)’的行勘畔,以方便統(tǒng)計(jì)

x=df['position'].str.contains('實(shí)習(xí)')
df=df[~x]
df.reset_index(drop=True,inplace=True)
df.shape
image.png

查看address字段是否需要清洗

df['address'].unique()
image.png

address可以使用拴孤,查看salary字段

df['salary'].unique()
image.png

將薪資列的值進(jìn)行拆分坷澡,新增bottom豆挽,top兩列育谬,作為一個(gè)崗位薪資的最低值和最高值,單值的帮哈,用button填充top

df['bottom']=df['salary'].str.extract('^(\d+).*')
df['top']=df['salary'].str.extract('^.*?-(\d+).*')
df['top'].fillna(df['bottom'],inplace=True)
df.head(5)
image.png

有些公司標(biāo)注1X薪等膛檀,故新增一列commission_pct計(jì)算每個(gè)崗位的獎(jiǎng)金率

df['commision_pct']=df['salary'].str.extract('^.*?·(\d{2})薪')
df['commision_pct'].fillna(12,inplace=True)
df['commision_pct']=df['commision_pct'].astype('float64')
df['commision_pct']=df['commision_pct']/12

把bottom,top娘侍,commission__pct列轉(zhuǎn)換為數(shù)值咖刃,計(jì)算出每個(gè)崗位的平均薪資avg_salary

df['bottom'] = df['bottom'].astype('int64')
df['top'] = df['top'].astype('int64')
df['avg_salary'] = (df['bottom']+df['top'])/2*df['commision_pct']
df['avg_salary'] = df['avg_salary'].astype('int64')

cols=list(df)
cols.insert(4,cols.pop(cols.index('bottom')))
cols.insert(5,cols.pop(cols.index('top')))
cols.insert(6,cols.pop(cols.index('commision_pct')))
cols.insert(7,cols.pop(cols.index('avg_salary')))
df=df.loc[:,cols]
df.head(10)
image.png
df.describe()
image.png

去掉一些極端值,這里設(shè)置平均值為3k-70k

df=df[(df.avg_salary>3)&(df.avg_salary<70)]
df.describe()
image.png

觀察requests

df.requires.unique()
image.png

將經(jīng)驗(yàn)需求拆分出來放入experience字段憾筏,學(xué)歷要求放入diploma字段

df['experience']=df['requires'].str.extract('^(\d+/?-\d+)')
df['diploma']=df['requires'].str[-2:]
df.head(10)
image.png

查看experience和diploma字段嚎杨,替換null為'經(jīng)驗(yàn)不限'

df['experience'].unique()
image.png
df['experience'].replace('1-3','1-3年',inplace=True)
df['experience'].replace('3-5','3-5年',inplace=True)
df['experience'].replace('5-10','5-10年',inplace=True)
df['experience'].replace(np.nan,'經(jīng)驗(yàn)不限',inplace=True)
df['experience'].unique()
image.png
df['diploma'].unique()
image.png

觀察lables列,對數(shù)量較少且為傳統(tǒng)行業(yè)的數(shù)據(jù)歸入其他行業(yè)

pd.set_option('max_row',100) 
df['lables'].value_counts()
image.png
df.loc[~df['lables'].isin(['互聯(lián)網(wǎng)','計(jì)算機(jī)軟件','移動互聯(lián)網(wǎng)','電子商務(wù)','數(shù)據(jù)服務(wù)','信息安全','計(jì)算機(jī)服務(wù)','咨詢','智能硬件','社交網(wǎng)絡(luò)',
                           '互聯(lián)網(wǎng)金融','游戲','在線教育','生活服務(wù)','O2O','醫(yī)療健康','貿(mào)易/進(jìn)出口','物流/倉儲 ','企業(yè)服務(wù)','銀行','新零售']),'lables']='其他行業(yè)'
df['lables'].value_counts()
image.png

數(shù)據(jù)可視化和簡單的分析

df.avg_salary.groupby(df['address']).agg(['mean','median']).plot.bar(figsize=(16,8))
image.png
fig=plt.figure(figsize=(12,6),dpi=80)
plt.hist(df['avg_salary'],bins=30,color='#f59311',alpha=0.3,edgecolor='k')
plt.ylabel('崗位數(shù)',fontsize=15)
plt.xlabel('薪資',fontsize=15)
plt.xticks(list(range(0,70,5)))
plt.show()
image.png

少部分人高工資氧腰,月薪一萬至兩萬的崗位不在少數(shù)枫浙。然而四千至五千的崗位居然是最多的翠胰。

plt.figure(figsize=(16,16),dpi=80)
plt.subplot(121)
temp = df[df.avg_salary<10].groupby('address').avg_salary.count()
plt.pie(temp,labels=temp.index,autopct='% .2f%%')
plt.title('薪資小于10K各城市占比')
plt.subplot(122)
temp = df[df.avg_salary>10].groupby('address').avg_salary.count()
plt.pie(temp,labels=temp.index,autopct='% .2f%%')
plt.title('薪資大于10K各城市占比')
image.png

從以上餅圖可以看到,各城市間薪資水平差異非常大自脯,低薪崗位主要分布于江蘇及中西部城市,北上杭深相對工資就高一些斤富。

data1=df[df.address=='北京']['avg_salary']
data2=df[df.address=='上海']['avg_salary']
data3=df[df.address=='廣州']['avg_salary']
data4=df[df.address=='深圳']['avg_salary']
data5=df[df.address=='杭州']['avg_salary']
plt.figure(figsize=(12,6),dpi=80)
plt.boxplot([data1,data2,data3,data4,data5],labels=['北京','上海','廣州','深圳','杭州'], 
            flierprops={'marker':'o','markerfacecolor':'r','color':'k'},
            patch_artist=True,boxprops={'color':'k','facecolor':'#FFFACD'})
ax=plt.gca()
ax.patch.set_facecolor('#FFFAFA')
ax.patch.set_alpha(0.8)
plt.title('主要城市薪資水平箱線圖',fontsize=15)
plt.ylabel('薪資(單位:k)',fontsize=12)
plt.show()
image.png

選取薪資水平較高的五個(gè)城市進(jìn)行分析可以發(fā)現(xiàn)膏潮,北京的薪資水平是最高的,杭州上海深圳相對兩級分化大一些满力。

d = df['avg_salary'].groupby(df['diploma'])
d_avg = d.mean()
c = list(d_avg.index)
v = list(range(1,len(c)+1))
w = d_avg.values.astype('int64')
x = d.median().values.astype('int64')
move = 0.4
plt.figure(figsize=(14,8),dpi=80)
plt.bar(v,w,width=move,color='#eed777')
plt.bar([i+move for i in v],x,width=move,color='#334f65')
a = np.arange(0,7)+1.2
plt.xticks(a,c)
plt.yticks(list(range(0,40,5)))
plt.legend(['均值','中位數(shù)'])
plt.title('各學(xué)歷薪資均值及中位數(shù)比較圖',fontsize=16)
plt.xlabel('學(xué)歷',fontsize = 12)
plt.ylabel('薪資(單位K)',fontsize = 12)
for e,f in zip(v,w):
    plt.text(e,f,'{}k'.format(f),ha='center',fontsize=12)
for g,h in zip([i+move for i in v],x):
    plt.text(g,h,'{}k'.format(h),ha='center',fontsize=12)
plt.show()
image.png

從學(xué)歷看是否是本科焕参,對薪資水平的影響很大

本科與碩士之間并沒有特別大的差距,博士的薪資水平遠(yuǎn)遠(yuǎn)高于其他學(xué)歷油额。

data = df['diploma'].value_counts()
y=data.values
plt.figure(figsize=(10,10),dpi=80)
plt.pie(y,labels=data.index,autopct='%.1f %%')
plt.show()
image.png

從市場需求來看叠纷,要求本科占據(jù)絕大多數(shù),要求碩士的較少潦嘶,而博士則是極少數(shù)涩嚣。

d = df['avg_salary'].groupby(df['experience'])
d_avg = d.mean()
c = list(d_avg.index)
v = list(range(1,len(c)+1))
w = d_avg.values.astype('int64')
x = d.median().values.astype('int64')
move = 0.4
plt.figure(figsize=(14,8),dpi=80)
plt.bar(v,w,width=move,color='#002c53')
plt.bar([i+move for i in v],x,width=move,color='#0c84c6')
a = np.arange(0,4)+1.2
plt.xticks(a,c)
plt.yticks(list(range(0,40,5)))
plt.legend(['均值','中位數(shù)'])
plt.title('各工作年限薪資均值及中位數(shù)比較圖',fontsize=16)
plt.xlabel('工作經(jīng)驗(yàn)',fontsize = 12)
plt.ylabel('薪資(單位K)',fontsize = 12)
for e,f in zip(v,w):
    plt.text(e,f,'{}k'.format(f),ha='center',fontsize=12)
for g,h in zip([i+move for i in v],x):
    plt.text(g,h,'{}k'.format(h),ha='center',fontsize=12)
plt.show()
image.png

應(yīng)屆生的工資還是比較低的,一旦有3年工作經(jīng)驗(yàn)掂僵,工資水平將直線上升航厚。

data = df['experience'].value_counts()
y=data.values
plt.figure(figsize=(10,10),dpi=80)
plt.pie(y,labels=data.index,autopct='%.1f %%')
plt.show()
image.png

市場上對于工作經(jīng)驗(yàn)的要求還是很強(qiáng)烈,1-5年的經(jīng)驗(yàn)要求占絕大多數(shù)锰蓬,工作經(jīng)驗(yàn)是入職成功與否的關(guān)鍵因素幔睬。

d = df['avg_salary'].groupby(df['lables'])
d_avg = d.mean()
c = list(d_avg.index)
v = list(range(1,len(c)+1))
w = d_avg.values.astype('int64')
x = d.median().values.astype('int64')
move = 0.4
plt.figure(figsize=(20,8),dpi=80)
plt.bar(v,w,width=move,color='#9de0ff')
plt.bar([i+move for i in v],x,width=move,color='#ffa897')
a = np.arange(0,19)+1.3
plt.xticks(a,c)
plt.yticks(list(range(0,40,5)))
plt.legend(['均值','中位數(shù)'])
plt.title('各行業(yè)薪資均值及中位數(shù)比較圖',fontsize=16)
plt.xlabel('行業(yè)',fontsize = 12)
plt.ylabel('薪資(單位K)',fontsize = 12)
for e,f in zip(v,w):
    plt.text(e,f,'{}k'.format(f),ha='center',fontsize=12)
for g,h in zip([i+move for i in v],x):
    plt.text(g,h,'{}k'.format(h),ha='center',fontsize=12)
plt.show()
image.png
data = df['lables'].value_counts()
y=data.values
plt.figure(figsize=(10,10),dpi=80)
plt.pie(y,labels=data.index,autopct='%.1f %%')
plt.show()
image.png

上2圖顯示 互聯(lián)網(wǎng)行業(yè)和電子商務(wù)對該崗位的需求非常大,同時(shí)薪資水平相比于其他行業(yè)也高了很多芹扭。而其他傳統(tǒng)行業(yè)相對來說麻顶,無論是需求量還是薪資水平,都低一些舱卡。

from wordcloud import WordCloud
text = df['tags'].dropna().to_string()
# 繪制詞云圖
plt.figure(figsize=(10,8))
wordcloud = WordCloud(font_path = "simhei.ttf",
                      background_color = "white",
                      min_font_size = 10,
                      color_func = lambda *args, **kwargs:(0,0,0),
                      width = 900, height = 600).generate(text)
plt.imshow(wordcloud)
plt.axis("off")
image.png

發(fā)現(xiàn)有些意義不大的字段重復(fù)率高辅肾,去掉以后再看。

from wordcloud import WordCloud
text = df['tags'].dropna().to_string()
text=text.replace("數(shù)據(jù)分析師",'')
text=text.replace("數(shù)據(jù)分析工程師",'')
text=text.replace("數(shù)據(jù)分析員",'')
text=text.replace("數(shù)據(jù)分析",'')

# 繪制詞云圖
plt.figure(figsize=(10,8))
wordcloud = WordCloud(font_path = "simhei.ttf",
                      background_color = "white",
                      min_font_size = 10,
                      color_func = lambda *args, **kwargs:(0,0,0),
                      width = 900, height = 600).generate(text)
plt.imshow(wordcloud)
plt.axis("off")
image.png

此圖顯示各個(gè)企業(yè)對數(shù)據(jù)分析師職業(yè)技能需求的關(guān)鍵字轮锥。數(shù)據(jù)挖掘宛瞄,商業(yè)分析,python,數(shù)據(jù)倉庫,建模,SQL是最需要的技能交胚。

通過以上簡要分析份汗,可以發(fā)現(xiàn),如果要成功轉(zhuǎn)行蝴簇,應(yīng)該往北上廣深行這幾個(gè)城市考慮杯活,這些城市的薪資水平高。而行業(yè)方面應(yīng)該著眼于互聯(lián)網(wǎng)及電子商務(wù)等新興行業(yè)熬词,這些行業(yè)對該崗位的需求都比較大旁钧,而且薪資水平也普遍高吸重。工作經(jīng)驗(yàn)對于該崗位而言非常重要,能否成功轉(zhuǎn)行的關(guān)鍵門檻在于是否有工作經(jīng)驗(yàn)歪今,與薪資水平呈正相關(guān)嚎幸。而轉(zhuǎn)行成功以后,只有在邁過3年這個(gè)坎寄猩,才會有比較大的突破嫉晶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市田篇,隨后出現(xiàn)的幾起案子替废,更是在濱河造成了極大的恐慌,老刑警劉巖泊柬,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椎镣,死亡現(xiàn)場離奇詭異,居然都是意外死亡兽赁,警方通過查閱死者的電腦和手機(jī)状答,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刀崖,“玉大人剪况,你說我怎么就攤上這事∑芽纾” “怎么了译断?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長或悲。 經(jīng)常有香客問我孙咪,道長,這世上最難降的妖魔是什么巡语? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任翎蹈,我火速辦了婚禮,結(jié)果婚禮上男公,老公的妹妹穿的比我還像新娘荤堪。我一直安慰自己,他們只是感情好枢赔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布澄阳。 她就那樣靜靜地躺著,像睡著了一般踏拜。 火紅的嫁衣襯著肌膚如雪碎赢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天速梗,我揣著相機(jī)與錄音肮塞,去河邊找鬼襟齿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛枕赵,可吹牛的內(nèi)容都是我干的猜欺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拷窜,長吁一口氣:“原來是場噩夢啊……” “哼开皿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起装黑,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弓熏,沒想到半個(gè)月后恋谭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挽鞠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年疚颊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片信认。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡材义,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嫁赏,到底是詐尸還是另有隱情其掂,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布潦蝇,位于F島的核電站款熬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏攘乒。R本人自食惡果不足惜贤牛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望则酝。 院中可真熱鬧殉簸,春花似錦、人聲如沸沽讹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爽雄。三九已至椭微,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盲链,已是汗流浹背蝇率。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工迟杂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人本慕。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓排拷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锅尘。 傳聞我的和親對象是個(gè)殘疾皇子监氢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容