相关文章推荐
面冷心慈的仙人球  ·  数据清洗-异常值处理-DBSCAN算法查找异常值·  1 月前    · 
飘逸的人字拖  ·  关于土地增值税若干问题的通知·  9 月前    · 
叛逆的水煮鱼  ·  重庆市农业农村委员会办公室关于拟认定2022 ...·  9 月前    · 
文质彬彬的酸菜鱼  ·  我的荣耀V30手机在拨号中输入*#*#613 ...·  10 月前    · 
迷茫的海龟  ·  斗罗大陆:3D区小舞身穿黑丝,千仞雪穿白丝, ...·  1 年前    · 
睿智的牛肉面  ·  Notion:地表最强的笔记工具,也可以用上 ...·  1 年前    · 
Code  ›  python 数据分析8 pandas 数据清洗&预处理_数据清洗的注意事项林子雨
大数据 pandas 异常值 数据清洗
https://blog.csdn.net/weixin_38673554/article/details/104344063
暗恋学妹的双杠
1 年前
    • 八、pandas 数据清洗&预处理
      • 1、处理缺失值
        • 过滤缺失数据
        • 填充缺失值
      • 2、数据转换
        • 移除重复数据
        • 利用函数或映射进行数据转换
        • 替换值
        • 重命名轴索引
        • 离散化
        • 检测和过滤异常值
        • 排列和随机采样
      • 3、字符串操作
        • 字符串对象方法
        • 正则表达式
        • pandas的矢量化字符串函数

        对于一个Series,dropna 返回一个仅含非空数据和索引值的 Series:

        from numpy import nan as NA
        data = pd.Series([1, NA, 3.5, NA, 7])
        data.dropna()
        

        对于 DataFrame,dropna 默认丢弃任何含有缺失值的行:

        data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA], [NA, NA, NA], [NA, 6.5, 3.]])
        cleaned = data.dropna()
        # 只丢弃全为NA的那些行
        data.dropna(how='all')
        # 丢弃列
        data.dropna(axis=1)
        # 只想留下一部分观测数据
        data.dropna(thresh = 2)
        
        填充缺失值
        df.fillna(0)
        # 调用字典,对不同列填充不同的值
        df.fillna({1: 0.5, 2: 0})
        # 对现有对象修改
        df.fillna(0, inplace=True)
        

        fillna 参数:
        在这里插入图片描述

        2、数据转换

        移除重复数据

        duplicated: 返回一个布尔型Series,表示各行是否是重复行
        drop_duplicates:返回一个DataFrame,重复的数组会标为False

        data.duplicated()
        data.drop_duplicates()
        

        两个方法默认会判断全部列,指定部分列进行重复项判断:

        data.drop_duplicates(['k1'])
        
        利用函数或映射进行数据转换

        Series的 map 方法可以接受一个函数或含有映射关系的字典型对象,Series的 str.lower 方法,将各个值转换为小写。

        利用 replace 来产生一个新的Series

        data.replace(-999, np.nan) # -999 替换成 nan
        data.replace([-999, -1000], np.nan) # -999 和 -1000 都替换成 nan
        data.replace([-999, -1000], [np.nan, 0]) # -999 替换成 nan -1000 替换成 0
        data.replace({-999: np.nan, -1000: 0})
        
        重命名轴索引

        跟Series中的值一样,轴标签也可以通过函数或映射进行转换,从而得到一个新的不同标签的对象。

        修改行索引或列索引,用 map 函数。

        创建数据集的转换版,用 rename 函数。

        把连续数据拆分成 bin,用 cut 函数:

        ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
        bins = [18, 25, 35, 60, 100]
        cats = pd.cut(ages, bins) 
        # 划分的 bin,4个区间
        cats.categories
        # bin 计数,每个区间落入元素的数目
        pd.value_counts(cats)
        

        通过传递一个列表或数组到 labels,设置自己的 bin 名称:

        group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
        pd.cut(ages, bins, labels=group_names)
        

        如果向 cut 传入的是 bin 的数量而不是确切的面元边界,则它会根据数据的最小值和最大值计算等长面元:

        data = np.random.rand(20)
        pd.cut(data, 4, precision=2) # 均匀分成4份,2 位小数
        

        qcut是一个非常类似于cut的函数,它可以根据样本分位数对数据进行面元划分。qcut 由于使用的是样本分位数,因此可以得到大小基本相等的 bin。

        data = np.random.randn(1000) 
        cats = pd.qcut(data, 4) 
        

        也可以传递自定义的分位数。

        pd.qcut(data, [0, 0.1, 0.5, 0.9, 1.])
        
        检测和过滤异常值

        过滤或变换异常值(outlier)在很大程度上就是运用数组运算。

        data = pd.DataFrame(np.random.randn(1000, 4))
        

        选出全部含有“超过3或-3的值”的行,将值限制在区间-3到3以内:

        data[np.abs(data) > 3] = np.sign(data) * 3
        
        排列和随机采样

        利用numpy.random.permutation函数对Series或DataFrame的列随机重排。

        df = pd.DataFrame(np.arange(5 * 4).reshape((5, 4)))
        sampler = np.random.permutation(5)
        sampler # array([3, 1, 4, 2, 0])
        

        3、字符串操作

        字符串对象方法

        python 内置的字符串方法:
        在这里插入图片描述

        正则表达式

        正则表达式,常称作regex,是根据正则表达式语言编写的字符串。

        Python内置的 re 模块负责对字符串应用正则表达式。

        re 模块的函数可以分为三个大类:模式匹配、替换以及拆分。当然,它们之间是相辅相成的。

        正则表达式方法:
        在这里插入图片描述

        pandas的矢量化字符串函数

        通过data.map,所有字符串和正则表达式方法都能被应用于(传入lambda表达式或其他函数)各个值,但是如果存在NA(null)就会报错。为了解决这个问题,Series有一些能够跳过NA值的面向数组方法,进行字符串操作。通过Series的str属性即可访问这些方法。

        data.str.contains('gmail')
                            文章目录八、pandas 数据清洗&预处理1、处理缺失值过滤缺失数据填充缺失值2、数据转换移除重复数据利用函数或映射进行数据转换替换值重命名轴索引离散化检测和过滤异常值排列和随机采样3、字符串操作字符串对象方法正则表达式pandas的矢量化字符串函数八、pandas 数据清洗&预处理包括处理缺失数据、重复数据、字符串操作和其它分析数据转换的工具。1、处理缺失值对于数值数据,...
        				
        数据预处理是建立机器学习模型的第一步(也很可能是最重要的一步),对最终结果有决定性的作用:如果你的数据集没有完成数据清洗和预处理,那么你的模型很可能也不会有效——就是这么简单。 人们通常认为,数据预处理是一个非常枯燥的部分。但它就是「做好准备」和「完全没有准备」之间的差别,也是表现专业和业余之间的差别。就像为度假做好事先准备一样,如果你提前将行程细节确定好,就能够预防旅途变成一场噩梦。 那么,应...
        数据预处理学习1–ETL和数据清洗 第一个问题,什么是数据预处理? 数据预处理,英文全称是:data preprocessing,顾名思义就是指在进行对主要的数据进行处理以前对数据进行的一些处理 数据预处理分为: 缺失值处理、异常值处理、特征缩放、数值离散化和不平衡数据处理 数据预处理的重要性: 在数据挖掘过程中,数据预处理是不可或缺的部分。 大数据应用中数据的典型特点是独立的、不完整、含噪声和不...
        很好,以下是关于 pandas 预处理的答案: pandas 是一种基于 NumPy 的数据分析工具,提供了大量的函数和方法来处理数据。在数据分析中,预处理数据是非常重要的一步,pandas 提供了多种方法来进行数据预处理,包括数据清洗、缺失值处理、重复值处理、数据转换等。 1. 数据清洗 数据清洗是指对数据进行初步处理,去除不必要的信息和异常值。pandas 提供了多种方法来进行数据清洗,包括: - drop_duplicates:去除重复值。 - dropna:去除缺失值。 - replace:替换指定的值。 - fillna:填充缺失值。 - drop:删除指定的行或列。 2. 缺失值处理 缺失值是指数据中的某些值缺失或为空,pandas 提供了多种方法来处理缺失值,包括: - isnull:判断某个值是否为空。 - notnull:判断某个值是否不为空。 - dropna:删除包含缺失值的行或列。 - fillna:填充缺失值。 3. 重复值处理 重复值是指数据中的某些值出现了重复,pandas 提供了多种方法来处理重复值,包括: - duplicated:判断某个值是否出现过重复。 - drop_duplicates:删除重复值。 4. 数据转换 数据转换是指将数据转换成适合分析的格式或类型,pandas 提供了多种方法来进行数据转换,包括: - astype:将某列数据转换成指定的数据类型。 - apply:对某个列或行应用指定的函数。 - map:对某个列应用指定的映射关系。 - pivot_table:对数据进行透视操作。 以上就是 pandas 预处理的答案,希望对你有所帮助。如果还有其他问题,可以继续提问。
 
推荐文章
面冷心慈的仙人球  ·  数据清洗-异常值处理-DBSCAN算法查找异常值
1 月前
飘逸的人字拖  ·  关于土地增值税若干问题的通知
9 月前
叛逆的水煮鱼  ·  重庆市农业农村委员会办公室关于拟认定2022年“一村一品”示范村镇名单的公示‍
9 月前
文质彬彬的酸菜鱼  ·  我的荣耀V30手机在拨号中输入*#*#6130#*#*无反应,请问是什么原因,怎么解决 - CSDN文库
10 月前
迷茫的海龟  ·  斗罗大陆:3D区小舞身穿黑丝,千仞雪穿白丝,这比动画版还要美_风格_原版_白色
1 年前
睿智的牛肉面  ·  Notion:地表最强的笔记工具,也可以用上思维导图了! - 知乎
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号