python数据分析案例(二):2022年数据分析岗位需求分析

1.数据获取

我是在招聘网站上爬取了我们需要的数据信息,部分数据截图如下:

不会爬虫的可以去我的python专栏里查看,那里有详细的过程。

2.分析内容

        1).数据分析岗位在不同行业的需求情况

        2).数据分析岗位在不同地区的需求情况

        3).数据分析岗位对学历的要求

        4).数据分析岗位对工作经验的要求

        5).数据分析岗位薪资与学历的关系

        6).数据分析岗位薪资与工作经验的关系

3.步骤

3.1数据预处理

1)去除不是数据分析的岗位

print('原数据行数:', len(df))
# 调用pandas的字符串方法只需先调用.str,后续具体的方法与普通字符串方法基本相同
df = df[df['jobName'].str.contains('数据分析')]
print('剔除后的数据行数:', len(df))

2)将details字段分为city、exp、edulevel三列

df['details'] = df['details'].str.strip("[")
df['details'] = df['details'].str.strip("]")
city = df['details'].str.split(',').str[0]
exp = df['details'].str.split(',').str[1]
edulevel = df['details'].str.split(',').str[2]
df['city'] = city.str.split("-").str[0]  # ’广州-番禺区‘ 只要广州
df['city'] = df['city'].str.replace("\'", '')  # 去除单引号
df['exp'] = exp
df['exp'] = df['exp'].str.replace("\'", '')   # 去除单引号
df['edulevel'] = edulevel
df['edulevel'] = df['edulevel'].str.replace("\'", '')   # 去除单引号
print(df)

3)薪资取平均值

本文爬取的薪资数据格式如下所示,它主要包括三种形式:x千-x万、x-x千、x-x万。

我统一将其改成 x,x万 的格式。

# 去除没有工资的行,否则后面会报错
df = df.dropna()
df['salary'] = df['salary'].str.split('-')
def modifysalary(x):
    if(('千' in x[0]) & ('万' in x[1])):  # 8k-1万
        x[0] = float(x[0][0]) / 10
    elif('千' in x[1]): # 5-6千
        x[0] = float(x[0][0]) / 10
        s = list(x[1])  # 在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符。将字符串转换成列表后修改值,然后用join组成新字符串
        s[0] = str(float(s[0]) / 10)
        s[1] = '万'
        x[1] = ''.join(s)
    else:
        return x
    return x
# 得到薪资区间
df['salary'] = df['salary'].map(modifysalary)

 

 为了方便可视化,我们把平均工资算出来

def salary_avg(x):
    result = (float(x[0]) + float(x[1][0])) / 2 * 10
    return str(result) + 'k'
# 得到平均薪资
df['salary_avg'] = df['salary'].map(salary_avg)
# print(df[['salary', 'salary_avg']])

4)删除不需要的字段,并重命名字段

columns = ['jobName', 'company', 'city', 'company_type', 'edulevel', 'exp', 'salary_avg']
df = df[columns]

5)数据清洗后的数据

6)保存清洗后的数据以便以后使用

df.to_csv('./finaljobRequirement.csv', index=None)

3.2数据分析及可视化

        1)数据分析岗位在不同行业的需求情况

        可视化:我们选取了排名前30的行业进行可视化

代码:

all_type = {}
for i in df['job_type'].str.split('/'):
    for j in i:
        if not j in all_type.keys():
            all_type[j] = 1
        else:
            all_type[j] += 1
df1 = pd.Series(all_type).sort_values(ascending=False).iloc[:30]
df1.plot(kind='barh')
# 显示标签数据
for a, b in enumerate(df1):
    plt.text(b+1, a-0.5, b, ha='center', va='bottom')
plt.show()

        2) 数据分析岗位在不同地区的需求情况

        可视化:我们选取了排名前10的地区

 代码:

df2 = ff.groupby('city')['jobName'].count().sort_values(ascending=False).iloc[:10]
# print(df2)
df2.plot(kind='bar')
plt.xticks(rotation=360)
plt.grid(alpha=0.7, axis='y', ls='-.')
plt.ylabel('count')
for a, b in enumerate(df2):
    plt.text(a, b, b, ha='center', va='bottom')
plt.show()

        3).数据分析岗位对学历的要求

        可视化:

代码:

df3 = ff.groupby('edulevel')['jobName'].count().sort_values(ascending=False)
df3.plot(kind='bar')
for a, b in enumerate(df3):
    plt.text(a, b, b, ha='center', va='bottom')
plt.xticks(rotation=360)
plt.show()

        4).数据分析岗位对工作经验的要求

        可视化:

代码:

df4 = ff.groupby('exp')['jobName'].count().reset_index()
plt.pie(df4['jobName'], labels=df4['exp'], autopct='%3.2f%%', startangle=90, pctdistance=0.6)
plt.axis('equal')
plt.show()

        5).数据分析岗位薪资与学历的关系

        可视化:

代码:

def salary_mean(arr):
    return arr.sum() / arr.count()

ff['salary_avg'] = ff['salary_avg'].str[:-1].astype(float)
df5 = ff.groupby('edulevel')['salary_avg'].agg(salary_mean).sort_values(ascending=False)
df5.plot(kind='bar')
for a, b in enumerate(df5):
    plt.text(a, b, b, ha='center', va='bottom')
plt.xticks(rotation=360)
plt.show()

        6).数据分析岗位薪资与工作经验的关系

        可视化:

        代码:

df6 = ff.groupby('exp')['salary_avg'].agg(salary_mean).sort_values(ascending=False)
df6.plot(kind='bar')
for a, b in enumerate(df6):
    plt.text(a, b, b, ha='center', va='bottom')
plt.xticks(rotation=360)
plt.show()

具体分析根据图可以得到。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值