拿到了一些职位信息进行数据清洗练习,这里分享一下步骤
读取数据
这里直接打开CSV格式的文件(可以使用execl转化)
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
data = pd.read_csv('E:\\aatableau\\data.csv',encoding='gbk')
data.shape
data.head(100)
data.info()
数据清洗
1.处理异常值
1.1 将薪资范围转化为平均薪资
for i, j in enumerate(data['薪资']):
j = j.replace('k', '').replace('K', '').replace('以上', '-0')
j1 = int(j.split('-')[0])
j2 = int(j.split('-')[1])
j3 = 1/2 * (j1+j2)
data['薪资'][i] = j3*1000
data['薪资'].head(10)
1.2 将公司福利处理成正常的文字格式
for i, j in enumerate(data['公司福利']):
j = j.replace('[', '').replace(']', '')
data['公司福利'][i] = j
data['公司福利'][:10]
for i, j in enumerate(data['公司福利']):
j = j.replace('\'','')
data['公司福利'][i] = j
data['公司福利'][:10]
2.处理缺失值
将区域中空白修改成未知,城市中的空白修改为其他
data['区域'] = data['区域'].fillna("未知")
data['区域'][:10]
data['城市'] = data['城市'].fillna("其他")
data['城市'][:10]
3.职位信息格式化
python数据格式化
for i, j in enumerate(data['职位名称']):
j = j.replace('【', '').replace('】', '')
data['职位名称'][i] = j
data['职位名称'][:100]
for i, j in enumerate(data['职位名称']):
if 'android开发' in j:
j = 'Android开发工程师'
if 'Android开发' in j:
j = 'Android开发工程师'
if 'C++开发' in j:
j = 'C++开发工程师'
data['职位名称'][i] = j
data['职位名称'][:5]
Tableau数据格式化
IF CONTAINS([职位名称],'财务') THEN '财务'
ELSEIF CONTAINS([职位名称],'Hadoop') THEN 'Hadoop'
ELSEIF CONTAINS([职位名称],'.NET') THEN '.NET'
ELSEIF CONTAINS([职位名称],'.net') THEN '.NET'
ELSEIF CONTAINS([职位名称],'.Net') THEN '.NET'
ELSEIF CONTAINS([职位名称],'C++') THEN 'C++开发工程师'
ELSEIF CONTAINS([职位名称],'Java') THEN 'Java开发工程师'
ELSEIF CONTAINS([职位名称],'Android') THEN 'Android'
ELSEIF CONTAINS([职位名称],'android') THEN 'Android'
ELSEIF CONTAINS([职位名称],'Python') THEN 'Python开发工程师'
ELSEIF CONTAINS([职位名称],'2D') THEN '2D游戏'
ELSEIF CONTAINS([职位名称],'2d') THEN '2D游戏'
ELSEIF CONTAINS([职位名称],'3D') THEN '3D游戏'
ELSEIF CONTAINS([职位名称],'3d') THEN '3D游戏'
ELSEIF CONTAINS([职位名称],'产品') THEN '产品经理'
ELSEIF CONTAINS([职位名称],'前端') THEN 'web前端'
ELSEIF CONTAINS([职位名称],'PHP') THEN 'PHP'
ELSEIF CONTAINS([职位名称],'算法') THEN '算法工程师'
ELSEIF CONTAINS([职位名称],'机器学习') THEN '人工智能'
ELSEIF CONTAINS([职位名称],'安全') THEN '网络安全工程师'
ELSEIF CONTAINS([职位名称],'游戏测试') THEN '游戏测试'
ELSEIF CONTAINS([职位名称],'测试') THEN '测试'
ELSEIF CONTAINS([职位名称],'网页') THEN '网页设计'
ELSEIF CONTAINS([职位名称],'特效') THEN '特效'
ELSEIF CONTAINS([职位名称],'数据分析') THEN '数据分析'
ELSEIF CONTAINS([职位名称],'产品运营') THEN '产品运营'
ELSEIF CONTAINS([职位名称],'游戏运营') THEN '游戏运营'
ELSEIF CONTAINS([职位名称],'新媒体运营') THEN '新媒体运营'
ELSEIF CONTAINS([职位名称],'商家运营') THEN '商家运营'
ELSEIF CONTAINS([职位名称],'文案') THEN '文案'
ELSEIF CONTAINS([职位名称],'客服') THEN '客服'
ELSEIF CONTAINS([职位名称],'市场') THEN '市场'
ELSEIF CONTAINS([职位名称],'策划') THEN '策划'
ELSEIF CONTAINS([职位名称],'公关') THEN '公关'
ELSEIF CONTAINS([职位名称],'广告') THEN '广告类'
ELSEIF CONTAINS([职位名称],'销售') THEN '销售'
ELSEIF CONTAINS([职位名称],'客户') THEN '客户经理'
ELSEIF CONTAINS([职位名称],'前台') THEN '前台'
ELSEIF CONTAINS([职位名称],'会计') THEN '会计'
ELSEIF CONTAINS([职位名称],'审计') THEN '审计'
ELSEIF CONTAINS([职位名称],'区块链') THEN '区块链'
ELSEIF CONTAINS([职位名称],'法务') THEN '法务'
ELSEIF CONTAINS([职位名称],'数据仓库') THEN '数据仓库'
ELSEIF CONTAINS([职位名称],'flash') THEN 'Flash'
ELSEIF CONTAINS([职位名称],'Flash') THEN 'Flash'
ELSEIF CONTAINS([职位名称],'运维') THEN '运维工程师'
ELSEIF CONTAINS([职位名称],'嵌入式') THEN '嵌入式'
ELSEIF CONTAINS([职位名称],'游戏运营') THEN '游戏运营'
ELSEIF CONTAINS([职位名称],'主播') THEN '主播'
ELSEIF CONTAINS([职位名称],'FPGA') THEN 'FPGA'
ELSEIF CONTAINS([职位名称],'交互') THEN '交互设计师'
ELSEIF CONTAINS([职位名称],'手游') THEN '手游推广'
ELSEIF CONTAINS([职位名称],'美术设计师') THEN '美术设计师'
ELSEIF CONTAINS([职位名称],'Go') THEN 'Go语言'
ELSEIF CONTAINS([职位名称],'Shell') THEN 'Shell'
ELSEIF CONTAINS([职位名称],'产品助理') THEN '产品助理'
ELSEIF CONTAINS([职位名称],'图像') THEN '图像处理与识别'
ELSEIF CONTAINS([职位名称],'IDC') THEN 'IDC'
ELSEIF CONTAINS([职位名称],'CDN') THEN 'CDN'
ELSEIF CONTAINS([职位名称],'自动化') THEN '自动化'
ELSEIF CONTAINS([职位名称],'原画') THEN '原画师'
ELSEIF CONTAINS([职位名称],'单片机') THEN '嵌入式'
ELSEIF CONTAINS([职位名称],'游戏场景') THEN '游戏场景'
ELSEIF CONTAINS([职位名称],'角色') THEN '游戏角色'
ELSEIF CONTAINS([职位名称],'Orcal') THEN 'Orcal'
ELSEIF CONTAINS([职位名称],'sqlServer') THEN 'SQLServer'
ELSEIF CONTAINS([职位名称],'Hive') THEN 'Hive'
ELSEIF CONTAINS([职位名称],'DB2') THEN 'DB2'
ELSEIF CONTAINS([职位名称],'HR') THEN '人事'
ELSEIF CONTAINS([职位名称],'人事') THEN '人事'
ELSEIF CONTAINS([职位名称],'律师') THEN '律师'
ELSEIF CONTAINS([职位名称],'金融') THEN '金融'
ELSEIF CONTAINS([职位名称],'学前教育') THEN '教育'
ELSEIF CONTAINS([职位名称],'教育') THEN '教育'
ELSEIF CONTAINS([职位名称],'老师') THEN '教育'
ELSEIF CONTAINS([职位名称],'风控') THEN '风控'
ELSEIF CONTAINS([职位名称],'算法') THEN '算法工程师'
ELSEIF CONTAINS([职位名称],'MongGo') THEN 'MongGoDB'
ELSEIF CONTAINS([职位名称],'推广') THEN '推广'
ELSEIF CONTAINS([职位名称],'主管') THEN '主管'
ELSEIF CONTAINS([职位名称],'销售') THEN '销售'
ELSEIF CONTAINS([职位名称],'实施') THEN '实施工程师'
ELSEIF CONTAINS([职位名称],'安全') THEN '安全工程师'
ELSEIF CONTAINS([职位名称],'体验') THEN '游戏体验'
ELSEIF CONTAINS([职位名称],'用户') THEN '用户研究'
ELSEIF CONTAINS([职位名称],'无线') THEN '无线产品设计'
ELSEIF CONTAINS([职位名称],'网络优化') THEN '网络优化'
ELSEIF CONTAINS([职位名称],'拓展') THEN '商务拓展'
ELSEIF CONTAINS([职位名称],'房地产') THEN '房地产'
ELSEIF CONTAINS([职位名称],'采购') THEN '采购'
ELSEIF CONTAINS([职位名称],'店长') THEN '店长'
ELSEIF CONTAINS([职位名称],'收银') THEN '收银'
ELSEIF CONTAINS([职位名称],'编导') THEN '编导'
ELSEIF CONTAINS([职位名称],'动漫') THEN '动漫设计'
ELSEIF CONTAINS([职位名称],'电气') THEN '电气工程师'
ELSEIF CONTAINS([职位名称],'资料') THEN '资料员'
ELSEIF CONTAINS([职位名称],'剪辑') THEN '剪辑'
ELSEIF CONTAINS([职位名称],'物流') THEN '物流'
ELSEIF CONTAINS([职位名称],'物联网') THEN '物联网'
ELSEIF CONTAINS([职位名称],'小程序') THEN '小程序'
ELSEIF CONTAINS([职位名称],'大数据') THEN '大数据'
ELSEIF CONTAINS([职位名称],'网络工程') THEN '网络工程师'
ELSEIF CONTAINS([职位名称],'iOS') THEN 'iOS'
ELSEIF CONTAINS([职位名称],'ios') THEN 'iOS'
ELSEIF CONTAINS([职位名称],'IOS') THEN 'iOS'
ELSEIF CONTAINS([职位名称],'App') THEN 'App'
ELSEIF CONTAINS([职位名称],'app') THEN 'App'
ELSEIF CONTAINS([职位名称],'助理') THEN '助理'
ELSEIF CONTAINS([职位名称],'AI') THEN '人工智能'
ELSEIF CONTAINS([职位名称],'BD') THEN 'BD'
ELSEIF CONTAINS([职位名称],'bD') THEN 'bD'
ELSEIF CONTAINS([职位名称],'动画') THEN '动画'
ELSEIF CONTAINS([职位名称],'UI') THEN 'UI设计'
ELSEIF CONTAINS([职位名称],'编辑') THEN '编辑'
ELSEIF CONTAINS([职位名称],'班主任') THEN '教育'
ELSEIF CONTAINS([职位名称],'电商') THEN '电商'
ELSEIF CONTAINS([职位名称],'短视频') THEN '短视频'
ELSEIF CONTAINS([职位名称],'分布式') THEN '分布式'
ELSEIF CONTAINS([职位名称],'服务端') THEN '服务端'
ELSEIF CONTAINS([职位名称],'服务器') THEN '服务端'
ELSEIF CONTAINS([职位名称],'实习') THEN '实习'
ELSEIF CONTAINS([职位名称],'出纳') THEN '财务'
ELSEIF CONTAINS([职位名称],'架构') THEN '架构师'
ELSEIF CONTAINS([职位名称],'BI') THEN 'BI'
ELSEIF CONTAINS([职位名称],'C#') THEN 'C#开发工程师'
ELSEIF CONTAINS([职位名称],'驱动') THEN '驱动开发'
ELSEIF CONTAINS([职位名称],'DBA') THEN 'DBA'
ELSEIF CONTAINS([职位名称],'ETL') THEN 'ETL'
ELSEIF CONTAINS([职位名称],'H5') THEN 'H5'
ELSEIF CONTAINS([职位名称],'NET') THEN '.NET'
ELSEIF CONTAINS([职位名称],'Node') THEN 'Node.js开发工程师'
ELSEIF CONTAINS([职位名称],'数据库') THEN '数据库管理'
ELSEIF CONTAINS([职位名称],'PGC') THEN 'PGC'
ELSEIF CONTAINS([职位名称],'PR') THEN 'PR'
ELSEIF CONTAINS([职位名称],'QA') THEN 'QA'
ELSEIF CONTAINS([职位名称],'计算') THEN '大数据'
ELSEIF CONTAINS([职位名称],'运营') THEN '产品运营'
ELSEIF CONTAINS([职位名称],'设计') THEN '设计'
ELSE '其它'
END
整合并提取数据
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
data = pd.read_csv('E:\\aatableau\\data.csv',encoding='gbk')
data.shape
data.head(100)
data.info()
for i, j in enumerate(data['薪资']):
j = j.replace('k', '').replace('K', '').replace('以上', '-0')
j1 = int(j.split('-')[0])
j2 = int(j.split('-')[1])
j3 = 1/2 * (j1+j2)
data['薪资'][i] = j3*1000
data['薪资'].head(10)
for i, j in enumerate(data['公司福利']):
j = j.replace('[', '').replace(']', '')
data['公司福利'][i] = j
data['公司福利'][:10]
for i, j in enumerate(data['公司福利']):
j = j.replace('\'','')
data['公司福利'][i] = j
data['公司福利'][:10]
for i, j in enumerate(data['职位名称']):
j = j.replace('【', '').replace('】', '')
data['职位名称'][i] = j
data['区域'] = data['区域'].fillna("未知")
data['区域'][:10]
data['职位名称'][:100]
data['城市'] = data['城市'].fillna("其他")
data['城市'][:10]
for i, j in enumerate(data['职位名称']):
if 'android开发' in j:
j = 'Android开发工程师'
if 'Android开发' in j:
j = 'Android开发工程师'
if 'C++开发' in j:
j = 'C++开发工程师'
data['职位名称'][i] = j
data['职位名称'][:5]
data.to_csv('E:\\aatableau\\data_cleaned.csv')
数据已经清洗完毕,后面再进行可视化就方便了很多