数据清洗(一):拉勾网数据分析案例

1.导入数据

# 导入相应的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline 
#  %matplotlib inline  在这个notebook里显示图片
df = pd.read_csv('data/2.lagou/lagou_recruitment.csv')
df.head()
Unnamed: 0岗位名称公司名称城市地点薪资基本要求公司状况岗位技能公司福利
00数据分析师名片全能王上海[静安区]10k-20k10k-20k 经验1-3年 / 本科移动互联网 / D轮及以上 / 150-500人大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”
11数据分析师奇虎360金融上海[张江]10k-20k10k-20k 经验不限 / 本科金融 / 上市公司 / 500-2000人SQL 数据库“发展范围广 薪资高 福利好”
22数据分析51JOB上海[浦东新区]8k-15k8k-15k 经验1-3年 / 本科移动互联网,企业服务 / 上市公司 / 2000人以上SPSS 数据运营 数据库“五险一金 周末双休 年终福利”
332521BK-数据分析师陆金所上海[浦东新区]13k-26k13k-26k 经验1-3年 / 本科金融 / B轮 / 2000人以上大数据 金融 MySQL Oracle 算法“五险一金,节日福利,带薪年假”
44数据分析师天天拍车上海[虹桥]10k-15k10k-15k 经验1-3年 / 大专移动互联网,电商 / D轮及以上 / 2000人以上数据分析 数据库“五险一金,带薪年假,做五休二”

2.把没有用的unnamed删除掉

# 方法一:删除
df.drop(columns="Unnamed: 0",inplace=True)
df.head(2)
岗位名称公司名称城市地点薪资基本要求公司状况岗位技能公司福利
0数据分析师名片全能王上海[静安区]10k-20k10k-20k 经验1-3年 / 本科移动互联网 / D轮及以上 / 150-500人大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”
1数据分析师奇虎360金融上海[张江]10k-20k10k-20k 经验不限 / 本科金融 / 上市公司 / 500-2000人SQL 数据库“发展范围广 薪资高 福利好”
#方法二:导入的时候,将其作为索引
pd.read_csv('data/2.lagou/lagou_recruitment.csv',index_col=0).head(2)
岗位名称公司名称城市地点薪资基本要求公司状况岗位技能公司福利
0数据分析师名片全能王上海[静安区]10k-20k10k-20k 经验1-3年 / 本科移动互联网 / D轮及以上 / 150-500人大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”
1数据分析师奇虎360金融上海[张江]10k-20k10k-20k 经验不限 / 本科金融 / 上市公司 / 500-2000人SQL 数据库“发展范围广 薪资高 福利好”

3.初步数据探索

# 查看表格形状
df.shape
(1638, 9)
# 查看所有特证名
df.columns
# 大致了解所有的列名
# 查看列名左右是否有空格,如果有空格可以用strip方法去除空格
Index(['岗位名称', '公司名称', '城市', '地点', '薪资', '基本要求', '公司状况', '岗位技能', '公司福利'], dtype='object')
# 查看整体信息
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1638 entries, 0 to 1637
Data columns (total 9 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   岗位名称    1638 non-null   object
 1   公司名称    1638 non-null   object
 2   城市      1638 non-null   object
 3   地点      1638 non-null   object
 4   薪资      1638 non-null   object
 5   基本要求    1638 non-null   object
 6   公司状况    1638 non-null   object
 7   岗位技能    1637 non-null   object
 8   公司福利    1638 non-null   object
dtypes: object(9)
memory usage: 115.3+ KB

4.城市数据统计

city_num = df.城市.value_counts()
city_num
北京    450
上海    405
深圳    291
广州    170
杭州    128
成都     43
武汉     42
南京     26
厦门     16
佛山     13
长沙     12
苏州     10
重庆      9
天津      8
西安      8
福州      7
Name: 城市, dtype: int64
# 正常显示中文 window
plt.rcParams['font.family'] = ['simhei'] 
plt.rcParams['font.family'] = ['Arial Unicode MS']
city_num.plot(kind='bar'      # 绘图的类别
              ,figsize=(8,5)  # 画布的大小,长8宽5
              ,fontsize=12    # 字体的大小
              ,rot=45         # 标签旋转的角度
             );  

请添加图片描述

5.使用Pyecharts绘制柱状图

# 导入柱状图的包
from pyecharts.charts import Bar
from pyecharts import options as opts
list(city_num.index)
['北京',
 '上海',
 '深圳',
 '广州',
 '杭州',
 '成都',
 '武汉',
 '南京',
 '厦门',
 '佛山',
 '长沙',
 '苏州',
 '重庆',
 '天津',
 '西安',
 '福州']
# 创建实例
b = Bar()
# 添加x轴数据、列表
b.add_xaxis(list(city_num.index))
# 添加y轴数据、列表
b.add_yaxis('工作数量',list(city_num))
# 添加标题
b.set_global_opts(title_opts=opts.TitleOpts(title="数据分析工作地区分布"))
b.render('数据分析工作地区分布_1.html')
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\数据分析工作地区分布_1.html'

6.使用Pyecharts绘制地理图

from pyecharts import options as opts
from pyecharts.charts import Geo
city_num.to_dict().items()
dict_items([('北京', 450), ('上海', 405), ('深圳', 291), ('广州', 170), ('杭州', 128), ('成都', 43), ('武汉', 42), ('南京', 26), ('厦门', 16), ('佛山', 13), ('长沙', 12), ('苏州', 10), ('重庆', 9), ('天津', 8), ('西安', 8), ('福州', 7)])
list(zip(city_num.index,city_num.values))
[('北京', 450),
 ('上海', 405),
 ('深圳', 291),
 ('广州', 170),
 ('杭州', 128),
 ('成都', 43),
 ('武汉', 42),
 ('南京', 26),
 ('厦门', 16),
 ('佛山', 13),
 ('长沙', 12),
 ('苏州', 10),
 ('重庆', 9),
 ('天津', 8),
 ('西安', 8),
 ('福州', 7)]
c = Geo()   # 先实例地理图
c.add_schema(maptype='china')                                  # 绘制中国地图
city_num_dict = city_num.to_dict()                             # 转换成字典
city_num_dict.items()                                          # 字典的items功能、打包键值对
c.add('城市工作数量',city_num_dict.items())                    # 添加数据
c.set_series_opts(label_opts=opts.LabelOpts(is_show=False))   # 关闭维度标签
c.set_global_opts(visualmap_opts=opts.VisualMapOpts()
                  ,title_opts=opts.TitleOpts(title="城市标记")) # 配置地图显示类型和标题
c.render('全国城市工作数量_1.html')                             # 保存图片
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\全国城市工作数量_1.html'

7.去除重复值

df.shape
df.duplicated().sum()  # 查看重复值的数量
df[df.duplicated()]    # 查看重复值的数据
# 原地删除 去除重复值,当两条数据完全一样时,删除后面的数据
df.drop_duplicates(inplace=True)
# 查看操作是否删除
df.shape
(1609, 9)

8.将公司要求拆分成两列:工作年限、学历要求

df.head(2)
岗位名称公司名称城市地点薪资基本要求公司状况岗位技能公司福利
0数据分析师名片全能王上海[静安区]10k-20k10k-20k 经验1-3年 / 本科移动互联网 / D轮及以上 / 150-500人大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”
1数据分析师奇虎360金融上海[张江]10k-20k10k-20k 经验不限 / 本科金融 / 上市公司 / 500-2000人SQL 数据库“发展范围广 薪资高 福利好”
temp = df.基本要求.str.split('/')
df['工作年限'] = temp.map(lambda x:x[0])
df['学历要求'] = temp.map(lambda x:x[1])
# del df['基本要求']
df.head()
岗位名称公司名称城市地点薪资基本要求公司状况岗位技能公司福利工作年限学历要求
0数据分析师名片全能王上海[静安区]10k-20k10k-20k 经验1-3年 / 本科移动互联网 / D轮及以上 / 150-500人大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”10k-20k 经验1-3年本科
1数据分析师奇虎360金融上海[张江]10k-20k10k-20k 经验不限 / 本科金融 / 上市公司 / 500-2000人SQL 数据库“发展范围广 薪资高 福利好”10k-20k 经验不限本科
2数据分析51JOB上海[浦东新区]8k-15k8k-15k 经验1-3年 / 本科移动互联网,企业服务 / 上市公司 / 2000人以上SPSS 数据运营 数据库“五险一金 周末双休 年终福利”8k-15k 经验1-3年本科
32521BK-数据分析师陆金所上海[浦东新区]13k-26k13k-26k 经验1-3年 / 本科金融 / B轮 / 2000人以上大数据 金融 MySQL Oracle 算法“五险一金,节日福利,带薪年假”13k-26k 经验1-3年本科
4数据分析师天天拍车上海[虹桥]10k-15k10k-15k 经验1-3年 / 大专移动互联网,电商 / D轮及以上 / 2000人以上数据分析 数据库“五险一金,带薪年假,做五休二”10k-15k 经验1-3年大专
# 改变错误的列名,字典的key是现在的列名, 字典的value 是要改变的列名
df.rename(columns={'基本要求':'公司要求'},inplace=True)
df.head(2)
岗位名称公司名称城市地点薪资公司要求公司状况岗位技能公司福利工作年限学历要求
0数据分析师名片全能王上海[静安区]10k-20k10k-20k 经验1-3年 / 本科移动互联网 / D轮及以上 / 150-500人大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”10k-20k 经验1-3年本科
1数据分析师奇虎360金融上海[张江]10k-20k10k-20k 经验不限 / 本科金融 / 上市公司 / 500-2000人SQL 数据库“发展范围广 薪资高 福利好”10k-20k 经验不限本科
df['公司要求'].values[0].split(' ')[3]
'本科'
# 对公司要求这一列, 使用空格进行分割,分割结果为四列,命名为 temp
temp = df.公司要求.str.split(' ')
temp[:5]
0    [10k-20k, 经验1-3年, /, 本科]
1      [10k-20k, 经验不限, /, 本科]
2     [8k-15k, 经验1-3年, /, 本科]
3    [13k-26k, 经验1-3年, /, 本科]
4    [10k-15k, 经验1-3年, /, 大专]
Name: 公司要求, dtype: object
# 使用 map函数映射方法,进行操作
df['工作年限'] = temp.map(lambda x : x[1])  
# 在做循环的时候,map和apply可以互换
df['学历要求'] = temp.apply(lambda x : x[-1])
# 把公司要求这一列删除掉
df.pop('公司要求')
df.head(2)
岗位名称公司名称城市地点薪资公司状况岗位技能公司福利工作年限学历要求
0数据分析师名片全能王上海[静安区]10k-20k移动互联网 / D轮及以上 / 150-500人大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科
1数据分析师奇虎360金融上海[张江]10k-20k金融 / 上市公司 / 500-2000人SQL 数据库“发展范围广 薪资高 福利好”经验不限本科

9.将公司级别拆分成三列

df.公司状况
0          移动互联网 / D轮及以上 / 150-500人
1             金融 / 上市公司 / 500-2000人
2       移动互联网,企业服务 / 上市公司 / 2000人以上
3                 金融 / B轮 / 2000人以上
4        移动互联网,电商 / D轮及以上 / 2000人以上
                   ...             
1633          数据服务,硬件 / A轮 / 15-50人
1634      移动互联网,消费生活 / 未融资 / 15-50人
1635       文娱丨内容 / 上市公司 / 500-2000人
1636        移动互联网 / 未融资 / 500-2000人
1637     移动互联网,金融 / 不需要融资 / 2000人以上
Name: 公司状况, Length: 1609, dtype: object
df[['行业','融资','人数']] = df.公司状况.str.split('/ ',expand = True)
del df['公司状况']
df.head()
岗位名称公司名称城市地点薪资岗位技能公司福利工作年限学历要求行业融资人数
0数据分析师名片全能王上海[静安区]10k-20k大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科移动互联网D轮及以上150-500人
1数据分析师奇虎360金融上海[张江]10k-20kSQL 数据库“发展范围广 薪资高 福利好”经验不限本科金融上市公司500-2000人
2数据分析51JOB上海[浦东新区]8k-15kSPSS 数据运营 数据库“五险一金 周末双休 年终福利”经验1-3年本科移动互联网,企业服务上市公司2000人以上
32521BK-数据分析师陆金所上海[浦东新区]13k-26k大数据 金融 MySQL Oracle 算法“五险一金,节日福利,带薪年假”经验1-3年本科金融B轮2000人以上
4数据分析师天天拍车上海[虹桥]10k-15k数据分析 数据库“五险一金,带薪年假,做五休二”经验1-3年大专移动互联网,电商D轮及以上2000人以上
# df.公司状况.str.split(' ',expand = True)
# temp = df.公司状况.str.split('/')
# df['行业'] = temp.map(lambda x:x[0])
# df['融资'] = temp.map(lambda x:x[1])
# df['人数'] = temp.map(lambda x:x[2])
# del df['公司状况']
# df.pop('公司状况')
# df.head(2)
import matplotlib
matplotlib.__version__
pd.__version__
'1.0.5'

10.去除公司地点括号

# 去除掉两边的括号
df.地点 = df.地点.str.replace('[','').str.replace(']','')
df.head(2)
岗位名称公司名称城市地点薪资岗位技能公司福利工作年限学历要求行业融资人数
0数据分析师名片全能王上海静安区10k-20k大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科移动互联网D轮及以上150-500人
1数据分析师奇虎360金融上海张江10k-20kSQL 数据库“发展范围广 薪资高 福利好”经验不限本科金融上市公司500-2000人

11.对薪资这一个特征做一个简单的分析

df.薪资.values
array(['10k-20k', '10k-20k', '8k-15k', ..., '6k-7k', '10k-15k', '4k-6k'],
      dtype=object)
temp = df.薪资.str.replace('k','000').str.replace('K','000')
df[['最高薪资','最低薪资']]=temp.str.split('-',expand = True)
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1609 entries, 0 to 1637
Data columns (total 14 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   岗位名称    1609 non-null   object
 1   公司名称    1609 non-null   object
 2   城市      1609 non-null   object
 3   地点      1609 non-null   object
 4   薪资      1609 non-null   object
 5   岗位技能    1608 non-null   object
 6   公司福利    1609 non-null   object
 7   工作年限    1609 non-null   object
 8   学历要求    1609 non-null   object
 9   行业      1609 non-null   object
 10  融资      1609 non-null   object
 11  人数      1609 non-null   object
 12  最高薪资    1609 non-null   object
 13  最低薪资    1609 non-null   object
dtypes: object(14)
memory usage: 188.6+ KB
df.最低薪资 = df.最低薪资.astype('int64')
df.最高薪资 = df.最高薪资.astype('int64')
df.平均薪资=(df.最高薪资+df.最低薪资)/2
<ipython-input-385-af442a3562ba>:3: UserWarning: Pandas doesn't allow columns to be created via a new attribute name - see https://pandas.pydata.org/pandas-docs/stable/indexing.html#attribute-access
  df.平均薪资=(df.最高薪资+df.最低薪资)/2
# 把字符变成数字:把k替换成000
df.薪资.value_counts()
temp = df.薪资.str.replace('k','000').str.replace('K','000')
df['最低薪资'] = temp.str.split('-').map(lambda x:x[0])
df['最高薪资'] = temp.str.split('-').map(lambda x:x[1])
df.info()
df.head(2)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1609 entries, 0 to 1637
Data columns (total 14 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   岗位名称    1609 non-null   object
 1   公司名称    1609 non-null   object
 2   城市      1609 non-null   object
 3   地点      1609 non-null   object
 4   薪资      1609 non-null   object
 5   岗位技能    1608 non-null   object
 6   公司福利    1609 non-null   object
 7   工作年限    1609 non-null   object
 8   学历要求    1609 non-null   object
 9   行业      1609 non-null   object
 10  融资      1609 non-null   object
 11  人数      1609 non-null   object
 12  最高薪资    1609 non-null   object
 13  最低薪资    1609 non-null   object
dtypes: object(14)
memory usage: 188.6+ KB
岗位名称公司名称城市地点薪资岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资
0数据分析师名片全能王上海静安区10k-20k大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科移动互联网D轮及以上150-500人2000010000
1数据分析师奇虎360金融上海张江10k-20kSQL 数据库“发展范围广 薪资高 福利好”经验不限本科金融上市公司500-2000人2000010000
# 把薪资改变成整数型
df.最低薪资 = df.最低薪资.astype('int64')
df.最高薪资 = df.最高薪资.astype('int64')
df.info()
df.head(2)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1609 entries, 0 to 1637
Data columns (total 14 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   岗位名称    1609 non-null   object
 1   公司名称    1609 non-null   object
 2   城市      1609 non-null   object
 3   地点      1609 non-null   object
 4   薪资      1609 non-null   object
 5   岗位技能    1608 non-null   object
 6   公司福利    1609 non-null   object
 7   工作年限    1609 non-null   object
 8   学历要求    1609 non-null   object
 9   行业      1609 non-null   object
 10  融资      1609 non-null   object
 11  人数      1609 non-null   object
 12  最高薪资    1609 non-null   int64 
 13  最低薪资    1609 non-null   int64 
dtypes: int64(2), object(12)
memory usage: 188.6+ KB
岗位名称公司名称城市地点薪资岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资
0数据分析师名片全能王上海静安区10k-20k大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科移动互联网D轮及以上150-500人2000010000
1数据分析师奇虎360金融上海张江10k-20kSQL 数据库“发展范围广 薪资高 福利好”经验不限本科金融上市公司500-2000人2000010000

1. 生成一列平均薪资列

df['平均薪资'] = (df.最低薪资 + df.最高薪资) / 2
df.pop('薪资')
df.head(2)
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
0数据分析师名片全能王上海静安区大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科移动互联网D轮及以上150-500人200001000015000.0
1数据分析师奇虎360金融上海张江SQL 数据库“发展范围广 薪资高 福利好”经验不限本科金融上市公司500-2000人200001000015000.0

2. 看一下行业平均薪资

df.describe() 
最高薪资最低薪资平均薪资
count1609.0000001609.0000001609.000000
mean24277.81230614047.85581119162.834058
std12365.4152267020.3734749572.235760
min1000.0000001000.0000001000.000000
25%15000.00000010000.00000012500.000000
50%25000.00000015000.00000020000.000000
75%30000.00000018000.00000024000.000000
max100000.00000060000.00000075000.000000
df.平均薪资.plot(kind='density',grid=True,figsize=(12,5) #  grid网格
             ,xlim=(0,60000)                             # x轴的刻度范围
             ,xticks=np.arange(0,60000,3000)             # x轴的刻度线
            );

请添加图片描述

3.对不同城市的薪资分别进行统计

# 对不同的城市进行统计
city_salary = df.groupby(by='城市').mean()
df.groupby('城市').mean()
最高薪资最低薪资平均薪资
城市
上海25545.67901214676.54321020111.111111
佛山25076.92307714000.00000019538.461538
北京27649.41176515957.64705921803.529412
南京17653.84615410615.38461514134.615385
厦门22062.50000012437.50000017250.000000
天津12750.0000008250.00000010500.000000
广州19841.17647111670.58823515755.882353
成都15000.0000008837.20930211918.604651
杭州22906.25000013656.25000018281.250000
武汉17476.19047610190.47619013833.333333
深圳25756.09756114714.28571420235.191638
福州15000.0000008428.57142911714.285714
苏州18400.00000010700.00000014550.000000
西安11500.0000007375.0000009437.500000
重庆13888.8888897888.88888910888.888889
长沙12000.0000007916.6666679958.333333
city_salary[:5]
最高薪资最低薪资平均薪资
城市
上海25545.67901214676.54321020111.111111
佛山25076.92307714000.00000019538.461538
北京27649.41176515957.64705921803.529412
南京17653.84615410615.38461514134.615385
厦门22062.50000012437.50000017250.000000
city_salary.sort_values('平均薪资',ascending=False) 
# 对平均薪资进行降序排列
最高薪资最低薪资平均薪资
城市
北京27649.41176515957.64705921803.529412
深圳25756.09756114714.28571420235.191638
上海25545.67901214676.54321020111.111111
佛山25076.92307714000.00000019538.461538
杭州22906.25000013656.25000018281.250000
厦门22062.50000012437.50000017250.000000
广州19841.17647111670.58823515755.882353
苏州18400.00000010700.00000014550.000000
南京17653.84615410615.38461514134.615385
武汉17476.19047610190.47619013833.333333
成都15000.0000008837.20930211918.604651
福州15000.0000008428.57142911714.285714
重庆13888.8888897888.88888910888.888889
天津12750.0000008250.00000010500.000000
长沙12000.0000007916.6666679958.333333
西安11500.0000007375.0000009437.500000
city_list = city_salary.sort_values('平均薪资',ascending=False).index
city_list
Index(['北京', '深圳', '上海', '佛山', '杭州', '厦门', '广州', '苏州', '南京', '武汉', '成都', '福州',
       '重庆', '天津', '长沙', '西安'],
      dtype='object', name='城市')

4. 统计薪资的多个统计值

# 对不同的城市进行统计
df.groupby(by='城市')['平均薪资'].agg(['max','min','median','mean'])
maxminmedianmean
城市
上海75000.01500.020000.020111.111111
佛山37500.010500.017500.019538.461538
北京65000.03000.022000.021803.529412
南京45000.02500.012500.014134.615385
厦门31500.07000.015000.017250.000000
天津17500.06000.09750.010500.000000
广州40000.02500.015000.015755.882353
成都30000.02500.011500.011918.604651
杭州70000.03000.017000.018281.250000
武汉30000.02500.012500.013833.333333
深圳65000.01000.020000.020235.191638
福州20000.07000.011500.011714.285714
苏州30000.07500.011750.014550.000000
西安17500.04000.08000.09437.500000
重庆22500.05000.08000.010888.888889
长沙14000.05000.010750.09958.333333

5. 使用pyecharts绘制箱线图

# 存成嵌套的列表
from pyecharts.charts import Boxplot
df[df.城市 == "北京"]['平均薪资']
418    14000.0
419    18000.0
420    14000.0
421    10500.0
422    20000.0
        ...   
863    30000.0
864    20000.0
865    30000.0
866    45000.0
867     9000.0
Name: 平均薪资, Length: 425, dtype: float64
# 北上广深四大城市平均薪资箱型图
beijing = df[df.城市 == "北京"]['平均薪资']
shanghai = df[df.城市 == "上海"]['平均薪资']
guangzhou = df[df.城市 == "广州"]['平均薪资']
shenzhen = df[df.城市 == "深圳"]['平均薪资']

# 绘制箱型图
box = Boxplot()                              # 实例化一个箱型图对象
box.add_xaxis(['北京','上海','广州','深圳']) # 添加x坐标标签
box.add_yaxis("平均薪资",box.prepare_data([beijing,shanghai,guangzhou,shenzhen])) # 添加 y轴数据、用 prepare_data进行处理
box.set_global_opts(title_opts=opts.TitleOpts(title="四大城市平均薪资分布"))      # 图片标题
box.render('四大城市平均薪资箱线图.html')    # 保存图片
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\四大城市平均薪资箱线图.html'
# 所有城市平均薪资箱型图
temp_list = []
for i in city_list:
    temp_list.append(df[df.城市 == i]['平均薪资'])
# 绘制箱型图
box = Boxplot()                    # 实例化一个箱型图对象
box.add_xaxis(list(city_list))     # 添加x坐标标签
box.add_yaxis("平均薪资",box.prepare_data(temp_list))                        # 添加 y轴数据,用 prepare_data进行处理
box.set_global_opts(title_opts=opts.TitleOpts(title="所有城市平均薪资分布")) # 图片标题
box.render('所有城市平均薪资箱线图.html')                                    # 保存图片
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\所有城市平均薪资箱线图.html'
beijing[:2]
418    14000.0
419    18000.0
Name: 平均薪资, dtype: float64
box.prepare_data([beijing,shanghai,guangzhou,shenzhen])
[[3000.0, 16000.0, 22000.0, 26500.0, 65000.0],
 [1500.0, 14000.0, 20000.0, 25000.0, 75000.0],
 [2500.0, 9500.0, 15000.0, 20000.0, 40000.0],
 [1000.0, 12500.0, 20000.0, 24000.0, 65000.0]]
# 绘制所有城市平均薪资箱线图
city_salary = df.groupby(by='城市').mean()                              # 对不同的城市进行统计
city_list = city_salary.sort_values('平均薪资',ascending=False).index  # 从统计结果中提取出城市列表
temp = []  #  初始化空列表
for i in city_list: # 对每个城市进行遍历
    print(i)
    temp.append(df[df.城市 == i]['平均薪资']) 
# 利用布尔序列提取出该城市的薪资数据,并把数据添加到列表中
北京
深圳
上海
佛山
杭州
厦门
广州
苏州
南京
武汉
成都
福州
重庆
天津
长沙
西安
len(temp)
16
temp[:3]
[418    14000.0
 419    18000.0
 420    14000.0
 421    10500.0
 422    20000.0
         ...   
 863    30000.0
 864    20000.0
 865    30000.0
 866    45000.0
 867     9000.0
 Name: 平均薪资, Length: 425, dtype: float64,
 1301    15000.0
 1302    12000.0
 1303    12000.0
 1304    16500.0
 1305    22500.0
          ...   
 1587    37500.0
 1588    47500.0
 1589    22500.0
 1590    40000.0
 1591    25000.0
 Name: 平均薪资, Length: 287, dtype: float64,
 0      15000.0
 1      15000.0
 2      11500.0
 3      19500.0
 4      12500.0
         ...   
 400    20000.0
 401    22500.0
 402    30000.0
 403    10500.0
 404    25000.0
 Name: 平均薪资, Length: 405, dtype: float64]
box.prepare_data(temp)
[[3000.0, 16000.0, 22000.0, 26500.0, 65000.0],
 [1000.0, 12500.0, 20000.0, 24000.0, 65000.0],
 [1500.0, 14000.0, 20000.0, 25000.0, 75000.0],
 [10500.0, 11500.0, 17500.0, 25750.0, 37500.0],
 [3000.0, 11500.0, 17000.0, 24625.0, 70000.0],
 [7000.0, 11625.0, 15000.0, 21875.0, 31500.0],
 [2500.0, 9500.0, 15000.0, 20000.0, 40000.0],
 [7500.0, 9125.0, 11750.0, 18500.0, 30000.0],
 [2500.0, 9750.0, 12500.0, 17875.0, 45000.0],
 [2500.0, 9000.0, 12500.0, 16750.0, 30000.0],
 [2500.0, 8500.0, 11500.0, 15000.0, 30000.0],
 [7000.0, 8000.0, 11500.0, 15000.0, 20000.0],
 [5000.0, 5750.0, 8000.0, 17750.0, 22500.0],
 [6000.0, 8500.0, 9750.0, 12250.0, 17500.0],
 [5000.0, 6875.0, 10750.0, 12500.0, 14000.0],
 [4000.0, 5875.0, 8000.0, 12875.0, 17500.0]]
np.array(box.prepare_data(temp)).shape # 查看数据形状
(16, 5)
box = Boxplot()                                  # 实例化一个箱型图对象
box.add_xaxis(list(city_list))                   # 添加x坐标数据, 城市
box.add_yaxis("平均薪资",box.prepare_data(temp)) # 添加y轴数据,用prepare_data 进行处理
box.set_global_opts(title_opts=opts.TitleOpts(title="所有城市平均薪资分布")) # 图片标题
box.render('所有城市平均薪资箱线图.html')                                    # 保存图片
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\所有城市平均薪资箱线图.html'

6. 练习: 根据工作年限的不同,统计平均薪资的箱线图

df.head(2)
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
0数据分析师名片全能王上海静安区大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科移动互联网D轮及以上150-500人200001000015000.0
1数据分析师奇虎360金融上海张江SQL 数据库“发展范围广 薪资高 福利好”经验不限本科金融上市公司500-2000人200001000015000.0
work_list = df.工作年限.value_counts().index[:-1]
temp_list = []
for i in work_list:
    temp_list.append(df[df.工作年限 == i]['平均薪资'])
box = Boxplot()                                         # 实例化一个箱型图对象
box.add_xaxis(list(work_list))                          # 添加x坐标数据, 城市
box.add_yaxis("平均薪资",box.prepare_data(temp_list )) # 添加y轴数据,用prepare_data 进行处理
box.set_global_opts(title_opts=opts.TitleOpts(title="所有城市平均薪资分布")) # 图片标题
box.render('所有城市平均薪资箱线图.html')                                    # 保存图片
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\所有城市平均薪资箱线图.html'
df.工作年限.value_counts()
经验3-5年     673
经验1-3年     432
经验5-10年    221
经验不限       178
经验应届毕业生     75
经验1年以下      28
经验10年以上      2
Name: 工作年限, dtype: int64
temp = df.工作年限.value_counts().index
temp
Index(['经验3-5年', '经验1-3年', '经验5-10年', '经验不限', '经验应届毕业生', '经验1年以下', '经验10年以上'], dtype='object')
df[df.工作年限 == temp[0]]['平均薪资']
empty = []
# 对类别循环
for i in temp:
    print(i)
    empty.append(df[df.工作年限 == i]['平均薪资'])
empty[1] 
经验3-5年
经验1-3年
经验5-10年
经验不限
经验应届毕业生
经验1年以下
经验10年以上





0       15000.0
2       11500.0
3       19500.0
4       12500.0
6       10000.0
         ...   
1626    11500.0
1628     9000.0
1629    10000.0
1635     6500.0
1636    12500.0
Name: 平均薪资, Length: 432, dtype: float64
box = Boxplot()           # 实例化一个箱型图对象
box.add_xaxis(list(temp)) # 添加x坐标数据, 城市
box.add_yaxis("平均薪资",box.prepare_data(empty)) # 添加y轴数据,用prepare_data 进行处理
box.reversal_axis()                       # 翻转XY轴
box.set_global_opts(title_opts=opts.TitleOpts(title="工作年限平均薪资分布")) # 图片标题
box.render('工作年限平均薪资箱线图.html') # 保存图片
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\工作年限平均薪资箱线图.html'
df[df['工作年限']=='经验10年以上']
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
1241商业数据分析总监网易杭州长河电商 移动互联网 SQLServer Hive 数据分析 算法“跨境电商,薪酬有竞争力”经验10年以上本科电商上市公司2000人以上800006000070000.0
14144721FP-智慧法律-资深数据分析专家平安智慧城深圳南山区数据分析“五险一金,绩效奖金,高温补贴,定期体检”经验10年以上本科移动互联网不需要融资2000人以上300001500022500.0

7. 研究一下各地区最高薪资是什么工作

max_salary = df.groupby(by='城市')['平均薪资'].min()
df_res = pd.DataFrame()
# for i,j in list(zip(max_salary.index,max_salary.values)): 
for i,j in max_salary.to_dict().items():
    temp_series = df[(df["城市"]  == i) & (df["平均薪资"] == j)] # 拿出每一次循环的数据库
    df_res = pd.concat([df_res,temp_series],axis=0)              # 将每次拿出的数据框拼接到df_res
max_salary.sort_values(ascending=False,inplace=True)
max_salary
城市
佛山    10500.0
苏州     7500.0
福州     7000.0
厦门     7000.0
天津     6000.0
长沙     5000.0
重庆     5000.0
西安     4000.0
杭州     3000.0
北京     3000.0
武汉     2500.0
成都     2500.0
广州     2500.0
南京     2500.0
上海     1500.0
深圳     1000.0
Name: 平均薪资, dtype: float64
max_salary.index
Index(['佛山', '苏州', '福州', '厦门', '天津', '长沙', '重庆', '西安', '杭州', '北京', '武汉', '成都',
       '广州', '南京', '上海', '深圳'],
      dtype='object', name='城市')
max_salary.values
array([10500.,  7500.,  7000.,  7000.,  6000.,  5000.,  5000.,  4000.,
        3000.,  3000.,  2500.,  2500.,  2500.,  2500.,  1500.,  1000.])
df.平均薪资 == 75000.
0       False
1       False
2       False
3       False
4       False
        ...  
1633    False
1634    False
1635    False
1636    False
1637    False
Length: 1609, dtype: bool
df.城市 == '上海'
0        True
1        True
2        True
3        True
4        True
        ...  
1633    False
1634    False
1635    False
1636    False
1637    False
Name: 城市, Length: 1609, dtype: bool
((df.城市 == '上海') & (df.平均薪资 == 75000.)).sum()
1
df[(df.城市 == '上海') & (df.平均薪资 == 75000.)]
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
367高级数据分析总监靖琪上海虹口区电商 工具软件“公司实力强,成长空间大,福利待遇好”经验5-10年本科移动互联网天使轮50-150人1000005000075000.0
list(zip(max_salary.index,max_salary.values))
[('佛山', 10500.0),
 ('苏州', 7500.0),
 ('福州', 7000.0),
 ('厦门', 7000.0),
 ('天津', 6000.0),
 ('长沙', 5000.0),
 ('重庆', 5000.0),
 ('西安', 4000.0),
 ('杭州', 3000.0),
 ('北京', 3000.0),
 ('武汉', 2500.0),
 ('成都', 2500.0),
 ('广州', 2500.0),
 ('南京', 2500.0),
 ('上海', 1500.0),
 ('深圳', 1000.0)]
[*zip(max_salary.index,max_salary.values)] 
# 这里的*代表解压缩,在某种情况下等同于list()
[('佛山', 10500.0),
 ('苏州', 7500.0),
 ('福州', 7000.0),
 ('厦门', 7000.0),
 ('天津', 6000.0),
 ('长沙', 5000.0),
 ('重庆', 5000.0),
 ('西安', 4000.0),
 ('杭州', 3000.0),
 ('北京', 3000.0),
 ('武汉', 2500.0),
 ('成都', 2500.0),
 ('广州', 2500.0),
 ('南京', 2500.0),
 ('上海', 1500.0),
 ('深圳', 1000.0)]
df_m = pd.DataFrame()
for i,j in zip(max_salary.index,max_salary.values):
    df_c = df[(df.城市==i)&(df.平均薪资==j)]
    df_m = pd.concat([df_m,df_c])
df_m.head(2)
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
409数据分析师美的电商佛山顺德区电商 大数据 数据分析 数据运营 SPSS 商业“不打卡 团队年轻 领导nice”经验3-5年本科电商上市公司2000人以上13000800010500.0
1608数据分析师迈科网络苏州工业园区通信/网络设备“公司核心技术岗位,发展空间大”经验1年以下本科数据服务上市公司15-50人1000050007500.0

8. 练习:提取出各城市最低薪资的招聘信息

min_salary = df.groupby('城市')['平均薪资'].min()
min_salary 

list(zip(min_salary.index,min_salary.values))

df_res = pd.DataFrame()
for i,j in zip(min_salary.index,min_salary.values):
    temp_series = df[(df.城市 == i) & (df.平均薪资 == j)]
    df_res = pd.concat([df_res,temp_series],axis = 0)
min_salary.to_dict().items()
# =zip(min_salary.index,min_salary.values)
dict_items([('上海', 1500.0), ('佛山', 10500.0), ('北京', 3000.0), ('南京', 2500.0), ('厦门', 7000.0), ('天津', 6000.0), ('广州', 2500.0), ('成都', 2500.0), ('杭州', 3000.0), ('武汉', 2500.0), ('深圳', 1000.0), ('福州', 7000.0), ('苏州', 7500.0), ('西安', 4000.0), ('重庆', 5000.0), ('长沙', 5000.0)])
# 1.提取出各城市的最低薪资
min_salary = df.groupby('城市')['平均薪资'].min()

# 2.对最低薪资进行降序排序
min_salary.sort_values(ascending=False,inplace=True)

# 3.循环提取各城市的最低薪资招聘信息
df_t = pd.DataFrame()
for i,j in zip(min_salary.index,min_salary.values):
    df_one = df[(df.城市==i)&(df.平均薪资==j)]
    df_t = pd.concat([df_t,df_one])
df_t.shape
(24, 14)
df_t.head()
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
409数据分析师美的电商佛山顺德区电商 大数据 数据分析 数据运营 SPSS 商业“不打卡 团队年轻 领导nice”经验3-5年本科电商上市公司2000人以上13000800010500.0
1608数据分析师迈科网络苏州工业园区通信/网络设备“公司核心技术岗位,发展空间大”经验1年以下本科数据服务上市公司15-50人1000050007500.0
1596数据分析师戎易商智(北京)科技有限公司福州五四路移动互联网 SQL 数据库 数据分析 SPSS“周末双休,五险一金,员工旅游,生日福利”经验1-3年本科移动互联网,数据服务未融资15-50人800060007000.0
906软件开发工程师(数据分析)福建天闻厦门集美区大数据“五险一金、带薪年假”经验1-3年本科数据服务,教育未融资15-50人800060007000.0
916金融数据分析师投中信息天津滨海新区VC 数据分析 行业研究 分析师“全勤奖 饭补 车补 下午茶 年终奖”经验不限本科金融D轮及以上150-500人800040006000.0

9 分析异常数据

def func(data,column):
    high = data[column].mean() + 3 * data[column].std()
    low = data[column].mean() - 3* data[column].std()
    res_df = data[(data[column] > high) | (data[column]< low)]
    return res_df
func(df,"平均薪资")
func(df,"最高薪资")
func(df,'最低薪资')
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
147数据分析与建模专家招商银行信用卡中心上海浦东新区数据分析 数据架构“职位晋升 福利待遇好 工作氛围好”经验5-10年本科金融上市公司2000人以上650004000052500.0
364安全数据分析平台高级开发工程师上海瑞阙文化发展有限公司上海黄浦区安全“弹性工作,提供晚餐”经验1-3年本科移动互联网,金融不需要融资150-500人800004000060000.0
367高级数据分析总监靖琪上海虹口区电商 工具软件“公司实力强,成长空间大,福利待遇好”经验5-10年本科移动互联网天使轮50-150人1000005000075000.0
744数据分析师/数据科学家滴滴北京西北旺Hadoop 数据挖掘 MySQL“数据精确,老大nb,汇报线简单”经验5-10年本科汽车丨出行不需要融资2000人以上600004000050000.0
762数据分析总监发现旅行北京朝阳区数据分析“扁平化管理,氛围超好,地位重要,待遇优厚”经验5-10年本科旅游B轮50-150人800005000065000.0
1206数据分析总监多准大数据杭州西溪大数据 电商 数据分析“缴纳五险一金,带薪年假,出国旅游,培训”经验5-10年本科数据服务,广告营销A轮50-150人500004000045000.0
1241商业数据分析总监网易杭州长河电商 移动互联网 SQLServer Hive 数据分析 算法“跨境电商,薪酬有竞争力”经验10年以上本科电商上市公司2000人以上800006000070000.0
1450数据分析总监深圳白骑士大数据有限公司深圳科技园金融 算法 数据挖掘 数据分析“平台好,创新型,发展迅速,股权期权”经验5-10年硕士企业服务,金融A轮50-150人650003800051500.0
1455资深数据分析师(J11772)货拉拉深圳上梅林BI 商业 数据分析“发展空间大”经验5-10年本科移动互联网,消费生活C轮2000人以上700005000060000.0
1504商业数据分析师 (003969)vivo深圳宝安区移动互联网“弹性工作,股票期权,大数据平台 千万用户”经验3-5年本科硬件未融资2000人以上800005000065000.0
1512数据分析高级工程师腾讯深圳前海数据分析 Hadoop Spark 数据挖掘“腾讯平台 福利待遇好 技术成长”经验3-5年本科社交上市公司2000人以上700004000055000.0
1514商业数据分析师vivo深圳宝安区移动互联网“股票期权,精英团队,弹性工作”经验3-5年本科硬件未融资2000人以上800005000065000.0
1538数据分析总监万顺赢深圳科技园医疗健康 工具软件“中国知名企业,福利好”经验5-10年硕士移动互联网,金融未融资150-500人800004500062500.0
a = df.平均薪资.mean() + 3 * df.平均薪资.std()
a
47879.54133696899
b = df.平均薪资.mean() - 3 * df.平均薪资.std()
b
-9553.873220126236
df[df.平均薪资 > a]
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
147数据分析与建模专家招商银行信用卡中心上海浦东新区数据分析 数据架构“职位晋升 福利待遇好 工作氛围好”经验5-10年本科金融上市公司2000人以上650004000052500.0
201数据分析leader上海腾聘上海张江移动互联网“发展空间,薪资给力,期权”经验5-10年本科移动互联网,数据服务B轮50-150人650003500050000.0
364安全数据分析平台高级开发工程师上海瑞阙文化发展有限公司上海黄浦区安全“弹性工作,提供晚餐”经验1-3年本科移动互联网,金融不需要融资150-500人800004000060000.0
367高级数据分析总监靖琪上海虹口区电商 工具软件“公司实力强,成长空间大,福利待遇好”经验5-10年本科移动互联网天使轮50-150人1000005000075000.0
744数据分析师/数据科学家滴滴北京西北旺Hadoop 数据挖掘 MySQL“数据精确,老大nb,汇报线简单”经验5-10年本科汽车丨出行不需要融资2000人以上600004000050000.0
762数据分析总监发现旅行北京朝阳区数据分析“扁平化管理,氛围超好,地位重要,待遇优厚”经验5-10年本科旅游B轮50-150人800005000065000.0
1241商业数据分析总监网易杭州长河电商 移动互联网 SQLServer Hive 数据分析 算法“跨境电商,薪酬有竞争力”经验10年以上本科电商上市公司2000人以上800006000070000.0
1450数据分析总监深圳白骑士大数据有限公司深圳科技园金融 算法 数据挖掘 数据分析“平台好,创新型,发展迅速,股权期权”经验5-10年硕士企业服务,金融A轮50-150人650003800051500.0
1455资深数据分析师(J11772)货拉拉深圳上梅林BI 商业 数据分析“发展空间大”经验5-10年本科移动互联网,消费生活C轮2000人以上700005000060000.0
1466数据分析专家字节跳动深圳南山区数据分析“扁平管理,过亿用户,职业大牛”经验不限本科文娱丨内容C轮2000人以上700003500052500.0
1504商业数据分析师 (003969)vivo深圳宝安区移动互联网“弹性工作,股票期权,大数据平台 千万用户”经验3-5年本科硬件未融资2000人以上800005000065000.0
1512数据分析高级工程师腾讯深圳前海数据分析 Hadoop Spark 数据挖掘“腾讯平台 福利待遇好 技术成长”经验3-5年本科社交上市公司2000人以上700004000055000.0
1514商业数据分析师vivo深圳宝安区移动互联网“股票期权,精英团队,弹性工作”经验3-5年本科硬件未融资2000人以上800005000065000.0
1538数据分析总监万顺赢深圳科技园医疗健康 工具软件“中国知名企业,福利好”经验5-10年硕士移动互联网,金融未融资150-500人800004500062500.0
def get_three_std_data(df):
    """提取疑似异常数据进行分析"""
    mean = df.平均薪资.mean()
    std = df.平均薪资.std()
    a = df.平均薪资.mean() + 3 * df.平均薪资.std()
    b = df.平均薪资.mean() - 3 * df.平均薪资.std()
    result = df[(df.平均薪资 > a) | (df.平均薪资 < b)]
    return result
get_three_std_data(df).shape
(14, 14)
df_all = get_three_std_data(df)
df_all[df.城市=='北京'] 
<ipython-input-442-4ce1ac862829>:2: UserWarning: Boolean Series key will be reindexed to match DataFrame index.
  df_all[df.城市=='北京']
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
744数据分析师/数据科学家滴滴北京西北旺Hadoop 数据挖掘 MySQL“数据精确,老大nb,汇报线简单”经验5-10年本科汽车丨出行不需要融资2000人以上600004000050000.0
762数据分析总监发现旅行北京朝阳区数据分析“扁平化管理,氛围超好,地位重要,待遇优厚”经验5-10年本科旅游B轮50-150人800005000065000.0
get_three_std_data(df[df.城市 == "北京"])
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
744数据分析师/数据科学家滴滴北京西北旺Hadoop 数据挖掘 MySQL“数据精确,老大nb,汇报线简单”经验5-10年本科汽车丨出行不需要融资2000人以上600004000050000.0
762数据分析总监发现旅行北京朝阳区数据分析“扁平化管理,氛围超好,地位重要,待遇优厚”经验5-10年本科旅游B轮50-150人800005000065000.0

10. 根据学历统计薪资

df.学历要求.value_counts()
本科    1332
不限     109
大专      89
硕士      78
博士       1
Name: 学历要求, dtype: int64
# 学历分组统计薪资
df.groupby('学历要求').mean().sort_values(by='平均薪资',ascending=False)
最高薪资最低薪资平均薪资
学历要求
博士60000.00000035000.00000047500.000000
硕士27474.35897415692.30769221583.333333
本科24875.37537514390.39039019632.882883
不限22807.33945013146.78899117977.064220
大专13932.5842708348.31460711140.449438

12.单独提取出北京的数据进行分析

# 将北京的数据过滤出来, 使用.copy创建成副本
df_beijing = df[df.城市 == "北京"].copy()
df_beijing.地点.value_counts()
朝阳区     82
海淀区     76
望京      44
中关村     20
西北旺     14
        ..
石景山区     1
八角       1
国贸       1
西苑       1
燕莎       1
Name: 地点, Length: 68, dtype: int64
df_beijing['地点'].values
array(['苏州街', '海淀区', '大屯', '太平桥', '海淀区', '西北旺', '朝阳区', '海淀区', '和平里',
       '海淀区', '酒仙桥', '朝阳区', '五道口', '海淀区', '西直门', '西二旗', '海淀区', '大山子',
       '朝阳区', '苏州街', '北太平庄', '朝阳区', '西二旗', '大山子', '西三旗', '中关村', '海淀区',
       '亦庄', '朝阳区', '海淀区', '上地', '中关村', '中关村', '五道口', '西城区', '上地', '朝阳区',
       '宣武门', '西二旗', '朝阳区', '海淀区', '朝阳区', '三元桥', '东四', '中关村', '海淀区', '望京',
       '团结湖', '海淀区', '亚运村', '中关村', '东城区', '朝阳区', '朝阳区', '西直门', '朝阳区',
       '朝阳区', '朝阳区', '朝阳区', '酒仙桥', '海淀区', '东城区', '西城区', '望京', '亦庄', '海淀区',
       '中关村', '团结湖', '海淀区', '海淀区', '望京', '小关', '朝阳区', '朝阳区', '海淀区', '东城区',
       '海淀区', '朝阳区', '朝阳区', '西北旺', '望京', '望京', '西北旺', '海淀区', '朝阳区', '东四',
       '朝阳区', '海淀区', '海淀区', '上地', '朝阳区', '朝阳区', '朝阳区', '海淀区', '团结湖',
       '大望路', '望京', '海淀区', '大望路', '石佛营', '朝阳区', '海淀区', '和平里', '清河', '上地',
       '海淀区', '三里河', '海淀区', '望京', '朝阳区', '朝阳区', '三元桥', '三里屯', '朝阳区',
       '朝阳区', '中关村', '朝阳区', '望京', '海淀区', '海淀区', '海淀区', '东城区', '朝阳区',
       '海淀区', '海淀区', '西北旺', '朝阳区', '西北旺', '海淀区', '北太平庄', '望京', '朝阳区',
       '团结湖', '上地', '海淀区', '上地', '西北旺', '望京', '小关', '丰台区', '东城区', '朝阳区',
       '海淀区', '望京', '酒仙桥', '国贸', '酒仙桥', '亚运村', '海淀区', '朝阳区', '北京大学', '上地',
       '酒仙桥', '北京大学', '朝外', '中关村', '大望路', '中关村', '朝阳区', '望京', '太平桥', '望京',
       '朝阳区', '海淀区', '朝阳门', '望京', '雍和宫', '朝阳区', '东四', '石佛营', '海淀区', '望京',
       '朝阳区', '东四', '望京', '望京', '东城区', '中关村', '海淀区', '华贸', '西三旗', '西三旗',
       '亮马桥', '朝阳区', '海淀区', '酒仙桥', '朝阳区', '海淀区', '望京', '朝阳区', '东城区',
       '学院路', '朝阳区', '团结湖', '四惠', '酒仙桥', '朝阳区', '望京', '北京大学', '朝阳区',
       '中关村', '望京', '昌平区', '东城区', '望京', '酒仙桥', '学院路', '朝阳区', '西城区', '酒仙桥',
       '大望路', '中关村', '小关', '朝阳区', '望京', '朝阳区', '大望路', '海淀区', '昌平区', '海淀区',
       '朝阳区', '西三旗', '西北旺', '望京', '东四', '八大处', '望京', '东四', '大山子', '三元桥',
       '东坝', '西北旺', '燕莎', '海淀区', '海淀区', '雍和宫', '望京', '十里堡', '学院路', '中关村',
       '月坛', '团结湖', '海淀区', '大山子', '朝阳区', '海淀区', '北京大学', '朝阳区', '海淀区',
       '西北旺', '海淀区', '八角', '望京', '望京', '学院路', '来广营', '望京', '大望路', '中关村',
       '朝阳区', '朝阳区', '海淀区', '北京大学', '海淀区', '昌平区', '万泉河', '海淀区', '望京',
       '海淀区', '望京', '望京', '酒仙桥', '朝阳区', '五道口', '西三旗', '中关村', '中关村', '朝阳区',
       '海淀区', '朝阳区', '望京', '中关村', '延庆区', '百子湾', '建国门', '中关村', '海淀区', '亦庄',
       '安定门', '北苑', '望京', '望京', '海淀区', '朝阳区', '百子湾', '安贞', '西二旗', '望京',
       '望京', '上地', '朝阳区', '朝阳区', '朝阳区', '西北旺', '朝阳区', '北苑', '朝外', '海淀区',
       '朝阳区', '亮马桥', '双井', '安贞', '学院路', '望京', '双井', '朝外', '酒仙桥', '大山子',
       '知春路', '朝阳区', '朝阳区', '海淀区', '朝阳区', '大山子', '海淀区', '朝阳区', '大山子',
       '朝阳区', '海淀区', '小关', '西三旗', '昌平区', '望京', '朝阳区', '奥运村', '朝阳区', '海淀区',
       '朝阳区', '海淀区', '五道口', '海淀区', '上地', '四惠', '朝阳区', '大兴区', '学院路', '朝外',
       '朝阳区', '朝阳区', '朝阳区', '海淀区', '西二旗', '清河', '海淀区', '十里堡', '大屯', '望京',
       '海淀区', '朝阳区', '朝阳区', '西北旺', '朝阳区', '望京', '上地', '海淀区', '海淀区', '朝阳区',
       '朝阳区', '奥运村', '太阳宫', '西苑', '西二旗', '科技园区', '朝阳公园', '西二旗', '朝阳区',
       '太平桥', '大山子', '团结湖', '西北旺', '海淀区', '海淀区', '建外大街', '雍和宫', '望京',
       '海淀区', '海淀区', '永顺', '四惠', '大兴区', '安定门', '五道口', '安定门', '大屯', '东坝',
       '海淀区', '海淀区', '亦庄', '十里堡', '朝阳区', '海淀区', '朝阳区', '朝阳区', '中关村',
       '海淀区', '大屯', '望京', '朝阳门', '中关村', '上地', '海淀区', '大兴区', '大兴区', '石景山区',
       '西北旺', '五道口', '东城区', '望京', '潘家园', '西北旺', '海淀区', '朝阳门', '望京', '朝阳门',
       '大屯'], dtype=object)
# 对北京的地区进行去重
#方式一:
list(set(df_beijing['地点'].values))
#方式二:
df_beijing.地点.value_counts().index
#方法三:
np.unique(df_beijing.地点)
#方法四:
df_beijing.地点.drop_duplicates()
418     苏州街
419     海淀区
420      大屯
421     太平桥
423     西北旺
       ... 
816    朝阳公园
825    建外大街
830      永顺
856    石景山区
861     潘家园
Name: 地点, Length: 68, dtype: object
loc = np.unique(df_beijing.地点)
loc
array(['万泉河', '三元桥', '三里屯', '三里河', '上地', '东四', '东坝', '东城区', '中关村', '丰台区',
       '五道口', '亚运村', '亦庄', '亮马桥', '八大处', '八角', '北京大学', '北太平庄', '北苑',
       '十里堡', '华贸', '双井', '和平里', '四惠', '团结湖', '国贸', '大兴区', '大屯', '大山子',
       '大望路', '太平桥', '太阳宫', '奥运村', '学院路', '安定门', '安贞', '宣武门', '小关', '延庆区',
       '建国门', '建外大街', '昌平区', '月坛', '望京', '朝外', '朝阳公园', '朝阳区', '朝阳门',
       '来广营', '永顺', '海淀区', '清河', '潘家园', '燕莎', '百子湾', '知春路', '石佛营', '石景山区',
       '科技园区', '苏州街', '西三旗', '西二旗', '西北旺', '西城区', '西直门', '西苑', '酒仙桥',
       '雍和宫'], dtype=object)
[plt.cm.tab10(i/float(len(loc))) for i in range(len(loc))]
# 小数的指定对应色卡,颜色渐变过渡数值,气泡的颜色不一样,每一个气泡对应一个地区
[(0.12156862745098039, 0.4666666666666667, 0.7058823529411765, 1.0),
 (0.12156862745098039, 0.4666666666666667, 0.7058823529411765, 1.0),
 (0.12156862745098039, 0.4666666666666667, 0.7058823529411765, 1.0),
 (0.12156862745098039, 0.4666666666666667, 0.7058823529411765, 1.0),
 (0.12156862745098039, 0.4666666666666667, 0.7058823529411765, 1.0),
 (0.12156862745098039, 0.4666666666666667, 0.7058823529411765, 1.0),
 (0.12156862745098039, 0.4666666666666667, 0.7058823529411765, 1.0),
 (1.0, 0.4980392156862745, 0.054901960784313725, 1.0),
 (1.0, 0.4980392156862745, 0.054901960784313725, 1.0),
 (1.0, 0.4980392156862745, 0.054901960784313725, 1.0),
 (1.0, 0.4980392156862745, 0.054901960784313725, 1.0),
 (1.0, 0.4980392156862745, 0.054901960784313725, 1.0),
 (1.0, 0.4980392156862745, 0.054901960784313725, 1.0),
 (1.0, 0.4980392156862745, 0.054901960784313725, 1.0),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313, 1.0),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313, 1.0),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313, 1.0),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313, 1.0),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313, 1.0),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313, 1.0),
 (0.17254901960784313, 0.6274509803921569, 0.17254901960784313, 1.0),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392, 1.0),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392, 1.0),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392, 1.0),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392, 1.0),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392, 1.0),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392, 1.0),
 (0.8392156862745098, 0.15294117647058825, 0.1568627450980392, 1.0),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353, 1.0),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353, 1.0),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353, 1.0),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353, 1.0),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353, 1.0),
 (0.5803921568627451, 0.403921568627451, 0.7411764705882353, 1.0),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354, 1.0),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354, 1.0),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354, 1.0),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354, 1.0),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354, 1.0),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354, 1.0),
 (0.5490196078431373, 0.33725490196078434, 0.29411764705882354, 1.0),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902, 1.0),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902, 1.0),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902, 1.0),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902, 1.0),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902, 1.0),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902, 1.0),
 (0.8901960784313725, 0.4666666666666667, 0.7607843137254902, 1.0),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745, 1.0),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745, 1.0),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745, 1.0),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745, 1.0),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745, 1.0),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745, 1.0),
 (0.4980392156862745, 0.4980392156862745, 0.4980392156862745, 1.0),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333, 1.0),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333, 1.0),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333, 1.0),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333, 1.0),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333, 1.0),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333, 1.0),
 (0.7372549019607844, 0.7411764705882353, 0.13333333333333333, 1.0),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529, 1.0),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529, 1.0),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529, 1.0),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529, 1.0),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529, 1.0),
 (0.09019607843137255, 0.7450980392156863, 0.8117647058823529, 1.0)]
[*enumerate(loc)]
[(0, '万泉河'),
 (1, '三元桥'),
 (2, '三里屯'),
 (3, '三里河'),
 (4, '上地'),
 (5, '东四'),
 (6, '东坝'),
 (7, '东城区'),
 (8, '中关村'),
 (9, '丰台区'),
 (10, '五道口'),
 (11, '亚运村'),
 (12, '亦庄'),
 (13, '亮马桥'),
 (14, '八大处'),
 (15, '八角'),
 (16, '北京大学'),
 (17, '北太平庄'),
 (18, '北苑'),
 (19, '十里堡'),
 (20, '华贸'),
 (21, '双井'),
 (22, '和平里'),
 (23, '四惠'),
 (24, '团结湖'),
 (25, '国贸'),
 (26, '大兴区'),
 (27, '大屯'),
 (28, '大山子'),
 (29, '大望路'),
 (30, '太平桥'),
 (31, '太阳宫'),
 (32, '奥运村'),
 (33, '学院路'),
 (34, '安定门'),
 (35, '安贞'),
 (36, '宣武门'),
 (37, '小关'),
 (38, '延庆区'),
 (39, '建国门'),
 (40, '建外大街'),
 (41, '昌平区'),
 (42, '月坛'),
 (43, '望京'),
 (44, '朝外'),
 (45, '朝阳公园'),
 (46, '朝阳区'),
 (47, '朝阳门'),
 (48, '来广营'),
 (49, '永顺'),
 (50, '海淀区'),
 (51, '清河'),
 (52, '潘家园'),
 (53, '燕莎'),
 (54, '百子湾'),
 (55, '知春路'),
 (56, '石佛营'),
 (57, '石景山区'),
 (58, '科技园区'),
 (59, '苏州街'),
 (60, '西三旗'),
 (61, '西二旗'),
 (62, '西北旺'),
 (63, '西城区'),
 (64, '西直门'),
 (65, '西苑'),
 (66, '酒仙桥'),
 (67, '雍和宫')]
df.loc[df.地点=='万泉河',:]
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
705数据分析工程师(可视化方向)一起考教师北京万泉河教育 可视化“五险一金、晋升空间大、弹性工作、扁平管理”经验1-3年本科移动互联网,教育B轮150-500人120001000011000.0
# 绘制气泡图
plt.figure(figsize=(6,4),dpi=100)  # 创建画布,figsize画布的大小,dpi清晰度

colors = [plt.cm.tab10(i/float(len(loc))) for i in range(len(loc))] # 设定每一个气泡的颜色列表

for i,d in enumerate(loc):          # 位置和值
    data = df.loc[df.地点==d,:]     # 如果d=三里屯 则data为三里屯的数据
    if data.shape[0]>6:             # 设定条件:数据的个数大于6行的时候,才划气泡
        plt.scatter(i,data.shape[0] # 画点图的函数plt.scatter,i为x的数据,y=data.shape[0]行数
                    ,c=np.array(colors[i]).reshape(1,-1) # 对应颜色,上文色卡
                    ,s=data.shape[0]*50      # 行数*50 作为气泡的大小。alpha气泡对应底色的对比度
                    ,alpha=.6)               # 绘制气泡图  当气泡之间有重合时,可以设小点
        plt.text(i,data.shape[0],d,fontdict={'size':8,'color':'b'} # 添加文本注释,指气泡中的文字,size为字的大小,color为字的颜色,d为气泡真实值
                 ,horizontalalignment='center'  # 地点文字在气泡水平位置
                 ,verticalalignment='center'
                )  # 添加文本注释
        
# 添加装饰
plt.xticks(fontsize=10) # x轴的刻度标签大小为10
plt.yticks(fontsize=10) # y轴的刻度标签大小为10
plt.xlim(0,70)         # 设置x轴的刻度范围
plt.ylim(0,100)        # 设置y轴的刻度范围
plt.title("北京市不同区所需数据分析师数量", fontsize=12) # 设置图片标题,fontsize标题的大小
plt.legend() # 显示图例
plt.show();
No handles with labels found to put in legend.

请添加图片描述

df_beijing.行业.value_counts()[:10]
金融           46
文娱丨内容        43
移动互联网        36
移动互联网,金融     29
消费生活         29
电商           17
房产家居         17
教育           16
数据服务         15
汽车丨出行        14
Name: 行业, dtype: int64
df.行业.str.contains('移动互联网').sum()
df.行业.str.contains('电商').sum()
237
# 统计移动互联网公司数量
df_beijing[df_beijing.行业.str.contains('移动互联网')].shape
(151, 14)
# 统计房地产公司数量
df_beijing[df_beijing.行业.str.contains('房')].shape
(17, 14)
# 统计金融公司数量
df_beijing[df_beijing.行业.str.contains('金融')].shape
(87, 14)
df.岗位技能
0       大数据 移动互联网 Hive Hadoop Spark
1                           SQL 数据库
2                     SPSS 数据运营 数据库
3            大数据 金融 MySQL Oracle 算法
4                          数据分析 数据库
                   ...             
1633                       大数据 数据分析
1634                      移动互联网 大数据
1635                        市场 数据分析
1636          架构师 Python 爬虫工程师 机器学习
1637                      数据挖掘 数据分析
Name: 岗位技能, Length: 1609, dtype: object

13.绘制岗位技能词云

了解一下,数据分析这个行业,对什么技能要求最多

# 把岗位技能拼接到一起
s = df.岗位技能.str.cat(sep=" ")
work_str = df.岗位技能.str.cat(sep=" ") # 字符串的方法,将岗位技能拼接成一个整体的字符串
skill_list = work_str.split(" ")
skill_set = set(skill_list)
res_dict = {}
for i in skill_set:
    res_dict[i] = skill_list.count(i)
sorted(res_dict.items(),key=lambda x:x[1],reverse=True)
[('数据分析', 1145),
 ('大数据', 308),
 ('SQL', 279),
 ('电商', 207),
 ('数据运营', 183),
 ('移动互联网', 175),
 ('BI', 167),
 ('数据挖掘', 159),
 ('数据库', 125),
 ('商业', 115),
 ('SPSS', 100),
 ('MySQL', 93),
 ('可视化', 89),
 ('金融', 64),
 ('数据处理', 58),
 ('教育', 48),
 ('游戏', 48),
 ('新零售', 46),
 ('互联网金融', 43),
 ('Hive', 42),
 ('SQLServer', 42),
 ('算法', 40),
 ('广告营销', 33),
 ('风控', 29),
 ('Hadoop', 28),
 ('企业服务', 25),
 ('本地生活', 25),
 ('数据仓库', 25),
 ('增长黑客', 23),
 ('运营', 23),
 ('医疗健康', 21),
 ('ETL', 20),
 ('社交', 17),
 ('分析师', 16),
 ('银行', 16),
 ('市场分析', 14),
 ('视频', 14),
 ('Spark', 14),
 ('数据架构', 13),
 ('房产服务', 12),
 ('汽车', 12),
 ('行业分析', 12),
 ('云计算', 11),
 ('信息安全', 11),
 ('物流', 11),
 ('通信/网络设备', 11),
 ('Java', 11),
 ('工具软件', 10),
 ('其他', 10),
 ('风险分析', 9),
 ('Oracle', 9),
 ('数据库开发', 9),
 ('DBA', 9),
 ('借贷', 8),
 ('旅游', 8),
 ('直播', 7),
 ('分析', 7),
 ('用户增长', 7),
 ('机器学习', 7),
 ('产品', 7),
 ('产品策划', 6),
 ('保险', 6),
 ('营销策略', 6),
 ('用户运营', 5),
 ('媒体', 5),
 ('电商运营', 5),
 ('数据', 5),
 ('弹性工作', 5),
 ('市场竞争分析', 5),
 ('产品运营', 5),
 ('策略设计', 5),
 ('信贷风险管理', 5),
 ('消费者分析', 5),
 ('征信', 5),
 ('滴滴', 5),
 ('审核', 4),
 ('NLP', 4),
 ('Scala', 4),
 ('岗位晋升', 4),
 ('策略运营', 4),
 ('产品设计', 4),
 ('市场', 4),
 ('财务', 3),
 ('项目管理', 3),
 ('Python', 3),
 ('MongoDB', 3),
 ('分类信息', 3),
 ('风险管理', 3),
 ('智能硬件', 3),
 ('行业研究', 3),
 ('建模', 3),
 ('扁平管理', 3),
 ('营销', 3),
 ('内容运营', 3),
 ('效果跟踪', 3),
 ('支付', 3),
 ('SEO', 3),
 ('绩效奖金', 3),
 ('技能培训', 3),
 ('节日礼物', 3),
 ('股票期权', 2),
 ('搜索', 2),
 ('带薪年假', 2),
 ('定期体检', 2),
 ('人工智能', 2),
 ('用户研究', 2),
 ('推广', 2),
 ('内容', 2),
 ('信用产品', 2),
 ('理财', 2),
 ('深度学习', 2),
 ('体育', 2),
 ('需求分析', 2),
 ('架构师', 2),
 ('Redis', 2),
 ('年度旅游', 2),
 ('数据审核', 2),
 ('游戏运营', 2),
 ('网站分析', 2),
 ('基金', 2),
 ('投资/融资', 2),
 ('数字营销', 2),
 ('风险评估', 2),
 ('网店推广', 2),
 ('DB2', 2),
 ('服务器端', 2),
 ('目标管理', 2),
 ('后端', 2),
 ('地图', 1),
 ('资产/项目评估', 1),
 ('安全', 1),
 ('SaaS', 1),
 ('年底双薪', 1),
 ('人力资源', 1),
 ('外企', 1),
 ('售后', 1),
 ('APP推广', 1),
 ('就近租房补贴', 1),
 ('团队建设', 1),
 ('技术支持', 1),
 ('新媒体运营', 1),
 ('管理规范', 1),
 ('天猫运营', 1),
 ('决策能力', 1),
 ('人事', 1),
 ('售前', 1),
 ('市场推广', 1),
 ('数据压缩', 1),
 ('增长黑客(GrowthHacking)', 1),
 ('零食水果供应', 1),
 ('大厨定制三餐', 1),
 ('名企保面试', 1),
 ('区块链', 1),
 ('KPI考核', 1),
 ('战略管理', 1),
 ('解决方案', 1),
 ('会计', 1),
 ('技术管理', 1),
 ('产品经理', 1),
 ('跨境电商', 1),
 ('资信评估', 1),
 ('一手内推信息', 1),
 ('运维', 1),
 ('资产管理', 1),
 ('供应链', 1),
 ('用户', 1),
 ('专项奖金', 1),
 ('交互设计', 1),
 ('产销协调', 1),
 ('证券/期货', 1),
 ('Linux/Unix', 1),
 ('客服', 1),
 ('上市', 1),
 ('精准高效对接', 1),
 ('理财顾问', 1),
 ('猎头专业服务', 1),
 ('互相营销', 1),
 ('领导好', 1),
 ('营销管理', 1),
 ('新闻|出版', 1),
 ('VC', 1),
 ('广告创意', 1),
 ('hadoop', 1),
 ('后台', 1),
 ('PKI', 1),
 ('分布式', 1),
 ('软件开发', 1),
 ('整合营销', 1),
 ('核查', 1),
 ('校对', 1),
 ('淘宝运营', 1),
 ('社会化营销', 1),
 ('尽职调查', 1),
 ('信用管理', 1),
 ('爬虫工程师', 1),
 ('广告协调', 1),
 ('渠道', 1),
 ('成本', 1),
 ('外汇', 1),
 ('HR', 1),
 ('商业产品', 1),
 ('SEM', 1)]
jineng_list = s.split(' ')
jineng_list
['大数据',
 '移动互联网',
 'Hive',
 'Hadoop',
 'Spark',
 'SQL',
 '数据库',
 'SPSS',
 '数据运营',
 '数据库',
 '大数据',
 '金融',
 'MySQL',
 'Oracle',
 '算法',
 '数据分析',
 '数据库',
 '分析师',
 '电商',
 '大数据',
 '数据分析',
 'SQL',
 '数据库',
 '电商',
 '商业',
 '数据分析',
 '专项奖金',
 '带薪年假',
 '弹性工作',
 '管理规范',
 'BI',
 '商业',
 'SQL',
 '数据分析',
 '目标管理',
 'KPI考核',
 '决策能力',
 '战略管理',
 '数据分析',
 '可视化',
 'SQL',
 '电商',
 '企业服务',
 '商业',
 '数据分析',
 '大数据',
 '金融',
 '数据分析',
 '数据分析',
 '新零售',
 '大数据',
 '商业',
 '广告营销',
 '移动互联网',
 '数据分析',
 '数据挖掘',
 'MySQL',
 '大数据',
 '企业服务',
 'SQL',
 '数据分析',
 '金融',
 '大数据',
 '数据分析',
 '数据运营',
 '数据库',
 'SQL',
 '数据分析',
 '大数据',
 '数据分析',
 '数据分析',
 '数据处理',
 'SQLServer',
 '大数据',
 '电商',
 '数据分析',
 '移动互联网',
 '教育',
 '数据分析',
 '大数据',
 '机器学习',
 '数据挖掘',
 '大数据',
 '金融',
 '数据分析',
 '数据处理',
 '算法',
 '数据分析',
 '广告营销',
 '企业服务',
 '商业',
 '数据分析',
 'DBA',
 '游戏',
 '数据分析',
 'SQL',
 '社交',
 '大数据',
 'BI',
 '数据库',
 '增长黑客',
 '数据分析',
 '互联网金融',
 'SQL',
 '数据分析',
 '电商',
 '金融',
 '数据挖掘',
 '数据分析',
 '医疗健康',
 '数据分析',
 'SPSS',
 '金融',
 'SQL',
 '数据库',
 '社交',
 '数据分析',
 '大数据',
 '移动互联网',
 'SQL',
 '数据分析',
 '游戏',
 'SQL',
 'SPSS',
 '数据分析',
 '互联网金融',
 '数据分析',
 'BI',
 '商业',
 '数据分析',
 '信贷风险管理',
 '风控',
 '风险分析',
 '数据分析',
 '数据运营',
 '数据库',
 '新零售',
 '物流',
 '数据分析',
 '电商',
 '移动互联网',
 '数据分析',
 '大数据',
 '数据挖掘',
 '数据分析',
 '大数据',
 '可视化',
 'SPSS',
 '数据分析',
 '电商',
 '本地生活',
 '数据分析',
 '数据库',
 '数据运营',
 '可视化',
 '社交',
 '移动互联网',
 '年底双薪',
 '节日礼物',
 '技能培训',
 '绩效奖金',
 '数据分析',
 '数据分析',
 '大数据',
 '商业',
 'BI',
 '可视化',
 '数据分析',
 '数据库',
 '数据分析',
 'SQL',
 '大数据',
 '数据分析',
 'SPSS',
 '云计算',
 '大数据',
 '数据分析',
 'BI',
 '数据分析',
 'SQL',
 '数据分析',
 'MySQL',
 '数据分析',
 '运营',
 '数据分析',
 '数据挖掘',
 '数据分析',
 'BI',
 '风控',
 '数据分析',
 '移动互联网',
 '数据分析',
 '电商',
 'MySQL',
 '新零售',
 '电商',
 'BI',
 'SQL',
 '数据分析',
 '数据库',
 '电商',
 'BI',
 '数据分析',
 '数据运营',
 'SQL',
 'SQL',
 '数据库',
 '数据运营',
 'SPSS',
 '大数据',
 '征信',
 '数据分析',
 'SPSS',
 '广告营销',
 '数据分析',
 '数字营销',
 '金融',
 '大数据',
 'BI',
 '可视化',
 '数据库',
 '电商',
 '企业服务',
 '可视化',
 'SQL',
 '数据运营',
 '大数据',
 '金融',
 '商业',
 '数据分析',
 '大数据',
 '互联网金融',
 '数据分析',
 '大数据',
 'BI',
 '数据分析',
 '电商',
 '大数据',
 '数据分析',
 'SQL',
 '数据分析',
 '移动互联网',
 '本地生活',
 'BI',
 '数据分析',
 'SQL',
 '数据库',
 '内容',
 'Java',
 '数据分析',
 '数据分析',
 '本地生活',
 '新零售',
 '数据分析',
 '数据运营',
 'BI',
 'SQL',
 '大数据',
 '移动互联网',
 '数据分析',
 '数据分析',
 '数据运营',
 'SQL',
 'SPSS',
 '旅游',
 '大数据',
 'ETL',
 'Hive',
 '数据分析',
 '数据处理',
 '移动互联网',
 '教育',
 '数据分析',
 '数据运营',
 'Spark',
 '大数据',
 '数据分析',
 '新零售',
 '教育',
 '移动互联网',
 '数据分析',
 '数据运营',
 'SQL',
 '电商',
 '新零售',
 '数据分析',
 '数据挖掘',
 '数据分析',
 'Hive',
 'BI',
 '可视化',
 '数据分析',
 'SQL',
 '大数据',
 '其他',
 'ETL',
 'DB2',
 '数据分析',
 '信息安全',
 '机器学习',
 '建模',
 '算法',
 '大数据',
 '数据分析',
 'Hive',
 '风控',
 '数据分析',
 '游戏',
 '大数据',
 'MySQL',
 'Hadoop',
 'Spark',
 '数据分析',
 '银行',
 '借贷',
 '数据分析',
 'SQL',
 '电商',
 '商业',
 'SQL',
 'MySQL',
 '数据挖掘',
 '数据分析',
 '数据分析',
 '电商',
 '数据挖掘',
 '数据分析',
 '数据处理',
 'MySQL',
 '互联网金融',
 '风控',
 '分析师',
 '信用产品',
 '数据分析',
 '数据分析',
 'SQL',
 '旅游',
 '移动互联网',
 '数据分析',
 '数据库',
 '数据分析',
 'SQL',
 '数据运营',
 '金融',
 '商业',
 'BI',
 '可视化',
 '数据分析',
 'SPSS',
 'SQL',
 '数据库',
 '数据分析',
 '数据分析',
 'SPSS',
 '数据分析',
 '数据分析',
 '银行',
 'MySQL',
 '数据分析',
 '风控',
 '信贷风险管理',
 '金融',
 '通信/网络设备',
 'Hive',
 '数据分析',
 '大数据',
 '移动互联网',
 '大数据',
 '数据分析',
 'SQL',
 '电商',
 '移动互联网',
 '数据分析',
 'SQL',
 'BI',
 '数据分析',
 '数据运营',
 '电商',
 '移动互联网',
 '数据分析',
 '企业服务',
 '大数据',
 '数据运营',
 '可视化',
 '数据库',
 '数据分析',
 '数据分析',
 '数据库',
 'SQL',
 '移动互联网',
 '移动互联网',
 '金融',
 '数据分析',
 'SQL',
 '电商',
 '新零售',
 '数据分析',
 '数据分析',
 '数据仓库',
 '数据库开发',
 '电商',
 'BI',
 '数据分析',
 '移动互联网',
 '商业',
 'BI',
 '数据分析',
 'BI',
 '可视化',
 '数据运营',
 '数据分析',
 '数据分析',
 'MySQL',
 'Hadoop',
 '教育',
 '移动互联网',
 'SQL',
 'BI',
 '数据分析',
 '数据架构',
 'BI',
 '可视化',
 '数据分析',
 '数据运营',
 '数据分析',
 'MySQL',
 '游戏',
 '大数据',
 '数据挖掘',
 '数据分析',
 '数据分析',
 '数据库',
 '数据分析',
 '数据运营',
 '大数据',
 '移动互联网',
 '数据分析',
 '大数据',
 '金融',
 '数据分析',
 'SQL',
 'BI',
 '商业',
 'Hadoop',
 'MySQL',
 '数据挖掘',
 '信息安全',
 '数据分析',
 '数据库',
 'SQL',
 '教育',
 '数据分析',
 '数据运营',
 'SQL',
 '大数据',
 '数据分析',
 '数据分析',
 '数据运营',
 '数据库',
 'SQL',
 '大数据',
 '数据分析',
 '数据处理',
 '数据分析',
 '电商',
 '新零售',
 '电商',
 '数据挖掘',
 '数据分析',
 '算法',
 '电商',
 'BI',
 'SPSS',
 '互联网金融',
 'SQLServer',
 '数据分析',
 '数据挖掘',
 'MySQL',
 '大数据',
 '数据分析',
 '数据库',
 'SPSS',
 '数据分析',
 '数据分析',
 'MySQL',
 '数据分析',
 '新零售',
 '数据分析',
 '数据分析',
 '商业',
 '数据分析',
 'SQL',
 '数据分析',
 '电商',
 '医疗健康',
 'MySQL',
 '数据分析',
 'BI',
 '数据分析',
 '数据分析',
 'BI',
 '数据分析',
 '可视化',
 '电商',
 '企业服务',
 'BI',
 '数据分析',
 'SQL',
 '数据运营',
 '电商',
 '大数据',
 '汽车',
 '数据分析',
 'SQL',
 '移动互联网',
 '数据分析',
 '大数据',
 '数据分析',
 '数据分析',
 '数据运营',
 '金融',
 'BI',
 '数据分析',
 '数据运营',
 '商业',
 '互联网金融',
 'SQL',
 '商业',
 '数据分析',
 'SPSS',
 '移动互联网',
 '数据分析',
 '大数据',
 '电商',
 '本地生活',
 '数据分析',
 'BI',
 '商业',
 '数据分析',
 '数据分析',
 '可视化',
 'SQL',
 '数据分析',
 '数据库',
 '电商',
 '社交',
 '数据分析',
 '数据处理',
 '数据分析',
 '本地生活',
 '汽车',
 '数据分析',
 'SQL',
 '商业',
 '商业',
 '数据分析',
 '增长黑客',
 '数据分析',
 'SQL',
 'BI',
 '可视化',
 '数据分析',
 '移动互联网',
 '电商',
 '大数据',
 '电商',
 '数据分析',
 '数据挖掘',
 '数据分析',
 '数据处理',
 '大数据',
 '金融',
 '数据挖掘',
 '数据分析',
 '数据分析',
 'SQL',
 '数据库',
 '电商',
 'SQL',
 '数据分析',
 '可视化',
 '建模',
 '深度学习',
 '机器学习',
 '数据挖掘',
 '银行',
 '数据挖掘',
 '数据分析',
 '数据分析',
 '电商',
 '商业',
 'BI',
 '可视化',
 '数据分析',
 '数据分析',
 '房产服务',
 '移动互联网',
 '可视化',
 '数据分析',
 '数据运营',
 '商业',
 'SQL',
 '数据分析',
 '大数据',
 '数据挖掘',
 'Hadoop',
 '数据分析',
 '大数据',
 '数据分析',
 '数据分析',
 'SQLServer',
 '数据处理',
 '大数据',
 '媒体',
 '数据挖掘',
 '数据分析',
 '游戏',
 '企业服务',
 '数据分析',
 '行业分析',
 '大数据',
 '数据分析',
 'SQL',
 'BI',
 '可视化',
 '数据分析',
 'hadoop',
 '风控',
 '风险管理',
 '风险评估',
 '大数据',
 '数据分析',
 'SQL',
 '数据分析',
 'Hive',
 'MySQL',
 '数据分析',
 '电商',
 '数据分析',
 '旅游',
 '数据分析',
 'SPSS',
 '游戏',
 '数据分析',
 '商业',
 '移动互联网',
 '数据分析',
 '数据运营',
 '移动互联网',
 '数据分析',
 '数据分析',
 '数据分析',
 '金融',
 '数据挖掘',
 '数据分析',
 '数据分析',
 '数据运营',
 '数据分析',
 '风控',
 '策略设计',
 '电商',
 '移动互联网',
 '数据分析',
 '数据挖掘',
 '数据分析',
 '电商',
 '教育',
 '数据分析',
 'MySQL',
 'Redis',
 '大数据',
 'BI',
 '数据分析',
 'SQL',
 '可视化',
 '数据分析',
 'SPSS',
 '新零售',
 '物流',
 '数据分析',
 'Hive',
 '数据处理',
 '数据分析',
 'BI',
 '数据分析',
 '数据库',
 'DBA',
 '大数据',
 '数据挖掘',
 '算法',
 '大数据',
 'MySQL',
 '电商',
 'BI',
 '可视化',
 '数据分析',
 'SQL',
 '移动互联网',
 '增长黑客',
 '数据分析',
 '数据运营',
 '大数据',
 '新零售',
 '数据分析',
 '移动互联网',
 'MySQL',
 '数据分析',
 '大数据',
 '数据分析',
 '数据分析',
 '新零售',
 '电商',
 '数据分析',
 'MySQL',
 '数据仓库',
 '广告创意',
 '广告协调',
 '数据分析',
 '广告营销',
 '数据分析',
 '数据分析',
 '移动互联网',
 '商业',
 '数据分析',
 '增长黑客',
 '可视化',
 '大数据',
 '数据分析',
 '数据分析',
 'SPSS',
 'SQL',
 '数据分析',
 'SQL',
 '数据库',
 '医疗健康',
 '数据分析',
 '大数据',
 '金融',
 '数据分析',
 '移动互联网',
 '媒体',
 '商业',
 '数据分析',
 '银行',
 '数据分析',
 'SPSS',
 '电商',
 '大数据',
 '商业',
 'SQL',
 '数据分析',
 '其他',
 '数据分析',
 '运营',
 '内容运营',
 '新零售',
 '本地生活',
 'BI',
 '数据分析',
 '数据分析',
 '数据分析',
 '市场',
 '游戏',
 'BI',
 '数据分析',
 '教育',
 '电商',
 '大数据',
 '数据分析',
 '后端',
 '服务器端',
 '电商',
 '分析',
 '移动互联网',
 'BI',
 '数据分析',
 '数据库',
 '房产服务',
 '企业服务',
 'BI',
 '可视化',
 '数据库',
 '电商',
 '数据分析',
 'SQL',
 '数据库',
 '数据运营',
 '数据分析',
 '数据分析',
 '移动互联网',
 '风控',
 '游戏',
 '数据分析',
 'SPSS',
 'BI',
 '数据分析',
 '数据分析',
 '大数据',
 '电商',
 '移动互联网',
 '数据分析',
 'BI',
 '增长黑客(GrowthHacking)',
 '数据分析',
 '数据分析',
 '医疗健康',
 '移动互联网',
 '大数据',
 '移动互联网',
 '移动互联网',
 '大数据',
 '数据分析',
 '商业',
 'BI',
 '数据库',
 '视频',
 '产品策划',
 '智能硬件',
 '数据分析',
 'MySQL',
 '数据分析',
 '数据仓库',
 '数据处理',
 '风险分析',
 '风控',
 '移动互联网',
 '大数据',
 '风控',
 '分析师',
 '策略设计',
 '大数据',
 'BI',
 '数据分析',
 'SPSS',
 '金融',
 '算法',
 '数据挖掘',
 '数据分析',
 '数据分析',
 '大数据',
 '数据分析',
 '电商',
 '数据分析',
 'MySQL',
 '数据处理',
 '电商',
 'SQLServer',
 '数据分析',
 '数据分析',
 '数据运营',
 '电商',
 'SPSS',
 '数据分析',
 '数据分析',
 '商业',
 '大数据',
 '算法',
 '数据挖掘',
 '数据分析',
 '大数据',
 '商业',
 'BI',
 '可视化',
 '数据分析',
 '医疗健康',
 '数据分析',
 'BI',
 '游戏',
 '数据分析',
 '数据挖掘',
 '增长黑客',
 'BI',
 '可视化',
 '征信',
 '保险',
 '数据分析',
 'SQL',
 '大数据',
 '数据分析',
 'SPSS',
 '数据分析',
 '市场分析',
 '营销策略',
 '运营',
 'SEM',
 'SEO',
 '数据分析',
 '金融',
 '移动互联网',
 '风控',
 '信用产品',
 '电商',
 '移动互联网',
 '商业',
 'BI',
 '数据分析',
 '数据库',
 '银行',
 '数据分析',
 '教育',
 '数据分析',
 '大数据',
 '教育',
 '数据分析',
 'SPSS',
 '电商',
 '数据挖掘',
 '数据架构',
 '算法',
 '数据分析',
 'SQL',
 '大数据',
 '数据分析',
 '房产服务',
 'BI',
 '数据分析',
 'SQL',
 '运营',
 'BI',
 '商业',
 '可视化',
 '数据分析',
 '广告营销',
 '汽车',
 '营销',
 '数据分析',
 '行业分析',
 '市场分析',
 '目标管理',
 '大数据',
 '数据挖掘',
 '大数据',
 '数据分析',
 '数据挖掘',
 '电商',
 '移动互联网',
 'ETL',
 'Spark',
 '数据仓库',
 '数据分析',
 'Hadoop',
 '数据分析',
 'Hive',
 '大数据',
 '大数据',
 '数据挖掘',
 '数据分析',
 '数据分析',
 '数据分析',
 'SQL',
 '数据分析',
 '数据运营',
 'SPSS',
 '数据分析',
 '电商',
 '移动互联网',
 '数据分析',
 '数据挖掘',
 '数据处理',
 '算法',
 'Hive',
 '数据分析',
 '消费者分析',
 '市场分析',
 '数据挖掘',
 '数据分析',
 '银行',
 '解决方案',
 '新零售',
 '数据分析',
 '电商',
 'SQL',
 '数据分析',
 '风控',
 '数据分析',
 '数据挖掘',
 'NLP',
 '算法',
 'BI',
 '数据分析',
 '电商',
 '移动互联网',
 '数据分析',
 '数据库开发',
 'SQLServer',
 '安全',
 '大数据',
 '数据分析',
 '电商',
 '工具软件',
 '数据分析',
 '用户运营',
 '数据分析',
 '数据分析',
 '数据分析',
 '企业服务',
 '工具软件',
 '数据挖掘',
 '数据架构',
 '数据仓库',
 ...]
jineng_list.count('大数据')
308
# set集合专门用于去重
jineng_set = set(jineng_list)
len(jineng_set)
202
jineng_set.remove('数据分析') 
# 移除数据分析这个技能
len(jineng_set)
201
# 对每一个词进行统计,统计在jineng_list 里面出现了多少次
empty_list = [] # 用于储存统计结果
for i in jineng_set:
    empty_list.append( (i, jineng_list.count(i)))
empty_list
[('地图', 1),
 ('资产/项目评估', 1),
 ('教育', 48),
 ('安全', 1),
 ('股票期权', 2),
 ('SaaS', 1),
 ('用户运营', 5),
 ('Hadoop', 28),
 ('风险分析', 9),
 ('年底双薪', 1),
 ('分析师', 16),
 ('互联网金融', 43),
 ('房产服务', 12),
 ('搜索', 2),
 ('人力资源', 1),
 ('社交', 17),
 ('审核', 4),
 ('财务', 3),
 ('外企', 1),
 ('带薪年假', 2),
 ('市场分析', 14),
 ('银行', 16),
 ('直播', 7),
 ('媒体', 5),
 ('电商运营', 5),
 ('售后', 1),
 ('项目管理', 3),
 ('APP推广', 1),
 ('就近租房补贴', 1),
 ('企业服务', 25),
 ('ETL', 20),
 ('Hive', 42),
 ('定期体检', 2),
 ('SPSS', 100),
 ('团队建设', 1),
 ('数据', 5),
 ('人工智能', 2),
 ('用户研究', 2),
 ('分析', 7),
 ('弹性工作', 5),
 ('NLP', 4),
 ('市场竞争分析', 5),
 ('数据库', 125),
 ('技术支持', 1),
 ('Python', 3),
 ('新媒体运营', 1),
 ('推广', 2),
 ('管理规范', 1),
 ('内容', 2),
 ('MongoDB', 3),
 ('医疗健康', 21),
 ('汽车', 12),
 ('产品策划', 6),
 ('工具软件', 10),
 ('产品运营', 5),
 ('天猫运营', 1),
 ('决策能力', 1),
 ('Scala', 4),
 ('人事', 1),
 ('数据运营', 183),
 ('本地生活', 25),
 ('信用产品', 2),
 ('行业分析', 12),
 ('售前', 1),
 ('市场推广', 1),
 ('数据压缩', 1),
 ('大数据', 308),
 ('增长黑客(GrowthHacking)', 1),
 ('零食水果供应', 1),
 ('大厨定制三餐', 1),
 ('移动互联网', 175),
 ('分类信息', 3),
 ('名企保面试', 1),
 ('保险', 6),
 ('策略设计', 5),
 ('区块链', 1),
 ('KPI考核', 1),
 ('理财', 2),
 ('增长黑客', 23),
 ('战略管理', 1),
 ('解决方案', 1),
 ('数据仓库', 25),
 ('深度学习', 2),
 ('会计', 1),
 ('技术管理', 1),
 ('产品经理', 1),
 ('信贷风险管理', 5),
 ('跨境电商', 1),
 ('Oracle', 9),
 ('数据库开发', 9),
 ('风控', 29),
 ('资信评估', 1),
 ('借贷', 8),
 ('一手内推信息', 1),
 ('运维', 1),
 ('资产管理', 1),
 ('风险管理', 3),
 ('智能硬件', 3),
 ('岗位晋升', 4),
 ('体育', 2),
 ('供应链', 1),
 ('游戏', 48),
 ('用户', 1),
 ('需求分析', 2),
 ('SQL', 279),
 ('架构师', 2),
 ('广告营销', 33),
 ('专项奖金', 1),
 ('行业研究', 3),
 ('交互设计', 1),
 ('旅游', 8),
 ('MySQL', 93),
 ('数据挖掘', 159),
 ('Redis', 2),
 ('建模', 3),
 ('年度旅游', 2),
 ('扁平管理', 3),
 ('产销协调', 1),
 ('算法', 40),
 ('新零售', 46),
 ('DBA', 9),
 ('营销', 3),
 ('用户增长', 7),
 ('证券/期货', 1),
 ('策略运营', 4),
 ('Linux/Unix', 1),
 ('客服', 1),
 ('消费者分析', 5),
 ('上市', 1),
 ('征信', 5),
 ('精准高效对接', 1),
 ('数据审核', 2),
 ('游戏运营', 2),
 ('理财顾问', 1),
 ('网站分析', 2),
 ('视频', 14),
 ('数据处理', 58),
 ('滴滴', 5),
 ('云计算', 11),
 ('内容运营', 3),
 ('猎头专业服务', 1),
 ('机器学习', 7),
 ('互相营销', 1),
 ('产品设计', 4),
 ('领导好', 1),
 ('基金', 2),
 ('Spark', 14),
 ('营销管理', 1),
 ('新闻|出版', 1),
 ('VC', 1),
 ('SQLServer', 42),
 ('广告创意', 1),
 ('市场', 4),
 ('hadoop', 1),
 ('后台', 1),
 ('PKI', 1),
 ('电商', 207),
 ('投资/融资', 2),
 ('数字营销', 2),
 ('效果跟踪', 3),
 ('支付', 3),
 ('信息安全', 11),
 ('风险评估', 2),
 ('分布式', 1),
 ('软件开发', 1),
 ('数据架构', 13),
 ('营销策略', 6),
 ('物流', 11),
 ('SEO', 3),
 ('绩效奖金', 3),
 ('整合营销', 1),
 ('网店推广', 2),
 ('核查', 1),
 ('产品', 7),
 ('校对', 1),
 ('淘宝运营', 1),
 ('社会化营销', 1),
 ('BI', 167),
 ('尽职调查', 1),
 ('信用管理', 1),
 ('其他', 10),
 ('通信/网络设备', 11),
 ('DB2', 2),
 ('爬虫工程师', 1),
 ('服务器端', 2),
 ('广告协调', 1),
 ('运营', 23),
 ('渠道', 1),
 ('目标管理', 2),
 ('成本', 1),
 ('外汇', 1),
 ('可视化', 89),
 ('商业', 115),
 ('技能培训', 3),
 ('HR', 1),
 ('金融', 64),
 ('节日礼物', 3),
 ('商业产品', 1),
 ('后端', 2),
 ('Java', 11),
 ('SEM', 1)]
# 导入词云图的包
from pyecharts.charts import Page, WordCloud
c = (
    WordCloud()   # 生成实例
    .add("岗位技能",empty_list,word_size_range=[20,100],shape="triangle")
    .set_global_opts(title_opts=opts.TitleOpts(title="岗位技能词云图"))
    )
c.render('岗位技能1.html')
'C:\\Users\\Administrator\\Desktop\\python\\机器学习案例汇总\\1.python数据清洗可视化\\岗位技能1.html'

14.对数据做特征处理转换

  1. 数据编码
  2. 数据离散化
  3. 哑变量(One-hot编码)
  4. 数据的标准化 0-1标准化, 普通标准化
  5. 降维(把方差太小的特征删除,PCA压缩降维)

1. 将无法带入模型的特征删除

df.head(2)
岗位名称公司名称城市地点岗位技能公司福利工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
0数据分析师名片全能王上海静安区大数据 移动互联网 Hive Hadoop Spark“免费早晚餐、扁平化管理、免费零食供应”经验1-3年本科移动互联网D轮及以上150-500人200001000015000.0
1数据分析师奇虎360金融上海张江SQL 数据库“发展范围广 薪资高 福利好”经验不限本科金融上市公司500-2000人200001000015000.0
# 把清洗好的数据保存下来
# df.to_csv('data_analysis_clean.csv')
# 生成一个副本,备份,防止数据被破坏
df_copy = df.copy()
df.drop(columns=['公司名称','公司福利'],inplace=True)
df.head(2)
岗位名称城市地点岗位技能工作年限学历要求行业融资人数最高薪资最低薪资平均薪资
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark经验1-3年本科移动互联网D轮及以上150-500人200001000015000.0
1数据分析师上海张江SQL 数据库经验不限本科金融上市公司500-2000人200001000015000.0

2.对分类数据进行编码

df.工作年限.value_counts()
经验3-5年     673
经验1-3年     432
经验5-10年    221
经验不限       178
经验应届毕业生     75
经验1年以下      28
经验10年以上      2
Name: 工作年限, dtype: int64
d = {"经验不限":0,
    '经验应届毕业生':1,
    "经验1年以下":2,
    "经验1-3年":3,
    "经验3-5年":4,
    "经验5-10年":5,
    "经验10年以上":6}
df.工作年限[:5]
0    经验1-3年
1      经验不限
2    经验1-3年
3    经验1-3年
4    经验1-3年
Name: 工作年限, dtype: object
df.工作年限.map(d)[:5]
0    3
1    0
2    3
3    3
4    3
Name: 工作年限, dtype: int64
df['经验编码'] = df.工作年限.map(d)
df.head()
岗位名称城市地点岗位技能工作年限学历要求行业融资人数最高薪资最低薪资平均薪资经验编码
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark经验1-3年本科移动互联网D轮及以上150-500人200001000015000.03
1数据分析师上海张江SQL 数据库经验不限本科金融上市公司500-2000人200001000015000.00
2数据分析上海浦东新区SPSS 数据运营 数据库经验1-3年本科移动互联网,企业服务上市公司2000人以上15000800011500.03
32521BK-数据分析师上海浦东新区大数据 金融 MySQL Oracle 算法经验1-3年本科金融B轮2000人以上260001300019500.03
4数据分析师上海虹桥数据分析 数据库经验1-3年大专移动互联网,电商D轮及以上2000人以上150001000012500.03
# 删除工作年限
df.drop(columns='工作年限',axis=1,inplace=True)
df.head()
岗位名称城市地点岗位技能学历要求行业融资人数最高薪资最低薪资平均薪资经验编码
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark本科移动互联网D轮及以上150-500人200001000015000.03
1数据分析师上海张江SQL 数据库本科金融上市公司500-2000人200001000015000.00
2数据分析上海浦东新区SPSS 数据运营 数据库本科移动互联网,企业服务上市公司2000人以上15000800011500.03
32521BK-数据分析师上海浦东新区大数据 金融 MySQL Oracle 算法本科金融B轮2000人以上260001300019500.03
4数据分析师上海虹桥数据分析 数据库大专移动互联网,电商D轮及以上2000人以上150001000012500.03

15.练习

把公司规模进行编码(即人数)

df.人数.values
array(['150-500人', '500-2000人', '2000人以上', ..., '500-2000人', '500-2000人',
       '2000人以上'], dtype=object)
# 去除空格
df['人数'] = df['人数'].apply(lambda x: x.strip())
df.人数.values
array(['150-500人', '500-2000人', '2000人以上', ..., '500-2000人', '500-2000人',
       '2000人以上'], dtype=object)
df.人数.value_counts()
2000人以上      596
500-2000人    364
150-500人     326
50-150人      219
15-50人        86
少于15人         18
Name: 人数, dtype: int64
d1 = {"少于15人":0,
    '15-50人':1,
    "50-150人":2,
    "150-500人":3,
    "500-2000人":4,
    "2000人以上":5}
df['公司规模'] = df.人数.map(d1)
# 删除人数这一列
del df['人数']
df.head()
岗位名称城市地点岗位技能学历要求行业融资最高薪资最低薪资平均薪资经验编码公司规模
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark本科移动互联网D轮及以上200001000015000.033
1数据分析师上海张江SQL 数据库本科金融上市公司200001000015000.004
2数据分析上海浦东新区SPSS 数据运营 数据库本科移动互联网,企业服务上市公司15000800011500.035
32521BK-数据分析师上海浦东新区大数据 金融 MySQL Oracle 算法本科金融B轮260001300019500.035
4数据分析师上海虹桥数据分析 数据库大专移动互联网,电商D轮及以上150001000012500.035

1. 使用sklearn进行编码

from sklearn import preprocessing 
encoder = preprocessing.LabelEncoder()
encoder.fit_transform(df.学历要求.values)
array([3, 3, 3, ..., 3, 3, 3])
#  编码顺序
encoder.classes_
# 编码顺序按照首字母排序
array(['不限', '博士', '大专', '本科', '硕士'], dtype=object)
df['学历编码'] = encoder.fit_transform(df.学历要求.values)
df.学历要求.value_counts()
本科    1332
不限     109
大专      89
硕士      78
博士       1
Name: 学历要求, dtype: int64
df.学历编码.value_counts()
3    1332
0     109
2      89
4      78
1       1
Name: 学历编码, dtype: int64

2. 分类变量的独热编码

import sklearn
sklearn.__version__
'0.23.1'
from sklearn.preprocessing import OneHotEncoder
onehot = OneHotEncoder()
df.学历要求.values.reshape(1,-1)
array([['本科', '本科', '本科', ..., '本科', '本科', '本科']], dtype=object)
df.学历要求.values.reshape(-1,1)
array([['本科'],
       ['本科'],
       ['本科'],
       ...,
       ['本科'],
       ['本科'],
       ['本科']], dtype=object)
df.学历要求.isnull().sum()
0
df.学历要求.value_counts()
本科    1332
不限     109
大专      89
硕士      78
博士       1
Name: 学历要求, dtype: int64
onehot.fit_transform(df.学历要求.values.reshape(-1,1)).toarray()
array([[0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       ...,
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.]])
# 对数据进行转换,toarray()转换成数组
data = onehot.fit_transform(df['学历要求'].values.reshape(-1,1)).toarray()
data
array([[0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       ...,
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.]])
# 第一步: 先转换成DataFrame
temp = pd.DataFrame(data)
temp
01234
00.00.00.01.00.0
10.00.00.01.00.0
20.00.00.01.00.0
30.00.00.01.00.0
40.00.01.00.00.0
..................
16040.00.01.00.00.0
16050.00.00.00.01.0
16060.00.00.01.00.0
16070.00.00.01.00.0
16080.00.00.01.00.0

1609 rows × 5 columns

# 拼接两个数据
pd.concat([df,temp],axis=1).head()
岗位名称城市地点岗位技能学历要求行业融资最高薪资最低薪资平均薪资经验编码公司规模学历编码01234
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark本科移动互联网D轮及以上20000.010000.015000.03.03.03.00.00.00.01.00.0
1数据分析师上海张江SQL 数据库本科金融上市公司20000.010000.015000.00.04.03.00.00.00.01.00.0
2数据分析上海浦东新区SPSS 数据运营 数据库本科移动互联网,企业服务上市公司15000.08000.011500.03.05.03.00.00.00.01.00.0
32521BK-数据分析师上海浦东新区大数据 金融 MySQL Oracle 算法本科金融B轮26000.013000.019500.03.05.03.00.00.00.01.00.0
4数据分析师上海虹桥数据分析 数据库大专移动互联网,电商D轮及以上15000.010000.012500.03.05.02.00.00.01.00.00.0
df[['学历要求','行业']].info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1609 entries, 0 to 1637
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   学历要求    1609 non-null   object
 1   行业      1609 non-null   object
dtypes: object(2)
memory usage: 117.7+ KB
onehot.fit_transform(df[['学历要求','行业']]).toarray().shape
(1609, 121)
df.head()
岗位名称城市地点岗位技能学历要求行业融资最高薪资最低薪资平均薪资经验编码公司规模学历编码
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark本科移动互联网D轮及以上200001000015000.0333
1数据分析师上海张江SQL 数据库本科金融上市公司200001000015000.0043
2数据分析上海浦东新区SPSS 数据运营 数据库本科移动互联网,企业服务上市公司15000800011500.0353
32521BK-数据分析师上海浦东新区大数据 金融 MySQL Oracle 算法本科金融B轮260001300019500.0353
4数据分析师上海虹桥数据分析 数据库大专移动互联网,电商D轮及以上150001000012500.0352
len(df.岗位技能[0].split(' '))
5
df['技能数'] = df.岗位技能.str.split(' ')
df1 = df[~df['技能数'].isnull()]
df1.loc[:,'技能数'] = df1.技能数.apply(lambda x:len(x))
df1.head()
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:966: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  self.obj[item] = s
岗位名称城市地点岗位技能学历要求行业融资最高薪资最低薪资平均薪资经验编码公司规模学历编码技能数
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark本科移动互联网D轮及以上200001000015000.03335
1数据分析师上海张江SQL 数据库本科金融上市公司200001000015000.00432
2数据分析上海浦东新区SPSS 数据运营 数据库本科移动互联网,企业服务上市公司15000800011500.03533
32521BK-数据分析师上海浦东新区大数据 金融 MySQL Oracle 算法本科金融B轮260001300019500.03535
4数据分析师上海虹桥数据分析 数据库大专移动互联网,电商D轮及以上150001000012500.03522
df.融资.value_counts()
上市公司      399
不需要融资     376
D轮及以上     188
B轮        169
C轮        167
A轮        145
未融资       137
天使轮        28
Name: 融资, dtype: int64
encoder1 = preprocessing.LabelEncoder()
df1.loc[:,'融资状况'] = encoder1.fit_transform(df1.融资.values)
df1.head()
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:845: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  self.obj[key] = _infer_fill_value(value)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:966: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  self.obj[item] = s
岗位名称城市地点岗位技能学历要求行业融资最高薪资最低薪资平均薪资经验编码公司规模学历编码技能数融资状况
0数据分析师上海静安区大数据 移动互联网 Hive Hadoop Spark本科移动互联网D轮及以上200001000015000.033353
1数据分析师上海张江SQL 数据库本科金融上市公司200001000015000.004324
2数据分析上海浦东新区SPSS 数据运营 数据库本科移动互联网,企业服务上市公司15000800011500.035334
32521BK-数据分析师上海浦东新区大数据 金融 MySQL Oracle 算法本科金融B轮260001300019500.035351
4数据分析师上海虹桥数据分析 数据库大专移动互联网,电商D轮及以上150001000012500.035223

3 保存结果

# 删除已经处理好的列
df2 = df1.drop(columns=['岗位技能','学历要求','融资'],axis=1)
# 保存表
df2.to_csv('lagou_data_clean.csv',encoding='utf-8')

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值