一、对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-数据清洗的更多相关文章

  1. 如何用Python中自带的Pandas和NumPy库进行数据清洗

    一.概况 1.数据清洗到底是在清洗些什么? 通常来说,你所获取到的原始数据不能直接用来分析,因为它们会有各种各样的问题,如包含无效信息,列名不规范.格式不一致,存在重复值,缺失值,异常值等..... ...

  2. 【转载】使用pandas进行数据清洗

    使用pandas进行数据清洗 本文转载自:蓝鲸的网站分析笔记 原文链接:使用python进行数据清洗 目录: 数据表中的重复值 duplicated() drop_duplicated() 数据表中的 ...

  3. python 数据清洗之数据合并、转换、过滤、排序

    前面我们用pandas做了一些基本的操作,接下来进一步了解数据的操作, 数据清洗一直是数据分析中极为重要的一个环节. 数据合并 在pandas中可以通过merge对数据进行合并操作. import n ...

  4. [数据清洗]-使用 Pandas 清洗“脏”数据

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  5. 机器学习中数据清洗&预处理

    数据预处理是建立机器学习模型的第一步,对最终结果有决定性的作用:如果你的数据集没有完成数据清洗和预处理,那么你的模型很可能也不会有效 第一步,导入数据 进行学习的第一步,我们需要将数据导入程序以进行下 ...

  6. 数据分析---用pandas进行数据清洗(Data Analysis Pandas Data Munging/Wrangling)

    这里利用ben的项目(https://github.com/ben519/DataWrangling/blob/master/Python/README.md),在此基础上增添了一些内容,来演示数据清 ...

  7. 2.pandas数据清洗

    pandas是用于数据清洗的库,安装配置pandas需要配置许多依赖的库,而且安装十分麻烦. 解决方法:可以用Anaconda为开发环境,Anaconda内置了许多有关数据清洗和算法的库. 1.安装p ...

  8. [数据清洗]-Pandas 清洗“脏”数据(一)

    概要 准备工作 检查数据 处理缺失数据 添加默认值 删除不完整的行 删除不完整的列 规范化数据类型 必要的转换 重命名列名 保存结果 更多资源 Pandas 是 Python 中很流行的类库,使用它可 ...

  9. Python数据清洗基本流程

    # -*- coding: utf-8 -*-"""Created on Wed Jul 4 18:40:55 2018 @author: zhen"" ...

  10. 1.理解Numpy、pandas

    之前一直做得只是采集数据,而没有再做后期对数据的处理分析工作,自己也是有意愿去往这些方向学习的,最近就在慢慢的接触. 首先简单理解一下numpy和pandas:一.NumPy:1.NumPy是高性能计 ...

随机推荐

  1. 2019-2020-1 20199305《Linux内核原理与分析》第三周作业

    操作系统的秘密 (一)计算机的三大法宝 存储程序计算机: 函数调用堆栈机制: 中断机制. (二)堆栈 (1)堆栈的作用 记录函数调用框架: 传递函数参数: 保存返回值的地址: 提供局部变量存储空间. ...

  2. golang--海量用户即使通讯系统

    功能需求: 用户注册 用户登录 显示在线用户列表 群聊 点对点聊天 离线留言

  3. 1+x证书web前端开发jquery专项练习测试题

    javascript程序设计-题库 1.下面哪一种不属于Jquery的选择器? A. 基本选择器 B. 层次选择器 C. 表单选择器 D. 节点选择器 答案: D 2.如果需要匹配包含文本的元素,用下 ...

  4. 【Linux命令】EOF自定义终止符

    EOF自定义终止符用法 我们在脚本中经常会发现使用EOF的情况.EOF可以结合cat命令对内容进行追加.比如:执行脚本的时候,需要往一个文件里自动输入多行内容.如果是少数的几行内容,可以用echo命令 ...

  5. 易飞审核员调用DEMO-DELPHI

    作用:我已在其他文章里提过.直接调用易飞审核员程序,易飞9全版本全模块通用. 亮点:错误直接返回错误信息,并非错误代码. 最全.最优的易飞审核员接口开发,支持个案审核员接口开发.有需要的联系本人. 唯 ...

  6. 在新的电脑上的Git本地库 与远程库关联前的一些设置

    由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用户主目录下(user/...),看看有没有.ssh目录,如果有,再看看这个目 ...

  7. 安装 Java

    1.rpm下载地址 https://download.oracle.com/otn/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm?AuthParam=1570520 ...

  8. ubuntu命令查看英伟达显卡型号

    在终端输入如下命令:nvidia-smi

  9. U-GAT-IT笔记

    目录 前言 模型结构 生成器 鉴别器 损失函数 实验结果 结语 由于博客园有时候公式显示不出来,建议在https://github.com/FangYang970206/PaperNote/blob/ ...

  10. 转 SSD论文解读

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u010167269/article/det ...