• 第三章 python数据规整化


    本章概要

    1、去重
    2、缺失值处理
    3、清洗字符型数据的空格
    4、字段抽取

    去重

    • 把数据结构中,行相同的数据只保留一行

    • 函数语法:

      • drop_duplicates()
    #导入pandas包中的read_csv函数
    from pandas import read_csv
    df=read_csv('路径')
    
    #找出行重复的位置
    dIndex=df.duplicated()
    
    #也可根据某些列,找出重复的位置
    dIndex=df.duplicated('age')
    dIndex=df.duplicated(['age','name'])
    
    #根据返回值,把重复数据提取出来
    df[dIndex]
    
    #默认根据所有的列,进行删除,注意这里是duplicates
    newdf=df.drop.duplicates()
    
    #也可以指定莫一列,进行重复值删除
    newdf=df.drop.duplicates('age')

    @数据分析-jacky
    @数据分析-jacky

    缺失值处理

    缺失数据的产生

    • 数据暂时无法获取

      • 比如未成年儿童的收入等
    • 有些数据被遗漏或错误处理了

    缺失数据的处理方式

    缺失数据在实际工作中,是不可避免的,本部分还是很重要的

    • 数据补齐

      • 用一定的值去填充空值,使数据完备化,如平均值填充等等
    • 删除对应缺失行

    • 不处理

    如何删除缺失数据的所在行

    在python中,使用dropna函数进行缺失数据的清洗

    • dropna函数作用:去除数据结构中值为空的数据

    • dropna函数语法:dropna()

    # 首先导入数据文件,输出df变量
    from pandas import read_csv
    df=read_csv('路径')

    @数据分析-jacky

    在pandas的数据框中,缺失值用NaN来标注

    @数据分析-jacky
    @数据分析-jacky

    # 把之前数据为空的,换成a,b,可以把a、b指定为NaN值,作用是可以把不不要的数据替换成缺失值,然后处理,使用的是read的na_values函数
    df=read_csv('路径',na_values=['a','b'])
    # 找出NaN所在的行,通过isnull方法获取数据框中某个位置的值是否为NaN值
    isNA=df.isnull()

    @数据分析-jacky

    • 如何数据框对应的位置是NaN值,那么isnull方法对应的就是布尔值True,根据这个特征,就可以使用数据框的行获取方法,获取出NaN值所在的行
    #获取空值所在的行
    #首先获取所有的列,只要获取到NaN了,就认为这行有NaN值了
    #使用any方法,就可以实现这种选择效果
    df[isNA.any(axis=1)]

    @数据分析-jacky

    #如何要特定某列的NaN值,定位后在用any的方法就可以了
    df[isNA[['gender']].any(axis=1)]
    • 特别注意定位gender的字符串有两个中括号,不能是一个
    #直接删除空值
    newdf=df.dropna()

    这里写图片描述

    清洗字符型数据的空格

    • strip函数作用:清除字符型数据左右的空格

    • strip函数语法:strip()

    #打开数据文件
    from pandas import read_csv
    df=read_csv('路径')
    
    #清除字符串左边的空格
    newname=df['name'].str.lstrip()
    #清除字符串右边的空格
    newname=df['name'].str.rstrip()
    #清除字符串左、右边的空格
    newname=df['name'].str.strip()
    
    #把清洗后的数据放回原来的列
    df['name']=newname

    字段抽取

    • 字段抽取,是根据已知列数据的开始和结束位置,抽取出新的列

    • 字段截取函数:slice(start开始位置,stop结束位置)

      • 与数据结构的访问方式一样,开始位置是从0开始的,开始位置是大于等于,结束位置是小于,不能取等于

      • slice函数默认只能处理字符型数据,如要处理数字型数据,必须进行转化

  • 相关阅读:
    C++内存分配
    扩展哈夫曼编码
    用递归函数和栈操作逆序一个栈
    非递归遍历二叉树
    malloc/free和new/delete
    洗牌算法及其证明
    野指针问题
    计算编辑距离
    数组指针/指针数组的使用
    sizeof/strlen/length
  • 原文地址:https://www.cnblogs.com/shujufenxi/p/9054459.html
Copyright © 2020-2023  润新知