numpy-数据清洗
一、对G列数据进行清洗,根据['无','2000-3999','4000-5999','6000-7999','8000-9999','>10000']进行划分
去处重复值
# 删除重复值 # print('删除重复值前大小',data.shape) # # 删除记录 # data = data.drop_duplicates() # print('删除重复值后大小',data.shape)
删除缺失值
"""删除缺失值""" #df.dropna()# 删除出现缺失值得行 # df.dropna(axis=1) #df.dropna(how='any') # 只要出现缺失值就删除 #df.dropna(subset=['房价'])# 指定列出现缺失值才删除 #data.dropna(how='all') # 当整行数据都为nan 时才删除
删除或填充缺失值
"""一、删除或填充缺失值""" data.iloc[1429:] new_data = data.drop(index=range(1430,1780)).fillna({'期望薪资':'无'})
将不同单位的薪资形式,转化成统一形式
"""二、将不同单位的薪资形式,转化成统一形式""" print(new_data['期望薪资'].str[-6:].value_counts())
将不规则的薪资形式转化为统一形式
"""将不规则的薪资形式转化为统一形式""" new_data.loc[new_data['期望薪资'].str[-6:]=='万以下元/年','期望薪资']= '0-2万元/年' new_data.loc[new_data['期望薪资'].str[-5:]=='以下元/月','期望薪资']='0-1500元/月'
new_data['期望薪资'].str[-4:].value_counts()
"""将统一后的不同单位的薪资,统一转化成平均月薪(元/月)"""
def salary_proc(salary): """将传入的薪资转化成统一的平均月薪""" if salary == '无': return 0 elif re.search('元/月',salary): s = re.findall('(\d+)-(\d+)元/月',salary) # s=[('1000','10000')] mi,ma = int(s[0][0]),int(s[0][1]) return (mi+ma)*0.5 elif re.search('万元/年',salary): s = re.findall('(\d+)-(\d+)万元/年',salary) mi,ma = int(s[0][0]),int(s[0][1]) return (mi+ma)*0.5*10000/12 elif re.search('元/年',salary): s = re.findall('(\d+)-(\d+)元/年',salary) mi,ma = int(s[0][0]),int(s[0][1]) return (mi+ma)*0.5/12 else: return -1
"""新增列保存平均月薪""" """一、for 效率低""" new_data['mean_salary']=0 for i in new_data['期望薪资'].index: new_data.loc[i,'mean_salary']=salary_proc(new_data.loc[i,'期望薪资'])
"""二、apply(),矢量化字符串的方法,效率高""" new_data['mean_salary2'] = new_data['期望薪资'].apply(salary_proc)
# new_data.iloc[:,-2:] """三、进行切分""" bins = [0,2000,4000,6000,8000,10000,1000000] labels =['0-2000','2000-3999','4000-5999','6000-7999','8000-9999','>10000'] new_data['salary_class']=pd.cut(new_data['mean_salary'],bins,labels=labels,right=False)# right 改变区间的闭合方式
new_data['salary_class'].value_counts()
二、 对AA列进行清洗,要求分成三类全包含(PhotoShop,Corel DRAW,AI),三项,只包含其中一项或两项,全不包含
处理缺失值
"""处理缺失值""" new_data['技能/语言'].fillna('无',inplace=True)
"""提取技能关键词""" new_data['skill'] = new_data['技能/语言'].str.findall('[a-zA-Z0-9\s#.\+/]+') """处理技能词前后的空格,并统一转化成小写""" new_data['skill2']='' for i in new_data['skill'].index: new_data.loc[i,'skill2']=",".join(map(lambda x:x.strip().lower(),new_data.loc[i,'skill']))
"""将每个人的技能和目标技能进行比较,统计技能数""" new_data['skill_class']=0 s = ['photoshop','corel draw','ai'] for i in new_data['skill2'].index: skill = new_data['skill2'].iloc[i] b = 0 for j in s: if j in skill: b+=1 new_data.loc[i,'skill_class']=b
new_data['skill_class'].value_counts()
new_data['skill_class'].map({0:'全不包含',1:'包含其中一项',2:'包含其中的两项',3:'三项技能全包含'})
numpy-数据清洗的更多相关文章
- 如何用Python中自带的Pandas和NumPy库进行数据清洗
一.概况 1.数据清洗到底是在清洗些什么? 通常来说,你所获取到的原始数据不能直接用来分析,因为它们会有各种各样的问题,如包含无效信息,列名不规范.格式不一致,存在重复值,缺失值,异常值等..... ...
- 【转载】使用pandas进行数据清洗
使用pandas进行数据清洗 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据清洗 目录: 数据表中的重复值 duplicated() drop_duplicated() 数据表中的 ...
- python 数据清洗之数据合并、转换、过滤、排序
前面我们用pandas做了一些基本的操作,接下来进一步了解数据的操作, 数据清洗一直是数据分析中极为重要的一个环节. 数据合并 在pandas中可以通过merge对数据进行合并操作. import n ...
- [数据清洗]-使用 Pandas 清洗“脏”数据
概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...
- 机器学习中数据清洗&预处理
数据预处理是建立机器学习模型的第一步,对最终结果有决定性的作用:如果你的数据集没有完成数据清洗和预处理,那么你的模型很可能也不会有效 第一步,导入数据 进行学习的第一步,我们需要将数据导入程序以进行下 ...
- 数据分析---用pandas进行数据清洗(Data Analysis Pandas Data Munging/Wrangling)
这里利用ben的项目(https://github.com/ben519/DataWrangling/blob/master/Python/README.md),在此基础上增添了一些内容,来演示数据清 ...
- 2.pandas数据清洗
pandas是用于数据清洗的库,安装配置pandas需要配置许多依赖的库,而且安装十分麻烦. 解决方法:可以用Anaconda为开发环境,Anaconda内置了许多有关数据清洗和算法的库. 1.安装p ...
- [数据清洗]-Pandas 清洗“脏”数据(一)
概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...
- Python数据清洗基本流程
# -*- coding: utf-8 -*-"""Created on Wed Jul 4 18:40:55 2018 @author: zhen"" ...
- 1.理解Numpy、pandas
之前一直做得只是采集数据,而没有再做后期对数据的处理分析工作,自己也是有意愿去往这些方向学习的,最近就在慢慢的接触. 首先简单理解一下numpy和pandas:一.NumPy:1.NumPy是高性能计 ...
随机推荐
- HDU1075 What Are You Talking About(map)
传送门 题目大意:一个单词对应另一个单词 翻译一段文字 题解:stl map走一波 代码: #include<iostream> #include<map> #include& ...
- Paper | LISTEN, ATTEND AND SPELL: A NEURAL NETWORK FOR LARGE VOCABULARY CONVERSATIONAL SPEECH RECOGNITION
目录 1. 相关工作 2. 方法细节 2.1 收听器 2.2 注意力和拼写 本文提出了一个基于神经网络的语音识别系统List, Attend and Spell(LAS),能够将语音直接转录为文字. ...
- 【linux运维】linux系统上忘记密码如何操作
目录 红帽系统忘记密码操作 红帽系统设置ip,主机名 centos系统忘记密码操作 一.红帽系统忘记密码操作 1)再出现以下界面后按键盘e键 2)进入以下界面后,再次按e键 3)使用上下键选择第2项或 ...
- 使用paramiko模块进行封装,远程操作linux主机
import time import paramiko class HandleParamiko: ''' 定义一个linux处理类 ''' def __init__(self, hostname, ...
- zookeeper C client API 和zkpython 的安装
1 zookeeper C API 安装 yum install -y ant 在解压的zookeeper包中执行: ant compile_jute 进入src/c 安装:yum -y instal ...
- 用go-module作为包管理器搭建go的web服务器
本篇博客主要介绍了如何从零开始,使用Go Module作为依赖管理,基于Gin来一步一步搭建Go的Web服务器.并使用Endless来使服务器平滑重启,使用Swagger来自动生成Api文档. 源码在 ...
- Rpg maker mv角色扮演游戏制作大师简介
目录 1:简介 2:基本图片展示 3.和js等平台的合作 @(这里写自定义目录标题) 1:简介 <RPG制作大师MV>为<RPG制作大师>的新版本,于18年11月27日登陆 ...
- Linux网络——修改配置文件
Linux网络——修改配置文件 摘要:本文主要学习了如何通过修改配置文件来设置网络参数. 配置文件 通过修改系统的配置文件为系统设置网络参数,这种方式的优点是可以永久保存,计算机重启后仍然生效.缺点是 ...
- LinuxShell脚本——选择结构
LinuxShell脚本——选择结构 摘要:本文主要学习了Shell脚本中的选择结构. if-else语句 基本语法 最简单的用法就是只使用if语句,它的语法格式为: if 条件 then 命令 fi ...
- Android apk签名方法介绍
还望支持个人博客站:http://www.enjoytoday.cn 参考博客:http://www.enjoytoday.cn/posts/203 为什么要签名 在介绍签名方法之前,首先我们来了解下 ...