欢迎关注,敬请点赞!
借问钱程何处有——2019python职位分析
加载并探索数据
import pandas as pd
import sqlite3
conn = sqlite3.connect('recruit.db')
job_df = pd.read_sql('select * from recruit',conn)
基本信息:
(1)welfare和address有缺失
(2)数据类型为object
job_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 95647 entries, 0 to 95646
Data columns (total 12 columns):
id 95647 non-null int64
info_source 95647 non-null object
job_name 95647 non-null object
min_salary 95647 non-null object
max_salary 95647 non-null object
city 95647 non-null object
compnay_name 95647 non-null object
welfare 92713 non-null object
work_years 95647 non-null object
education 95647 non-null object
address 94534 non-null object
job_detail 95647 non-null object
dtypes: int64(1), object(11)
memory usage: 4.7+ MB
job_df.head(5)
id | info_source | job_name | min_salary | max_salary | city | compnay_name | welfare | work_years | education | address | job_detail | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1665 | 1 | Python开发工程师 | 15000.0 | 20000.0 | 北京-海淀区 | 融捷教育科技有限公司 | 无工作经验 | 招1人 | 北京市海淀区清华科技园科技大厦B座 | 1.精通Python,有python web开发经验,熟练使用Flask开发框架,掌握主流关... | |
1 | 1666 | 1 | 高级测试工程师 | 4500.0 | 6000.0 | 中山 | 房源控股 | 带薪年假,专业培训,绩效奖金,全勤奖,年底分红,五险一金,节日福利,交通补贴,通讯补贴,弹性工作 | 3-4年经验 | 大专 | 火炬开发区创意港B1702楼 | 招聘城市:深圳,广州,中山\n【岗位职责】:\n1、负责移动端及网站产品的功能测试;\n2、... |
2 | 1667 | 1 | 技术支持工程师(运维) | 3500.0 | 4500.0 | 河源 | 北京海鑫科金高科技股份有限公司 | 五险一金,补充医疗保险,交通补贴,餐饮补贴,通讯补贴,绩效奖金,定期体检,年终奖金 | 1年经验 | 大专 | 河源市区 | 岗位职责:\n1. 负责系统安装、调试与维护;\n2. 负责系统日常监控、数据备份与恢复;\... |
3 | 1668 | 1 | 网络安全工程师(应届毕业生) | 7000.0 | 9000.0 | 东莞-虎门镇 | 东莞沛顿科技有限公司 | 五险一金,专业培训,年终奖金 | 无工作经验 | 本科 | 赤岗社区骏马路2号中国电子产业园深科技园区 | 1. 网络及信息安全体系的策略制定;\n2. 网络及信息安全文档编写及体系推进;\n3. 网... |
4 | 1669 | 1 | 软件测试 | 4000.0 | 6000.0 | 汕头 | 阿米巴网络科技有限公司 | 五险,餐饮补贴,年终奖金,全勤奖,定期体检,弹性工作,专业培训,绩效奖金 | 3-4年经验 | 大专 | 汕头市龙湖区奋发园主楼501 | 岗位职责:\n1、根据软件设计需求制定测试计划,分析需求,设计测试数据和测试用例;\n2、有... |
job_df.tail(3)
id | info_source | job_name | min_salary | max_salary | city | compnay_name | welfare | work_years | education | address | job_detail | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
95644 | 104924 | 3 | 测试经理 | 10000 | 15000 | 武汉 | 中诚信征信有限公司 | 五险一金,年底双薪,定期体检,节日礼物 | 3年以上 | 本科及以上 | 礼士胡同54号 | 岗位职责:,1. 负责测试团队建设,测试技能、自动化工具的不断完善,提高团队专业能力... |
95645 | 104925 | 3 | 供需管理 | 8333 | 10000 | 武汉 | 每日优鲜 | 2018互联网300强,国家高新技术企业认定,独角兽,2018中国创新成长百强,2018德勤... | 2年以上 | 统招本科 | 花样年喜年中心 | 职责描述:,1. 基于历史数据,通过对时间、天气和促销等内外因素分析,建立数据模型,对单仓单... |
95646 | 104926 | 3 | XMC -- 数据分析工程师(J10622) | 8333 | 15000 | 武汉 | 武汉新芯集成电路制造有限公司 | 带薪年假,午餐补助,定期体检,免费班车,技能培训,五险一金,生育补贴,子女福利,发展空间大,... | 3年以上 | 本科及以上 | 武汉市东湖新技术开发区高新四路18号 | 工作职责:,1.\t负责生产数据分析相关系统开发及维护。,2.\t通过业务数据分析,发掘用户... |
不同学历职位分布
job_df.loc[:, ['education']].groupby('education').size()
education
12-30发布 1
中专 229
中技 17
其他 2
初中及以下 6
博士 482
博士后 33
大专 13648
大专及以上 3594
学历不限 3605
招10人 123
招11人 1
招12人 6
招15人 14
招1人 2103
招20人 16
招25人 1
招2人 1061
招30人 3
招3人 414
招41人 1
招4人 101
招50人 9
招5人 240
招6人 40
招77人 1
招7人 5
招8人 18
招9人 1
招若干人 1748
本科 35782
本科及以上 16756
硕士 3649
硕士及以上 2784
统招本科 9127
高中 26
dtype: int64
按学历规约
博士:博士、博士及以上;
硕士: 硕士、硕士及以上;
本科:本科、本科及以上、统招本科;
大专:大专、大专及以上;
中专:中专、中技、高中;
其他:发布、招
job_df.loc[job_df['education'] == '博士后', 'education'] = '博士'
job_df.loc[job_df['education'] == '硕士及以上', 'education'] = '硕士'
job_df.loc[job_df['education'] == '本科及以上', 'education'] = '本科'
job_df.loc[job_df['education'] == '统招本科', 'education'] = '本科'
job_df.loc[job_df['education'] == '大专及以上', 'education'] = '大专'
job_df.loc[job_df['education'] == '中技', 'education'] = '中专'
job_df.loc[job_df['education'] == '高中', 'education'] = '中专'
job_df.loc[job_df['education'].str.contains('招') | job_df['education'].str.contains('发布') | job_df['education'].str.contains('初中'), 'education'] = '其他'
按学历规约后
education_size = job_df.loc[:, ['education']].groupby('education').size()
education_size
education
中专 272
其他 5915
博士 515
大专 17242
学历不限 3605
本科 61665
硕士 6433
dtype: int64
dct = dict(education_size)
lst = [[dt, int(dct[dt])] for dt in dct]
lst
[['中专', 272],
['其他', 5915],
['博士', 515],
['大专', 17242],
['学历不限', 3605],
['本科', 61665],
['硕士', 6433]]
饼图
from pyecharts.charts import Pie
from pyecharts import options as opts
def pie_rich_label(lt) -> Pie:
c = (
Pie()
.add(
"",
lt,
radius=["40%", "55%"],
label_opts=opts.LabelOpts(
position="outside",
formatter="{a|{a}}{abg|}\n{hr|}\n {b|{b}: }{c} {per|{d}%} ",
background_color="#eee",
border_color="#aaa",
border_width=1,
border_radius=4,
rich={
"a": {"color": "#999", "lineHeight": 22, "align": "center"},
"abg": {
"backgroundColor": "#e3e3e3",
"width": "100%",
"align": "right",
"height": 22,
"borderRadius": [4, 4, 0, 0],
},
"hr": {
"borderColor": "#aaa",
"width": "100%",
"borderWidth": 0.5,
"height": 0,
},
"b": {"fontSize": 16, "lineHeight": 33},
"per": {
"color": "#eee",
"backgroundColor": "#334455",
"padding": [2, 4],
"borderRadius": 2,
},
},
),
)
.set_global_opts(title_opts=opts.TitleOpts(title="不同学历岗位数量"))
)
return c
pie_rich_label(lst).render_notebook()
小节
本科是python语言就业的主力军,正如各行各业大量的工程师成就了中国制造大国和基建狂魔的地位,中国也逐步成为互联网大国,进而成为物联网和人工智能的强国。
不同学历薪资待遇
里面的“面议”用中位数median代替
job_df['min_salary'].unique()
array(['15000.0', '4500.0', '3500.0', '7000.0', '4000.0', '14000.0',
'3000.0', '10000.0', '6000.0', '9000.0', '20000.0', '8000.0',
'100000.0', '2000.0', '5000.0', '200000.0', '50000.0', '150000.0',
'13000.0', '12000.0', '1500.0', '16000.0', '1000.0', '120000.0',
'600000.0', '25000.0', '30000.0', '1000000.0', '18000.0',
'180000.0', '500000.0', '400000.0', '40000.0', '80000.0',
'11000.0', '2500.0', '300000.0', '4200.0', '250000.0', '186000.0',
'5500.0', '17000.0', '70000.0', '60000.0', '160000.0', '35000.0',
'240000.0', '350000.0', '800000.0', '2800.0', '28000.0', '1600.0',
'90000.0', '130000.0', '5200.0', '96000.0', '1800.0', '3300.0',
'220000.0', '140000.0', '199000.0', '110000.0', '2400.0',
'104000.0', '156000.0', '78000.0', '3200.0', '37000.0', '21000.0',
'22000.0', '5800.0', '1500000.0', '230000.0', '6100.0', '3800.0',
'26000.0', '45000.0', '450000.0', '390000.0', '270000.0',
'29000.0', '190000.0', '72000.0', '3400.0', '27000.0', '6500.0',
'7500.0', '4800.0', '65000.0', '2100.0', '170000.0', '2300.0',
'7900.0', '1200.0', '19000.0', '2600.0', '23000.0', '2200.0',
'24000.0', '196000.0', '3000000.0', '280000.0', '210000.0',
'370000.0', '6700.0', '36000.0', '330000.0', '3900.0', '4900.0',
'3600.0', '4100.0', '6400.0', '5300.0', '10000', '面议', '10001',
'20000', '5000', '8000', '6001', '2001', '7000', '12000', '1000',
'6000', '15001', '4001', '13000', '4000', '8001', '3000', '30000',
'15000', '3500', '30001', '20001', '25000', '17000', '9000',
'11000', '5500', '5999', '22000', '7500', '18000', '50001', '2000',
'4800', '4500', '2800', '16000', '8200', '14000', '5900', '28000',
'100001', '4600', '13500', '6500', '12500', '3800', '24000',
'12800', '70001', '19000', '2600', '27000', '50000', '1500',
'23000', '2500', '8333', '3501', '5950', '35000', '40000', '4200',
'1800', '4300', '3300', '4999', '11666', '8500', '100000', '16600',
'6600', '29000', '26000', '4700', '1200', '6100', '16666', '32500',
'8400', '4166', '18333', '17500', '6666', '19166', '10833', '5833',
'13333', '22500', '9166', '21666', '14166', '70000', '38333',
'23333', '3333', '44166', '66666', '20833', '28333', '15833',
'25833', '65000', '26666', '80000', '31666', '1666', '29166',
'45000', '27500', '37500', '33333', '833', '58333', '137500',
'55000', '43333', '83333', '41666', '40833', '46666', '24166',
'87500', '840000', '54166', '125000', '34166', '1250', '2083',
'52500', '56666', '60000', '75000', '35833', '53333'], dtype=object)
最低薪资
min_salary_other = job_df[job_df['min_salary'] != '面议']['min_salary'].apply(lambda x:float(x)) # 对不是“面议”的转浮点数
job_df.loc[job_df['min_salary'] == '面议', 'min_salary'] = min_salary_other.median() # 将中位数赋值给“面议”
job_df['min_salary'] = job_df['min_salary'].apply(lambda x:float(x)) # 转浮点数
最高薪资
max_salary_other = job_df[job_df['max_salary'] != '面议']['max_salary'].apply(lambda x:float(x)) # 对不是“面议”的转浮点数
job_df.loc[job_df['max_salary'] == '面议', 'max_salary'] = max_salary_other.median() # 将中位数赋值给“面议”
job_df['max_salary'] = job_df['max_salary'].apply(lambda x:float(x)) # 转浮点数
按不同学历分组,并求平均薪资
education_salary = job_df.loc[:, ['education', 'min_salary', 'max_salary']].groupby('education').mean()
education_salary
min_salary | max_salary | |
---|---|---|
education | ||
中专 | 6559.702206 | 9985.294118 |
其他 | 20836.348267 | 33832.527473 |
博士 | 48622.669903 | 83772.464078 |
大专 | 10063.286104 | 16614.739531 |
学历不限 | 10691.994730 | 17626.093759 |
本科 | 16470.918090 | 27518.902278 |
硕士 | 25675.378983 | 44168.505674 |
薪资转整数
min_list = [int(i) for i in list(education_salary.min_salary)]
min_list
[6559, 20836, 48622, 10063, 10691, 16470, 25675]
柱状图
max_list = [int(i) for i in list(education_salary.max_salary)]
max_list
[9985, 33832, 83772, 16614, 17626, 27518, 44168]
from pyecharts.charts import Bar
def bar_base() -> Bar:
c = (
Bar()
.add_xaxis(list(education_salary.index))
.add_yaxis("min_salary", min_list)
.add_yaxis("max_salary", max_list)
.set_global_opts(title_opts=opts.TitleOpts(title="不同学历薪水分布", subtitle="工资(元)"))
)
return c
bar_base().render_notebook()
小节:
(1)高一级学历的最低工资相当于低一级学历的最高工资。对于大多数人来说,学历是改变人生的硬核之一。
(2)同一学历的最高工资约为最低工资的1.6倍,能力和努力也很重要。
岗位详情词云
停止词表
import jieba
stop_word = [word.strip() for word in open('stop_word.txt',encoding='utf-8').readlines()]
stop_word.extend(['.', ' ', '\n', '\xa0', ',', '有'])
热词字典
result_word = {}
for word_str in job_df['job_detail'][0:5]: # 仅用前5条数据,节约时间
for word in jieba.cut(word_str):
if word not in stop_word:
if word not in result_word:
result_word[word] = 1
else:
result_word[word] += 1
list_word = sorted(result_word.items(), key=lambda dt:dt[1], reverse=True)[0:200]
词云图
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
def wordcloud_diamond(words) -> WordCloud:
c = (
WordCloud()
.add("", words, word_size_range=[20, 100], shape=SymbolType.DIAMOND)
.set_global_opts(title_opts=opts.TitleOpts(title="岗位详情词云"))
)
return c
wordcloud_diamond(list_word).render_notebook()
岗位要求小节:
(1)熟悉相关算法,具备数据分析能力;
(2)具有项目开发经验;
(3)团队意识和学习能力。
不同就业方向分布
返回顶部
(web,爬虫,数据分析,自动化测试,自动化运维,嵌入式,机器学习,讲师)
就业方向规约(依据岗位详情)
# 增加一列就业方向,初始化为“其他”
job_df['job_direction'] = '其他就业方向'
job_df.loc[job_df['job_detail'].str.contains('web') | job_df['job_detail'].str.contains('flask') | job_df['job_detail'].str.contains('django') | job_df['job_detail'].str.contains('JQuery') | job_df['job_detail'].str.contains('JavaScript') | job_df['job_detail'].str.contains('Bootstrap') | job_df['job_detail'].str.contains('js'), 'job_direction'] = 'web'
job_df.loc[job_df['job_detail'].str.contains('爬虫') | job_df['job_detail'].str.contains('反爬') | job_df['job_detail'].str.contains('抓取') | job_df['job_detail'].str.contains('爬取') | job_df['job_detail'].str.contains('scrapy'), 'job_direction'] = '爬虫'
job_df.loc[job_df['job_detail'].str.contains('运维') | job_df['job_detail'].str.contains('维护'), 'job_direction'] = '自动化运维'
job_df.loc[job_df['job_detail'].str.contains('测试') | job_df['job_name'].str.contains('测试') | job_df['job_detail'].str.contains('验证'), 'job_direction'] = '自动化测试'
job_df.loc[job_df['job_detail'].str.contains('嵌入式') | job_df['job_detail'].str.contains('机电') | job_df['job_detail'].str.contains('电子'), 'job_direction'] = '嵌入式'
job_df.loc[job_df['job_detail'].str.contains('数据分析') | job_df['job_detail'].str.contains('数据挖掘') | job_df['job_detail'].str.contains('数据清洗') | job_df['job_detail'].str.contains('数学'), 'job_direction'] = '数据分析'
job_df.loc[job_df['job_detail'].str.contains('机器学习') | job_df['job_detail'].str.contains('人工智能') | job_df['job_name'].str.contains('人工智能') | job_df['job_detail'].str.contains('深度学习') | job_df['job_detail'].str.contains('神经网络'), 'job_direction'] = '机器学习'
job_df.loc[job_df['job_detail'].str.contains('讲师') | job_df['job_detail'].str.contains('授课'), 'job_direction'] = '讲师'
job_df.loc[job_df['job_direction'] == '其他就业方向', ['job_name', 'job_detail']].groupby('job_name').size()
job_name
Analysis and Data Reporting 1
Cyberport Network Engineer 7
DBA 1
IAAS 研发工程师 6
IT Specialist 1
..
(急聘)Python开发工程师 1
(接受转行)python工程师助理/python开发学徒/python程序员 2
(烟台)C++/JAVA/C中高级软件开发(职位编号:QDXS-0005) 1
(烟台)中高级软件开发工程师 1
(补贴+包住宿)python工程师助理/python开发学徒/python程序员 2
Length: 7574, dtype: int64
规约后不同就业方向分布
direction_size = job_df.loc[:, ['job_direction']].groupby('job_direction').size()
direction_size
job_direction
web 3907
其他就业方向 17953
嵌入式 5065
数据分析 12579
机器学习 18301
爬虫 635
自动化测试 20079
自动化运维 15879
讲师 1249
dtype: int64
dct_direction = dict(direction_size)
漏斗图
from pyecharts.charts import Funnel, Page
def funnel_sort_ascending(dct) -> Funnel:
c = (
Funnel()
.add(
"岗位数量",
[(key, int(value)) for key, value in dct.items()],
sort_="ascending",
label_opts=opts.LabelOpts(position="outside"),
)
.set_global_opts(title_opts=opts.TitleOpts(title="不同就业方向岗位数量"), legend_opts=opts.LegendOpts(pos_left="right", pos_top="5%"))
)
return c
funnel_sort_ascending(dct_direction).render_notebook()
就业方向小节:
(1)python胶水语言的特性,非常适合自动化测试和自动化运维。
(2)python语言因其数据精度高、简单易学和丰富的第三方库,成为数据分析和机器学习的主流语言,人工智能和python互相成就。
(3)讲师方面的岗位不多,但随着国家对人工智能和编程教育的重视,预期会有一定增长。
不同城市招聘情况
按城市规约
job_df.loc[job_df['city'].str.contains('上海'), 'city'] = '上海'
job_df.loc[job_df['city'].str.contains('北京'), 'city'] = '北京'
job_df.loc[job_df['city'].str.contains('广州'), 'city'] = '广州'
job_df.loc[job_df['city'].str.contains('深圳'), 'city'] = '深圳'
job_df.loc[job_df['city'].str.contains('杭州'), 'city'] = '杭州'
job_df.loc[job_df['city'].str.contains('天津'), 'city'] = '天津'
job_df.loc[job_df['city'].str.contains('重庆'), 'city'] = '重庆'
job_df.loc[job_df['city'].str.contains('成都'), 'city'] = '成都'
job_df.loc[job_df['city'].str.contains('武汉'), 'city'] = '武汉'
job_df.loc[job_df['city'].str.contains('郑州'), 'city'] = '郑州'
job_df.loc[job_df['city'].str.contains('西安'), 'city'] = '西安'
job_df.loc[job_df['city'].str.contains('南京'), 'city'] = '南京'
job_df.loc[job_df['city'].str.contains('青岛'), 'city'] = '青岛'
job_df.loc[job_df['city'].str.contains('东莞'), 'city'] = '东莞'
job_df.loc[job_df['city'].str.contains('中山'), 'city'] = '中山'
job_df.loc[job_df['city'].str.contains('佛山'), 'city'] = '佛山'
job_df.loc[job_df['city'].str.contains('长沙'), 'city'] = '长沙'
job_df.loc[job_df['city'].str.contains('乌鲁木齐'), 'city'] = '乌鲁木齐'
job_df.loc[job_df['city'].str.contains('济南'), 'city'] = '济南'
job_df.loc[job_df['city'].str.contains('宁波'), 'city'] = '宁波'
job_df.loc[job_df['city'].str.contains('苏州'), 'city'] = '苏州'
job_df.loc[job_df['city'].str.contains('沈阳'), 'city'] = '沈阳'
job_df.loc[job_df['city'].str.contains('福州'), 'city'] = '福州'
job_df.loc[job_df['city'].str.contains('合肥'), 'city'] = '合肥'
job_df.loc[job_df['city'].str.contains('兰州'), 'city'] = '兰州'
job_df.loc[job_df['city'].str.contains('南宁'), 'city'] = '南宁'
job_df.loc[job_df['city'].str.contains('南昌'), 'city'] = '南昌'
job_df.loc[job_df['city'].str.contains('绍兴'), 'city'] = '绍兴'
job_df.loc[job_df['city'].str.contains('厦门'), 'city'] = '厦门'
job_df.loc[job_df['city'].str.contains('泉州'), 'city'] = '泉州'
job_df.loc[job_df['city'].str.contains('常州'), 'city'] = '常州'
job_df.loc[job_df['city'].str.contains('南通'), 'city'] = '南通'
job_df.loc[job_df['city'].str.contains('哈尔滨'), 'city'] = '哈尔滨'
job_df.loc[job_df['city'].str.contains('嘉兴'), 'city'] = '嘉兴'
job_df.loc[job_df['city'].str.contains('大连'), 'city'] = '大连'
job_df.loc[job_df['city'].str.contains('太原'), 'city'] = '太原'
job_df.loc[job_df['city'].str.contains('徐州'), 'city'] = '徐州'
job_df.loc[job_df['city'].str.contains('无锡'), 'city'] = '无锡'
job_df.loc[job_df['city'].str.contains('昆明'), 'city'] = '昆明'
job_df.loc[job_df['city'].str.contains('石家庄'), 'city'] = '石家庄'
job_df.loc[job_df['city'].str.contains('贵阳'), 'city'] = '贵阳'
job_df.loc[job_df['city'].str.contains('长春'), 'city'] = '长春'
job_df.loc[job_df['city'].str.contains('洛阳'), 'city'] = '洛阳'
job_df.loc[job_df['city'].str.contains('烟台'), 'city'] = '烟台'
job_df.loc[job_df['city'].str.contains('珠海'), 'city'] = '珠海'
主要城市招聘数量
dct_city = dict(job_df.loc[:, ['city']].groupby('city').size())
lst_city = [[key, value] for key, value in dct_city.items()]
lst_city.sort(key=lambda lt:lt[1], reverse=True)
lst_city[0:20]
[['深圳', 16242],
['广州', 9410],
['上海', 9159],
['杭州', 8096],
['成都', 6758],
['南京', 6565],
['北京', 5789],
['武汉', 4042],
['苏州', 2988],
['西安', 2463],
['郑州', 1959],
['济南', 1516],
['长沙', 1463],
['厦门', 1386],
['合肥', 1338],
['福州', 1330],
['大连', 1221],
['青岛', 1050],
['无锡', 978],
['沈阳', 818]]
主要城市薪水中位数
for lt in lst_city[0:20]:
lt.append(job_df.loc[job_df['city'] == lt[0],'min_salary'].median())
lt.append(job_df.loc[job_df['city'] == lt[0],'max_salary'].median())
lst_city[0:20]
[['深圳', 16242, 13000.0, 20000.0],
['广州', 9410, 10000.0, 20000.0],
['上海', 9159, 13000.0, 20000.0],
['杭州', 8096, 12000.0, 20000.0],
['成都', 6758, 10000.0, 18000.0],
['南京', 6565, 10000.0, 20000.0],
['北京', 5789, 15000.0, 20000.0],
['武汉', 4042, 9166.0, 15000.0],
['苏州', 2988, 10000.0, 18333.0],
['西安', 2463, 8333.0, 15000.0],
['郑州', 1959, 8001.0, 13333.0],
['济南', 1516, 8001.0, 15000.0],
['长沙', 1463, 8000.0, 14000.0],
['厦门', 1386, 10000.0, 16000.0],
['合肥', 1338, 8000.0, 15000.0],
['福州', 1330, 8000.0, 15000.0],
['大连', 1221, 8333.0, 15000.0],
['青岛', 1050, 8333.0, 15000.0],
['无锡', 978, 8333.0, 15000.0],
['沈阳', 818, 6001.0, 10000.0]]
折线图
from pyecharts.charts import Line
def line_base(lst) -> Line:
c = (
Line()
.add_xaxis([lt[0] for lt in lst])
.add_yaxis('岗位数',[int(lt[1]) for lt in lst])
.add_yaxis("最低工资中位数", [lt[2] for lt in lst])
.add_yaxis("最高工资中位数", [lt[3] for lt in lst])
.set_global_opts(title_opts=opts.TitleOpts(title="主要城市岗位数量和薪水"))
)
return c
line_base(lst_city[0:20]).render_notebook()
就业城市小节:
(1)互联网行业主要集中在一线城市,招聘数量最多的是深圳,其数量是排名20的沈阳招聘数量的20倍。
(2)北京的招聘数量并不多,但工资较高,符合北京的城市定位和人口限制政策。
(3)二线城市中,杭州和成都紧追一线城市;武汉、郑州的互联网行业暂未发展起来,工资相对较低;而苏州、厦门招聘数量虽不多,但工资水平与其房价水平匹配。
欢迎关注,敬请点赞!
返回顶部