1.導入資料 # 導入相應的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df = pd.read_csv('data/2.lagou/lagou_recruitment.csv')
df.head()
Unnamed: 0 崗位名稱 公司名稱 城市 地點 薪資 基本要求 公司狀況 崗位技能 公司福利 資料分析師 名片全能王 上海 [靜安區] 10k-20k 10k-20k 經驗1-3年 / 大學 移動網際網路 / D輪及以上 / 150-500人 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 1 1 資料分析師 奇虎360金融 上海 [張江] 10k-20k 10k-20k 經驗不限 / 大學 金融 / 上市公司 / 500-2000人 SQL 資料庫 “發展範圍廣 薪資高 福利好” 2 2 資料分析 51JOB 上海 [浦東新區] 8k-15k 8k-15k 經驗1-3年 / 大學 移動網際網路,企業服務 / 上市公司 / 2000人以上 SPSS 資料營運 資料庫 “五險一金 周末雙休 年終福利” 3 3 2521BK-資料分析師 陸金所 上海 [浦東新區] 13k-26k 13k-26k 經驗1-3年 / 大學 金融 / B輪 / 2000人以上 大資料 金融 MySQL Oracle 算法 “五險一金,節日福利,帶薪年假” 4 4 資料分析師 天天拍車 上海 [虹橋] 10k-15k 10k-15k 經驗1-3年 / 大專 移動網際網路,電商 / D輪及以上 / 2000人以上 資料分析 資料庫 “五險一金,帶薪年假,做五休二”
2.把沒有用的unnamed删除掉 # 方法一:删除
df.drop(columns="Unnamed: 0",inplace=True)
df.head(2)
崗位名稱 公司名稱 城市 地點 薪資 基本要求 公司狀況 崗位技能 公司福利 資料分析師 名片全能王 上海 [靜安區] 10k-20k 10k-20k 經驗1-3年 / 大學 移動網際網路 / D輪及以上 / 150-500人 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 1 資料分析師 奇虎360金融 上海 [張江] 10k-20k 10k-20k 經驗不限 / 大學 金融 / 上市公司 / 500-2000人 SQL 資料庫 “發展範圍廣 薪資高 福利好”
#方法二:導入的時候,将其作為索引
pd.read_csv('data/2.lagou/lagou_recruitment.csv',index_col=0).head(2)
崗位名稱 公司名稱 城市 地點 薪資 基本要求 公司狀況 崗位技能 公司福利 資料分析師 名片全能王 上海 [靜安區] 10k-20k 10k-20k 經驗1-3年 / 大學 移動網際網路 / D輪及以上 / 150-500人 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 1 資料分析師 奇虎360金融 上海 [張江] 10k-20k 10k-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
['北京',
'上海',
'深圳',
'廣州',
'杭州',
'成都',
'武漢',
'南京',
'廈門',
'佛山',
'長沙',
'蘇州',
'重慶',
'天津',
'西安',
'福州']
# 建立執行個體
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
dict_items([('北京', 450), ('上海', 405), ('深圳', 291), ('廣州', 170), ('杭州', 128), ('成都', 43), ('武漢', 42), ('南京', 26), ('廈門', 16), ('佛山', 13), ('長沙', 12), ('蘇州', 10), ('重慶', 9), ('天津', 8), ('西安', 8), ('福州', 7)])
[('北京', 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.将公司要求拆分成兩列:工作年限、學曆要求 崗位名稱 公司名稱 城市 地點 薪資 基本要求 公司狀況 崗位技能 公司福利 資料分析師 名片全能王 上海 [靜安區] 10k-20k 10k-20k 經驗1-3年 / 大學 移動網際網路 / D輪及以上 / 150-500人 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 1 資料分析師 奇虎360金融 上海 [張江] 10k-20k 10k-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()
崗位名稱 公司名稱 城市 地點 薪資 基本要求 公司狀況 崗位技能 公司福利 工作年限 學曆要求 資料分析師 名片全能王 上海 [靜安區] 10k-20k 10k-20k 經驗1-3年 / 大學 移動網際網路 / D輪及以上 / 150-500人 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 10k-20k 經驗1-3年 大學 1 資料分析師 奇虎360金融 上海 [張江] 10k-20k 10k-20k 經驗不限 / 大學 金融 / 上市公司 / 500-2000人 SQL 資料庫 “發展範圍廣 薪資高 福利好” 10k-20k 經驗不限 大學 2 資料分析 51JOB 上海 [浦東新區] 8k-15k 8k-15k 經驗1-3年 / 大學 移動網際網路,企業服務 / 上市公司 / 2000人以上 SPSS 資料營運 資料庫 “五險一金 周末雙休 年終福利” 8k-15k 經驗1-3年 大學 3 2521BK-資料分析師 陸金所 上海 [浦東新區] 13k-26k 13k-26k 經驗1-3年 / 大學 金融 / B輪 / 2000人以上 大資料 金融 MySQL Oracle 算法 “五險一金,節日福利,帶薪年假” 13k-26k 經驗1-3年 大學 4 資料分析師 天天拍車 上海 [虹橋] 10k-15k 10k-15k 經驗1-3年 / 大專 移動網際網路,電商 / D輪及以上 / 2000人以上 資料分析 資料庫 “五險一金,帶薪年假,做五休二” 10k-15k 經驗1-3年 大專
# 改變錯誤的列名,字典的key是現在的列名, 字典的value 是要改變的列名
df.rename(columns={'基本要求':'公司要求'},inplace=True)
df.head(2)
崗位名稱 公司名稱 城市 地點 薪資 公司要求 公司狀況 崗位技能 公司福利 工作年限 學曆要求 資料分析師 名片全能王 上海 [靜安區] 10k-20k 10k-20k 經驗1-3年 / 大學 移動網際網路 / D輪及以上 / 150-500人 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 10k-20k 經驗1-3年 大學 1 資料分析師 奇虎360金融 上海 [張江] 10k-20k 10k-20k 經驗不限 / 大學 金融 / 上市公司 / 500-2000人 SQL 資料庫 “發展範圍廣 薪資高 福利好” 10k-20k 經驗不限 大學
'大學'
# 對公司要求這一列, 使用空格進行分割,分割結果為四列,命名為 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)
崗位名稱 公司名稱 城市 地點 薪資 公司狀況 崗位技能 公司福利 工作年限 學曆要求 資料分析師 名片全能王 上海 [靜安區] 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['公司狀況']
崗位名稱 公司名稱 城市 地點 薪資 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 資料分析師 名片全能王 上海 [靜安區] 10k-20k 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 1 資料分析師 奇虎360金融 上海 [張江] 10k-20k SQL 資料庫 “發展範圍廣 薪資高 福利好” 經驗不限 大學 金融 上市公司 500-2000人 2 資料分析 51JOB 上海 [浦東新區] 8k-15k SPSS 資料營運 資料庫 “五險一金 周末雙休 年終福利” 經驗1-3年 大學 移動網際網路,企業服務 上市公司 2000人以上 3 2521BK-資料分析師 陸金所 上海 [浦東新區] 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)
崗位名稱 公司名稱 城市 地點 薪資 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 資料分析師 名片全能王 上海 靜安區 10k-20k 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 1 資料分析師 奇虎360金融 上海 張江 10k-20k SQL 資料庫 “發展範圍廣 薪資高 福利好” 經驗不限 大學 金融 上市公司 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
崗位名稱 公司名稱 城市 地點 薪資 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 資料分析師 名片全能王 上海 靜安區 10k-20k 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 20000 10000 1 資料分析師 奇虎360金融 上海 張江 10k-20k SQL 資料庫 “發展範圍廣 薪資高 福利好” 經驗不限 大學 金融 上市公司 500-2000人 20000 10000
# 把薪資改變成整數型
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
崗位名稱 公司名稱 城市 地點 薪資 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 資料分析師 名片全能王 上海 靜安區 10k-20k 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 20000 10000 1 資料分析師 奇虎360金融 上海 張江 10k-20k SQL 資料庫 “發展範圍廣 薪資高 福利好” 經驗不限 大學 金融 上市公司 500-2000人 20000 10000
1. 生成一列平均薪資列 df['平均薪資'] = (df.最低薪資 + df.最高薪資) / 2
df.pop('薪資')
df.head(2)
崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 資料分析師 名片全能王 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 20000 10000 15000.0 1 資料分析師 奇虎360金融 上海 張江 SQL 資料庫 “發展範圍廣 薪資高 福利好” 經驗不限 大學 金融 上市公司 500-2000人 20000 10000 15000.0
2. 看一下行業平均薪資 最高薪資 最低薪資 平均薪資 count 1609.000000 1609.000000 1609.000000 mean 24277.812306 14047.855811 19162.834058 std 12365.415226 7020.373474 9572.235760 min 1000.000000 1000.000000 1000.000000 25% 15000.000000 10000.000000 12500.000000 50% 25000.000000 15000.000000 20000.000000 75% 30000.000000 18000.000000 24000.000000 max 100000.000000 60000.000000 75000.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()
最高薪資 最低薪資 平均薪資 城市 上海 25545.679012 14676.543210 20111.111111 佛山 25076.923077 14000.000000 19538.461538 北京 27649.411765 15957.647059 21803.529412 南京 17653.846154 10615.384615 14134.615385 廈門 22062.500000 12437.500000 17250.000000 天津 12750.000000 8250.000000 10500.000000 廣州 19841.176471 11670.588235 15755.882353 成都 15000.000000 8837.209302 11918.604651 杭州 22906.250000 13656.250000 18281.250000 武漢 17476.190476 10190.476190 13833.333333 深圳 25756.097561 14714.285714 20235.191638 福州 15000.000000 8428.571429 11714.285714 蘇州 18400.000000 10700.000000 14550.000000 西安 11500.000000 7375.000000 9437.500000 重慶 13888.888889 7888.888889 10888.888889 長沙 12000.000000 7916.666667 9958.333333
最高薪資 最低薪資 平均薪資 城市 上海 25545.679012 14676.543210 20111.111111 佛山 25076.923077 14000.000000 19538.461538 北京 27649.411765 15957.647059 21803.529412 南京 17653.846154 10615.384615 14134.615385 廈門 22062.500000 12437.500000 17250.000000
city_salary.sort_values('平均薪資',ascending=False)
# 對平均薪資進行降序排列
最高薪資 最低薪資 平均薪資 城市 北京 27649.411765 15957.647059 21803.529412 深圳 25756.097561 14714.285714 20235.191638 上海 25545.679012 14676.543210 20111.111111 佛山 25076.923077 14000.000000 19538.461538 杭州 22906.250000 13656.250000 18281.250000 廈門 22062.500000 12437.500000 17250.000000 廣州 19841.176471 11670.588235 15755.882353 蘇州 18400.000000 10700.000000 14550.000000 南京 17653.846154 10615.384615 14134.615385 武漢 17476.190476 10190.476190 13833.333333 成都 15000.000000 8837.209302 11918.604651 福州 15000.000000 8428.571429 11714.285714 重慶 13888.888889 7888.888889 10888.888889 天津 12750.000000 8250.000000 10500.000000 長沙 12000.000000 7916.666667 9958.333333 西安 11500.000000 7375.000000 9437.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'])
max min median mean 城市 上海 75000.0 1500.0 20000.0 20111.111111 佛山 37500.0 10500.0 17500.0 19538.461538 北京 65000.0 3000.0 22000.0 21803.529412 南京 45000.0 2500.0 12500.0 14134.615385 廈門 31500.0 7000.0 15000.0 17250.000000 天津 17500.0 6000.0 9750.0 10500.000000 廣州 40000.0 2500.0 15000.0 15755.882353 成都 30000.0 2500.0 11500.0 11918.604651 杭州 70000.0 3000.0 17000.0 18281.250000 武漢 30000.0 2500.0 12500.0 13833.333333 深圳 65000.0 1000.0 20000.0 20235.191638 福州 20000.0 7000.0 11500.0 11714.285714 蘇州 30000.0 7500.0 11750.0 14550.000000 西安 17500.0 4000.0 8000.0 9437.500000 重慶 22500.0 5000.0 8000.0 10888.888889 長沙 14000.0 5000.0 10750.0 9958.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'
418 14000.0
419 18000.0
Name: 平均薪資, dtype: float64
[[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]['平均薪資'])
# 利用布爾序列提取出該城市的薪資資料,并把資料添加到清單中
北京
深圳
上海
佛山
杭州
廈門
廣州
蘇州
南京
武漢
成都
福州
重慶
天津
長沙
西安
16
[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]
[[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]]
(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. 練習: 根據工作年限的不同,統計平均薪資的箱線圖 崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 資料分析師 名片全能王 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 20000 10000 15000.0 1 資料分析師 奇虎360金融 上海 張江 SQL 資料庫 “發展範圍廣 薪資高 福利好” 經驗不限 大學 金融 上市公司 500-2000人 20000 10000 15000.0
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'
經驗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'
崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 1241 商業資料分析總監 網易 杭州 長河 電商 移動網際網路 SQLServer Hive 資料分析 算法 “跨境電商,薪酬有競争力” 經驗10年以上 大學 電商 上市公司 2000人以上 80000 60000 70000.0 1414 4721FP-智慧法律-資深資料分析專家 平安智慧城 深圳 南山區 資料分析 “五險一金,績效獎金,高溫補貼,定期體檢” 經驗10年以上 大學 移動網際網路 不需要融資 2000人以上 30000 15000 22500.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
城市
佛山 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.])
0 False
1 False
2 False
3 False
4 False
...
1633 False
1634 False
1635 False
1636 False
1637 False
Length: 1609, dtype: bool
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
1
崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 367 進階資料分析總監 靖琪 上海 虹口區 電商 工具軟體 “公司實力強,成長空間大,福利待遇好” 經驗5-10年 大學 移動網際網路 天使輪 50-150人 100000 50000 75000.0
[('佛山', 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人以上 13000 8000 10500.0 1608 資料分析師 邁科網絡 蘇州 工業園區 通信/網絡裝置 “公司核心技術崗位,發展空間大” 經驗1年以下 大學 資料服務 上市公司 15-50人 10000 5000 7500.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)
崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 409 資料分析師 美的電商 佛山 順德區 電商 大資料 資料分析 資料營運 SPSS 商業 “不打卡 團隊年輕 上司nice” 經驗3-5年 大學 電商 上市公司 2000人以上 13000 8000 10500.0 1608 資料分析師 邁科網絡 蘇州 工業園區 通信/網絡裝置 “公司核心技術崗位,發展空間大” 經驗1年以下 大學 資料服務 上市公司 15-50人 10000 5000 7500.0 1596 資料分析師 戎易商智(北京)科技有限公司 福州 五四路 移動網際網路 SQL 資料庫 資料分析 SPSS “周末雙休,五險一金,員工旅遊,生日福利” 經驗1-3年 大學 移動網際網路,資料服務 未融資 15-50人 8000 6000 7000.0 906 軟體開發工程師(資料分析) 福建天聞 廈門 集美區 大資料 “五險一金、帶薪年假” 經驗1-3年 大學 資料服務,教育 未融資 15-50人 8000 6000 7000.0 916 金融資料分析師 投中資訊 天津 濱海新區 VC 資料分析 行業研究 分析師 “全勤獎 飯補 車補 下午茶 年終獎” 經驗不限 大學 金融 D輪及以上 150-500人 8000 4000 6000.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人以上 65000 40000 52500.0 364 安全資料分析平台進階開發工程師 上海瑞阙文化發展有限公司 上海 黃浦區 安全 “彈性工作,提供晚餐” 經驗1-3年 大學 移動網際網路,金融 不需要融資 150-500人 80000 40000 60000.0 367 進階資料分析總監 靖琪 上海 虹口區 電商 工具軟體 “公司實力強,成長空間大,福利待遇好” 經驗5-10年 大學 移動網際網路 天使輪 50-150人 100000 50000 75000.0 744 資料分析師/資料科學家 滴滴 北京 西北旺 Hadoop 資料挖掘 MySQL “資料精确,老大nb,彙報線簡單” 經驗5-10年 大學 汽車丨出行 不需要融資 2000人以上 60000 40000 50000.0 762 資料分析總監 發現旅行 北京 朝陽區 資料分析 “扁平化管理,氛圍超好,地位重要,待遇優厚” 經驗5-10年 大學 旅遊 B輪 50-150人 80000 50000 65000.0 1206 資料分析總監 多準大資料 杭州 西溪 大資料 電商 資料分析 “繳納五險一金,帶薪年假,出國旅遊,教育訓練” 經驗5-10年 大學 資料服務,廣告營銷 A輪 50-150人 50000 40000 45000.0 1241 商業資料分析總監 網易 杭州 長河 電商 移動網際網路 SQLServer Hive 資料分析 算法 “跨境電商,薪酬有競争力” 經驗10年以上 大學 電商 上市公司 2000人以上 80000 60000 70000.0 1450 資料分析總監 深圳白騎士大資料有限公司 深圳 科技園 金融 算法 資料挖掘 資料分析 “平台好,創新型,發展迅速,股權期權” 經驗5-10年 碩士 企業服務,金融 A輪 50-150人 65000 38000 51500.0 1455 資深資料分析師(J11772) 貨拉拉 深圳 上梅林 BI 商業 資料分析 “發展空間大” 經驗5-10年 大學 移動網際網路,消費生活 C輪 2000人以上 70000 50000 60000.0 1504 商業資料分析師 (003969) vivo 深圳 寶安區 移動網際網路 “彈性工作,股票期權,大資料平台 千萬使用者” 經驗3-5年 大學 硬體 未融資 2000人以上 80000 50000 65000.0 1512 資料分析進階工程師 騰訊 深圳 前海 資料分析 Hadoop Spark 資料挖掘 “騰訊平台 福利待遇好 技術成長” 經驗3-5年 大學 社交 上市公司 2000人以上 70000 40000 55000.0 1514 商業資料分析師 vivo 深圳 寶安區 移動網際網路 “股票期權,精英團隊,彈性工作” 經驗3-5年 大學 硬體 未融資 2000人以上 80000 50000 65000.0 1538 資料分析總監 萬順赢 深圳 科技園 醫療健康 工具軟體 “中國知名企業,福利好” 經驗5-10年 碩士 移動網際網路,金融 未融資 150-500人 80000 45000 62500.0
a = df.平均薪資.mean() + 3 * df.平均薪資.std()
a
47879.54133696899
b = df.平均薪資.mean() - 3 * df.平均薪資.std()
b
-9553.873220126236
崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 147 資料分析與模組化專家 招商銀行信用卡中心 上海 浦東新區 資料分析 資料架構 “職位晉升 福利待遇好 工作氛圍好” 經驗5-10年 大學 金融 上市公司 2000人以上 65000 40000 52500.0 201 資料分析leader 上海騰聘 上海 張江 移動網際網路 “發展空間,薪資給力,期權” 經驗5-10年 大學 移動網際網路,資料服務 B輪 50-150人 65000 35000 50000.0 364 安全資料分析平台進階開發工程師 上海瑞阙文化發展有限公司 上海 黃浦區 安全 “彈性工作,提供晚餐” 經驗1-3年 大學 移動網際網路,金融 不需要融資 150-500人 80000 40000 60000.0 367 進階資料分析總監 靖琪 上海 虹口區 電商 工具軟體 “公司實力強,成長空間大,福利待遇好” 經驗5-10年 大學 移動網際網路 天使輪 50-150人 100000 50000 75000.0 744 資料分析師/資料科學家 滴滴 北京 西北旺 Hadoop 資料挖掘 MySQL “資料精确,老大nb,彙報線簡單” 經驗5-10年 大學 汽車丨出行 不需要融資 2000人以上 60000 40000 50000.0 762 資料分析總監 發現旅行 北京 朝陽區 資料分析 “扁平化管理,氛圍超好,地位重要,待遇優厚” 經驗5-10年 大學 旅遊 B輪 50-150人 80000 50000 65000.0 1241 商業資料分析總監 網易 杭州 長河 電商 移動網際網路 SQLServer Hive 資料分析 算法 “跨境電商,薪酬有競争力” 經驗10年以上 大學 電商 上市公司 2000人以上 80000 60000 70000.0 1450 資料分析總監 深圳白騎士大資料有限公司 深圳 科技園 金融 算法 資料挖掘 資料分析 “平台好,創新型,發展迅速,股權期權” 經驗5-10年 碩士 企業服務,金融 A輪 50-150人 65000 38000 51500.0 1455 資深資料分析師(J11772) 貨拉拉 深圳 上梅林 BI 商業 資料分析 “發展空間大” 經驗5-10年 大學 移動網際網路,消費生活 C輪 2000人以上 70000 50000 60000.0 1466 資料分析專家 位元組跳動 深圳 南山區 資料分析 “扁平管理,過億使用者,職業大牛” 經驗不限 大學 文娛丨内容 C輪 2000人以上 70000 35000 52500.0 1504 商業資料分析師 (003969) vivo 深圳 寶安區 移動網際網路 “彈性工作,股票期權,大資料平台 千萬使用者” 經驗3-5年 大學 硬體 未融資 2000人以上 80000 50000 65000.0 1512 資料分析進階工程師 騰訊 深圳 前海 資料分析 Hadoop Spark 資料挖掘 “騰訊平台 福利待遇好 技術成長” 經驗3-5年 大學 社交 上市公司 2000人以上 70000 40000 55000.0 1514 商業資料分析師 vivo 深圳 寶安區 移動網際網路 “股票期權,精英團隊,彈性工作” 經驗3-5年 大學 硬體 未融資 2000人以上 80000 50000 65000.0 1538 資料分析總監 萬順赢 深圳 科技園 醫療健康 工具軟體 “中國知名企業,福利好” 經驗5-10年 碩士 移動網際網路,金融 未融資 150-500人 80000 45000 62500.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人以上 60000 40000 50000.0 762 資料分析總監 發現旅行 北京 朝陽區 資料分析 “扁平化管理,氛圍超好,地位重要,待遇優厚” 經驗5-10年 大學 旅遊 B輪 50-150人 80000 50000 65000.0
崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 744 資料分析師/資料科學家 滴滴 北京 西北旺 Hadoop 資料挖掘 MySQL “資料精确,老大nb,彙報線簡單” 經驗5-10年 大學 汽車丨出行 不需要融資 2000人以上 60000 40000 50000.0 762 資料分析總監 發現旅行 北京 朝陽區 資料分析 “扁平化管理,氛圍超好,地位重要,待遇優厚” 經驗5-10年 大學 旅遊 B輪 50-150人 80000 50000 65000.0
10. 根據學曆統計薪資 大學 1332
不限 109
大專 89
碩士 78
博士 1
Name: 學曆要求, dtype: int64
# 學曆分組統計薪資
df.groupby('學曆要求').mean().sort_values(by='平均薪資',ascending=False)
最高薪資 最低薪資 平均薪資 學曆要求 博士 60000.000000 35000.000000 47500.000000 碩士 27474.358974 15692.307692 21583.333333 大學 24875.375375 14390.390390 19632.882883 不限 22807.339450 13146.788991 17977.064220 大專 13932.584270 8348.314607 11140.449438
12.單獨提取出北京的資料進行分析 # 将北京的資料過濾出來, 使用.copy建立成副本
df_beijing = df[df.城市 == "北京"].copy()
朝陽區 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)]
[(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, '雍和宮')]
崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 705 資料分析工程師(可視化方向) 一起考教師 北京 萬泉河 教育 可視化 “五險一金、晉升空間大、彈性工作、扁平管理” 經驗1-3年 大學 移動網際網路,教育 B輪 150-500人 12000 10000 11000.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.
資料清洗(一):拉勾網資料分析案例 金融 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',
'安全',
'大資料',
'資料分析',
'電商',
'工具軟體',
'資料分析',
'使用者營運',
'資料分析',
'資料分析',
'資料分析',
'企業服務',
'工具軟體',
'資料挖掘',
'資料架構',
'資料倉庫',
...]
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:\\Users\\Administrator\\Desktop\\python\\機器學習案例彙總\\1.python資料清洗可視化\\崗位技能1.html'
14.對資料做特征處理轉換 資料編碼 資料離散化 啞變量(One-hot編碼) 資料的标準化 0-1标準化, 普通标準化 降維(把方差太小的特征删除,PCA壓縮降維) 1. 将無法帶入模型的特征删除 崗位名稱 公司名稱 城市 地點 崗位技能 公司福利 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 資料分析師 名片全能王 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark “免費早晚餐、扁平化管理、免費零食供應” 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 20000 10000 15000.0 1 資料分析師 奇虎360金融 上海 張江 SQL 資料庫 “發展範圍廣 薪資高 福利好” 經驗不限 大學 金融 上市公司 500-2000人 20000 10000 15000.0
# 把清洗好的資料儲存下來
# df.to_csv('data_analysis_clean.csv')
# 生成一個副本,備份,防止資料被破壞
df_copy = df.copy()
崗位名稱 城市 地點 崗位技能 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 20000 10000 15000.0 1 資料分析師 上海 張江 SQL 資料庫 經驗不限 大學 金融 上市公司 500-2000人 20000 10000 15000.0
2.對分類資料進行編碼 經驗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}
0 經驗1-3年
1 經驗不限
2 經驗1-3年
3 經驗1-3年
4 經驗1-3年
Name: 工作年限, dtype: object
0 3
1 0
2 3
3 3
4 3
Name: 工作年限, dtype: int64
崗位名稱 城市 地點 崗位技能 工作年限 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 經驗編碼 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 經驗1-3年 大學 移動網際網路 D輪及以上 150-500人 20000 10000 15000.0 3 1 資料分析師 上海 張江 SQL 資料庫 經驗不限 大學 金融 上市公司 500-2000人 20000 10000 15000.0 2 資料分析 上海 浦東新區 SPSS 資料營運 資料庫 經驗1-3年 大學 移動網際網路,企業服務 上市公司 2000人以上 15000 8000 11500.0 3 3 2521BK-資料分析師 上海 浦東新區 大資料 金融 MySQL Oracle 算法 經驗1-3年 大學 金融 B輪 2000人以上 26000 13000 19500.0 3 4 資料分析師 上海 虹橋 資料分析 資料庫 經驗1-3年 大專 移動網際網路,電商 D輪及以上 2000人以上 15000 10000 12500.0 3
# 删除工作年限
df.drop(columns='工作年限',axis=1,inplace=True)
崗位名稱 城市 地點 崗位技能 學曆要求 行業 融資 人數 最高薪資 最低薪資 平均薪資 經驗編碼 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 大學 移動網際網路 D輪及以上 150-500人 20000 10000 15000.0 3 1 資料分析師 上海 張江 SQL 資料庫 大學 金融 上市公司 500-2000人 20000 10000 15000.0 2 資料分析 上海 浦東新區 SPSS 資料營運 資料庫 大學 移動網際網路,企業服務 上市公司 2000人以上 15000 8000 11500.0 3 3 2521BK-資料分析師 上海 浦東新區 大資料 金融 MySQL Oracle 算法 大學 金融 B輪 2000人以上 26000 13000 19500.0 3 4 資料分析師 上海 虹橋 資料分析 資料庫 大專 移動網際網路,電商 D輪及以上 2000人以上 15000 10000 12500.0 3
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)
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}
# 删除人數這一列
del df['人數']
崗位名稱 城市 地點 崗位技能 學曆要求 行業 融資 最高薪資 最低薪資 平均薪資 經驗編碼 公司規模 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 大學 移動網際網路 D輪及以上 20000 10000 15000.0 3 3 1 資料分析師 上海 張江 SQL 資料庫 大學 金融 上市公司 20000 10000 15000.0 4 2 資料分析 上海 浦東新區 SPSS 資料營運 資料庫 大學 移動網際網路,企業服務 上市公司 15000 8000 11500.0 3 5 3 2521BK-資料分析師 上海 浦東新區 大資料 金融 MySQL Oracle 算法 大學 金融 B輪 26000 13000 19500.0 3 5 4 資料分析師 上海 虹橋 資料分析 資料庫 大專 移動網際網路,電商 D輪及以上 15000 10000 12500.0 3 5
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)
大學 1332
不限 109
大專 89
碩士 78
博士 1
Name: 學曆要求, dtype: int64
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()
array([['大學', '大學', '大學', ..., '大學', '大學', '大學']], dtype=object)
array([['大學'],
['大學'],
['大學'],
...,
['大學'],
['大學'],
['大學']], dtype=object)
大學 1332
不限 109
大專 89
碩士 78
博士 1
Name: 學曆要求, dtype: int64
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
1 2 3 4 0.0 0.0 0.0 1.0 0.0 1 0.0 0.0 0.0 1.0 0.0 2 0.0 0.0 0.0 1.0 0.0 3 0.0 0.0 0.0 1.0 0.0 4 0.0 0.0 1.0 0.0 0.0 ... ... ... ... ... ... 1604 0.0 0.0 1.0 0.0 0.0 1605 0.0 0.0 0.0 0.0 1.0 1606 0.0 0.0 0.0 1.0 0.0 1607 0.0 0.0 0.0 1.0 0.0 1608 0.0 0.0 0.0 1.0 0.0
1609 rows × 5 columns
# 拼接兩個資料
pd.concat([df,temp],axis=1).head()
崗位名稱 城市 地點 崗位技能 學曆要求 行業 融資 最高薪資 最低薪資 平均薪資 經驗編碼 公司規模 學曆編碼 1 2 3 4 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 大學 移動網際網路 D輪及以上 20000.0 10000.0 15000.0 3.0 3.0 3.0 0.0 0.0 0.0 1.0 0.0 1 資料分析師 上海 張江 SQL 資料庫 大學 金融 上市公司 20000.0 10000.0 15000.0 0.0 4.0 3.0 0.0 0.0 0.0 1.0 0.0 2 資料分析 上海 浦東新區 SPSS 資料營運 資料庫 大學 移動網際網路,企業服務 上市公司 15000.0 8000.0 11500.0 3.0 5.0 3.0 0.0 0.0 0.0 1.0 0.0 3 2521BK-資料分析師 上海 浦東新區 大資料 金融 MySQL Oracle 算法 大學 金融 B輪 26000.0 13000.0 19500.0 3.0 5.0 3.0 0.0 0.0 0.0 1.0 0.0 4 資料分析師 上海 虹橋 資料分析 資料庫 大專 移動網際網路,電商 D輪及以上 15000.0 10000.0 12500.0 3.0 5.0 2.0 0.0 0.0 1.0 0.0 0.0
<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)
崗位名稱 城市 地點 崗位技能 學曆要求 行業 融資 最高薪資 最低薪資 平均薪資 經驗編碼 公司規模 學曆編碼 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 大學 移動網際網路 D輪及以上 20000 10000 15000.0 3 3 3 1 資料分析師 上海 張江 SQL 資料庫 大學 金融 上市公司 20000 10000 15000.0 4 3 2 資料分析 上海 浦東新區 SPSS 資料營運 資料庫 大學 移動網際網路,企業服務 上市公司 15000 8000 11500.0 3 5 3 3 2521BK-資料分析師 上海 浦東新區 大資料 金融 MySQL Oracle 算法 大學 金融 B輪 26000 13000 19500.0 3 5 3 4 資料分析師 上海 虹橋 資料分析 資料庫 大專 移動網際網路,電商 D輪及以上 15000 10000 12500.0 3 5 2
5
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
崗位名稱 城市 地點 崗位技能 學曆要求 行業 融資 最高薪資 最低薪資 平均薪資 經驗編碼 公司規模 學曆編碼 技能數 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 大學 移動網際網路 D輪及以上 20000 10000 15000.0 3 3 3 5 1 資料分析師 上海 張江 SQL 資料庫 大學 金融 上市公司 20000 10000 15000.0 4 3 2 2 資料分析 上海 浦東新區 SPSS 資料營運 資料庫 大學 移動網際網路,企業服務 上市公司 15000 8000 11500.0 3 5 3 3 3 2521BK-資料分析師 上海 浦東新區 大資料 金融 MySQL Oracle 算法 大學 金融 B輪 26000 13000 19500.0 3 5 3 5 4 資料分析師 上海 虹橋 資料分析 資料庫 大專 移動網際網路,電商 D輪及以上 15000 10000 12500.0 3 5 2 2
上市公司 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
崗位名稱 城市 地點 崗位技能 學曆要求 行業 融資 最高薪資 最低薪資 平均薪資 經驗編碼 公司規模 學曆編碼 技能數 融資狀況 資料分析師 上海 靜安區 大資料 移動網際網路 Hive Hadoop Spark 大學 移動網際網路 D輪及以上 20000 10000 15000.0 3 3 3 5 3 1 資料分析師 上海 張江 SQL 資料庫 大學 金融 上市公司 20000 10000 15000.0 4 3 2 4 2 資料分析 上海 浦東新區 SPSS 資料營運 資料庫 大學 移動網際網路,企業服務 上市公司 15000 8000 11500.0 3 5 3 3 4 3 2521BK-資料分析師 上海 浦東新區 大資料 金融 MySQL Oracle 算法 大學 金融 B輪 26000 13000 19500.0 3 5 3 5 1 4 資料分析師 上海 虹橋 資料分析 資料庫 大專 移動網際網路,電商 D輪及以上 15000 10000 12500.0 3 5 2 2 3
3 儲存結果 # 删除已經處理好的列
df2 = df1.drop(columns=['崗位技能','學曆要求','融資'],axis=1)
# 儲存表
df2.to_csv('lagou_data_clean.csv',encoding='utf-8')