当前位置:   article > 正文

小案例:用Pandas分析招聘网Python岗位信息

1. 使用pandas等库,编写python代码处理和分析招聘信息

1. 读取数据

  1. import pandas as pd
  2. import numpy as np
  3. df = pd.read_csv('data/Jobs.csv')
  4. df.head(2)

  1. # 总数
  2. len(df)
356

2. 新增city字段

df['job_area'].unique()
  1. array(['深圳·南山区', '深圳·龙岗区', '深圳', '深圳·福田区', '深圳·光明区', '深圳·龙华区', '深圳·宝安区',
  2. 'job_area', '北京', '北京·朝阳区', '北京·海淀区', '北京·通州区', '北京·东城区', '北京·丰台区',
  3. '北京·大兴区', '北京·昌平区', '北京·西城区', '上海', '上海·杨浦区', '上海·浦东新区', '上海·徐汇区',
  4. '上海·长宁区', '上海·青浦区', '上海·静安区', '上海·普陀区', '上海·黄浦区', '上海·闵行区',
  5. '上海·虹口区', '上海·松江区', '广州·增城区', '广州·黄埔区', '广州·越秀区', '广州·番禺区',
  6. '广州·天河区', '广州', '广州·海珠区', '广州·荔湾区', '广州·白云区'], dtype=object)
  1. def extract_city(job_area):
  2.     if '深圳' in job_area:
  3.         return '深圳'
  4.     elif '广州' in job_area:
  5.         return '广州'
  6.     elif '北京' in job_area:
  7.         return '北京'
  8.     elif '上海' in job_area:
  9.         return '上海'
  10.     else:
  11.         return None
  12.     
  13. extract_city('上海-静安区')
'上海'
df['job_area'].apply(extract_city)
  1. 0 深圳
  2. 1 深圳
  3. 2 深圳
  4. 3 深圳
  5. 4 深圳
  6. ..
  7. 351 广州
  8. 352 广州
  9. 353 广州
  10. 354 广州
  11. 355 广州
  12. Name: job_area, Length: 356, dtype: object
  1. df['city']=df['job_area'].apply(extract_city)
  2. df.head(2)


3. 三个字段公用一个apply函数

  • salary

  • experience

  • population


步骤:

  1. 正则表达式抽取出数字列表

  2. 求均值

  1. import re
  2. text = '300-1000人'
  3. def avg(text):
  4.     nums = re.findall('\d+', text)
  5.     nums = [float(x) for x in nums]
  6.     if nums:
  7.         return np.mean(nums)
  8.     else:
  9.         return 0
  10.     
  11. avg('300-1000人')
650.0

4. 薪资

salary

  1. df['new_salary'] = df['salary'].apply(avg)
  2. df.head(2)


5. 工作年限

experience

df['experience'].apply(avg)
  1. 0 2.0
  2. 1 4.0
  3. 2 0.0
  4. 3 7.5
  5. 4 4.0
  6. ...
  7. 351 4.0
  8. 352 2.0
  9. 353 6.0
  10. 354 4.0
  11. 355 0.0
  12. Name: experience, Length: 356, dtype: float64
  1. df['new_experience'] = df['experience'].apply(avg)
  2. df.head(2)


6. 员工人数

population

df['population'].apply(avg)
  1. 0 10000.0
  2. 1 10000.0
  3. 2 10000.0
  4. 3 10000.0
  5. 4 10000.0
  6. ...
  7. 351 299.5
  8. 352 59.5
  9. 353 59.5
  10. 354 299.5
  11. 355 10.0
  12. Name: population, Length: 356, dtype: float64
  1. df['new_population'] = df['population'].apply(avg)
  2. df.head(2)


7. 教育

  1. 设计一个函数,出现正规学历,返回True(包括”不限“)

  2. 使用逻辑索引,把正规学历的招聘信息都保留

df['edu'].unique()
  1. array(['本科', '博士', '硕士', '大专', '不限', 'edu', '6个月', '3个月', '7个月', '4天/周'],
  2. dtype=object)
  1. def edu_bool(level):
  2.     if level in ['本科''博士''硕士''大专''不限']:
  3.         return True
  4.     else:
  5.         return False
  6.     
  7. edu_bool('博士')
True
  1. df['Edu_bool'] =  df['edu'].apply(edu_bool)
  2. df.head(2)


  1. # 逻辑索引
  2. new_df = df[df['Edu_bool']==True]
  3. new_df.head(2)


8. 城市/薪酬关系

city/salary

会用到df.groupby

new_df.groupby('city').mean()


9. 学历/薪酬关系

edu/salary

会用到df.groupby

new_df.groupby('edu').mean()


10. 城市/学历/薪酬关系

透视表

pd.pivot_table(df, index, columns, values, aggfunc, margins)

  1. pd.pivot_table(new_df, 
  2.                index='city'
  3.                columns='edu'
  4.                values='new_salary'
  5.                aggfunc=np.mean, 
  6.                margins=True)

- END -

往期文章

  1. 小案例: Pandas的apply方法 
  2. 用Python绘制近20年地方财政收入变迁史视频
  3. Python语法快速入门
  4. Python网络爬虫与文本数据分析
  5. 读完本文你就了解什么是文本分析 
  6. 文本分析在经管领域中的应用概述
  7. 综述:文本分析在市场营销研究中的应用
  8. 从记者的Twitter关注看他们稿件的党派倾向?
  9. Pandas时间序列数据操作
  10. 70G上市公司定期报告数据集
  11. 文本数据清洗之正则表达式
  12. shreport库: 批量下载上海证券交易所上市公司年报
  13. Numpy和Pandas性能改善的方法和技巧
  14. 漂亮~pandas可以无缝衔接Bokeh
  15. YelpDaset: 酒店管理类数据集10+G
  16. 半个小时学会Markdown标记语法

后台回复关键词【岗位分析】下载代码和数据

点击左下角可直达B站本文的视频讲解

- END -
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/366311
推荐阅读
相关标签
  

闽ICP备14008679号