Pandas教程(三)—— 数据清洗与准备

1.处理缺失值

 1.1 数据删除函数

    作用:删除Dataframe某行或某列的数据 

    语法:df.drop( labels = [ ] )

drop函数的几个参数:

         labels =:接收一个列表,内含删除行 / 列的索引编号或索引名

         axis =:删除的轴向   0代表删除行;1代表删除列

         inplace =:是否改变原数组    默认False 即生成一个新数组

 1.2 缺失值的查看

方法

描述

df.isnull()返回一个布尔数组,是缺失值就显示True
df.notnull()返回一个布尔数组,是缺失值就显示False

 1.3 过滤缺失值 

     作用:删除缺失值所在的行 / 列

     语法:df.dropna( axis=0, how='any', thresh=None, subset=None, inplace=False )

dropna函数的几个参数:

         axis =:0代表删除包含缺失值的行;1代表删除包含缺失值的列

         how=:“any”代表删除有缺失值的行 / 列 ; “all”代表删除所有值均缺失的行 / 列

         thresh=:行 / 列中若达不到thresh个非缺失值,就删除

         subset=:输入一个含索引名称的list,代表对这些列的空值进行删除

 1.4 填充缺失值

     作用:将缺失值补全为指定的值

     语法:df.fillna(value, method=None, axis=None, inplace=False, limit=None)

fillna函数的几个参数:

         value:填充的值,也可输入一个字典(用于为不同的列设置不同的填充值)

         method:填充方法   “ffill”用前面的值填充    “bfill”用后面的值填充

         axis:修改填充的轴

         limt:最大填充数

2. 数据转换方法

 2.1 删除和提取重复值

   2.1.1 查看元素个数

  •  语法:df [ 列名 ] . value_counts()
  •  与count()函数的区别:前者是返回各个元素的个数,后者时返回该列中所有元素的总数

   2.1.2 删除重复值

  •  语法: df.drop_duplicates(subset=None, keep='first', inplace=False)

参数说明

        subset:输入一个list,用来要操作的列,默认是所有列

        keep:指定处理重复值的方法      

                   “first” 指保留第一次出现的值      “last” 指保留最后一次出现的值

                   “False” 不保留重复值,全部删除

   2.1.3 提取重复值

  •  语法:df [ df.duplicated(subset=None, keep='first') ] 
  •  原理:相当于运用了索引切片的操作,中括号内的函数用来判断是否为重复值 

   

 2.2 数据替换

   2.2.1 元素替换

  • 语法:df.replace(被替换的元素,替换元素)
  • 注意: 1)如果要一次替换多个不同的值,可以利用列表或者字典
  •             2)如果想仅对某列替换,先利用df [ ] 切片即可

   2.2.2 字符串替换 

  •  语法:df.str.replace(被替换的字符串,替换字符串)
  •  区别:它是对字符串进行按元素替代的,可以对字符串切片后进行替换操作

        例如:“山东省” 一> “山西省”,该方法就可直接替换“东” 一>“西”,这对于操作长数据非常方便

 2.3 离散化和分箱 

        连续值经常需要离散化,或者分离成“箱子”进行处理。即:分组

   2.3.1 指定分界点分箱

  •  语法:pd.cut  (x, bins, right=True, labels=None, precision=3, include_lowest=False)

参数说明:

         

          x:    待切割的一维数组或列表对象

          bins:   切割箱      若输入一个整数,则定义了x宽度范围内的等宽面元数量;

                                        若输入一个序列,则代表分界点

          right:   是否为左开右闭区间

          labels:   自定义箱子名称     传入数组或列表(与箱子等长)

          precision:  箱子精度            保留几位小数

          include_lowest:第一个区间的左端点是否包含            

       

 

   2.3.2 等宽(频)分箱

  •  作用:保证每个箱子的样本数一样
  •  语法:pandas.qcut  ( x, q, labels=None, precision=3 )

参数说明:

          q:整数(分成几份)  或   分位数(0~1)组成的数组(分割点)

   2.3.3 补充说明 

     1)以上两个函数会返回一个Categorical对象,会显示每个元素对应的箱名

     2)对于返回的Categorical对象,可以结合数学统计函数去做数据统计

import pandas as pd
year = [1992,1985,1937,2005,2015,1999] #数据
box = [1930,1960,1990,2020]    #箱子
box_name=["初期","中期","后期"]  #定义箱子名

result1 = pd.cut(year,box,labels=box_name)  #按指定的箱分割,并指定箱名
print(result1)
print("-"*30)
print(result1.describe()) #做数据统计
print("-"*30)

result2 = pd.qcut(year,3) #分成三段
print(result2)

 

 2.4 其他数据转化操作

操作方法参数
实现one hot encodeget_dummies(data)

columns:需要转换的列

prefix:转换后列名的前缀

随机抽取子集df.sample(n=)

replace:取出后是否放回(默认不放回)

n:抽取的样本数(列数目)

重命名轴索引df.rename(index= ,    columns=)可以输入字典{ 旧索引名:新索引名  }

 

  • one hot encode(独热编码):   将离散型特征的每一种取值都看成一种状态 
正常
one hot encode

3.字符串操作

 3.1 字符串常用方法

python常用字符串方法

 

import pandas as pd
str = "a / b/   wow"
new = str.split("/")
print(new)    # 按符号拆分字符串   ['a ', ' b', '   wow']

piece = [x.strip() for x in new]
print(piece)  # 与strip搭配使用 ,去除空格   ['a', 'b', 'wow']

jia = "--".join(piece)
print(jia)    # 将字符串用符号拼接起来   a--b--wow

print(jia.index("-")) # 返回“-”第一次出现的位置  1

 3.2 正则表达式

        正则表达式是一组由字母和符号组成的特殊文本,用于在文本中灵活的查找我们想要的格式的字符串,例如在一封邮件中提取所有的电话,在一篇文章中提取所有的地址

 

   3.2.1 正则表达式的常用函数

          要使用正则表达式函数,首先要导入re模块:import re

函数描述
re.compile()编译正则表达式,用其他函数再调用正则表达式,就不用重复编译了,提高效率
re.spilt(“分隔符”,data)通过指定的分隔符将字符串拆分

re.findall(正则表达式,data)

匹配出字符串中所有符合正则表达式的值,并且以列表的形式返回

re.sub(old,new)

替换字符串

比replace好处:可以在 "[ ]" 内输入多个符号,同时被取代 

re.search(正则表达式,data)

返回文本中第一个匹配项
re.match(正则表达式,data)仅从字符串起始位置开始匹配,若满足要求则返回

 

 

   3.2.2 正则表达式基础语法

 

 

  • 贪婪与非贪婪

       1)贪婪:'[a-zA-Z]{3,5}'    一>  要求找连续的3~5个字母

                  先找三个连续的字母,最多找到5个连续的字母后停止;在3个以后且5个以内发

           现了不是字母的也停止。然后接着找下一个

       2)非贪婪: '[a-zA-Z]{3}'     一>   找连续的3个字母,找到3个就停止,接着下一个

# 提取字符串a中所有的数字
import re
a = '孙悟空7猪八戒6沙和尚3唐僧6白龙马'
r = re.findall('[0-9]',a)
print(r)                   # 返回结果:['7', '6', '3', '6']


# 找到字符串中间字母不是d或e的单词
a = 'xyz,xcz,xfz,xdz,xaz,xez'
r = re.findall('x[^de]z',a)
print(r)                   # 返回:['xyz', 'xcz', 'xfz', 'xaz']      


# 提取特殊字符、空格、\n、\t等
import re
a = 'Excel 12345Word\n23456_PPT12lr'
r = re.findall('\W',a)
print(r)       

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/275264.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用友薪福社解决社会化用工难题,助力企业走上“降本增效”之路

“就业”一直是人们关注的重点。用人需求与求职人数环比均明显上升,人力资源市场活跃度也明显增强,但供求关系整体仍旧偏紧。在行业快速发展的前提下,如何快速缓解企业用工荒难题,成为当前诸多企业面临的困境。为了科学合规地降低…

金融贷款行业怎么精准获客,电销打吐了!教你两招

助贷行业,一般都会设有kpi,压力竞争都不小。虽然现在贷款电销大家对此意见不同,但是,不可否认,这个行业,电销就是它们最快速的获客方式。只要耐得住性子,有一份精准的话单,就可以开工…

二叉树数据结构:深入了解二叉树的概念、特性与结构

在探索栈和队列之后(大家可以移步至我的数据结构专栏):T-rLN的数据结构专栏 我们转向了更为复杂而有趣的数据结构——二叉树。本文将引领我们进入二叉树的世界,从最基本的概念和结构开始,逐步深入了解二叉树的顺序结构…

Postman使用

Postman使用 Pre-request Script 参考: Scripting in Postman 可以请求、集合或文件夹中添加Pre-request Script,在请求运行之前执行JavaScript 如设置变量值、参数、Header和正文数据,也可以使用Pre-request Script来调试代码&#xff0…

解决Hive在DataGrip 中注释乱码问题

注释属于元数据的一部分,同样存储在mysql的metastore库中,如果metastore库的字符集不支持中文,就会导致中文显示乱码。 不建议修改Hive元数据库的编码,此处我们在metastore中找存储注释的表,找到表中存储注释的字段&a…

【汇编笔记】初识汇编-内存读写

汇编语言的由来: CPU是计算机的核心,由于计算机只认识二进制,所以CPU执行的指令是二进制。 我们要想让CPU工作,就得给他提供它认识的指令,这一系列的指令的集合,称之为指令集。 指令集: 不同的体…

VR全景图片制作时有哪些技巧,VR全景图片能带来哪些好处

引言: VR全景图片是通过虚拟现实技术制作出的具有沉浸感的图片,能够提供给用户一种身临其境的感觉。在宣传方面,它有着独特的优势和潜力,能够帮助吸引更多的潜在客户,那么VR全景图片制作时有哪些技巧,VR全…

【科普】家长们:如何早期发现孩子的听力问题?

孩子太小还不会说话, 或表达不准确, 家长往往很难发现他们听力下降; 那在生活中 如何发现孩子听力异常呢? 1、新生儿听力筛查 每一个新生儿出生后都要求做听力筛查,这样可以及早判断是否存在听力障碍的可能&#…

【Java 进阶篇】Jedis 操作 Set 与 SortedSet 详解

Redis 是一个强大的键值存储系统,而 Jedis 是 Redis 的 Java 客户端,为 Java 开发者提供了方便的操作接口。在这篇博客中,我们将深入探讨 Jedis 如何操作 Redis 中的 Set 和 SortedSet 数据结构。无论你是初学者还是有一些经验的开发者&#…

javaEE -18(11000字 JavaScript入门 - 3)

一:事件 (高级) 1.1 注册事件(绑定事件) 给元素添加事件,称为注册事件或者绑定事件,注册事件有两种方式:传统方式和方法监听注册方式 传统注册方式 : 利用 on 开头的…

dvwa问题篇 -- dvwa出现数据库无法访问的时候,Could not connect to the MySQL service. -- 小黑解决教程

各位小伙伴初次玩dvwa会出现各种问题,本来想把一些问题直接总结写一篇dvwa文章来着,但因为都是关键字搜索,所以将一些问题都拆分出来,以便大家方便查类似问题。(大家有遇到不一样的问题欢迎投稿!&#xff0…

windows使用docker运行主从数据库,io线程一直在connect

1需求: 实现mysql数据库主从同步 分析:实现主从同步需要两个数据库,这两个数据库一般放在不同的机器上(服务器上/个人PC上),我自己只有一个PC,也没有购买个人服务器,所以需要使用虚…

【辐射场】3D Gaussian Splatting

三维高斯…喷喷 \, 3D Gaussian Splatting,下文简称3DGS,是好一段时间以来在三维内容创作和三维重建领域比较有热度的一项技术。 它属于基于图像的三维重建方法,意思就是你对现实物体或者场景拍照片,就能给你训练成一个场景模型&a…

泛型的使用

泛型 泛型的概念 Java泛型是一种在编译时期进行类型检查和类型安全的机制,它可以让我们在编写代码时指定参数或返回值的类型,从而提高代码的可读性和可维护性。 孩童的智商可能还不足以理解泛型的具体概念和实现细节,但是我们可以通过类比…

unity exe程序置顶和全屏

1.置顶和无边框 设置显示位置和范围 using System; using System.Runtime.InteropServices; using UnityEngine; public class WindowMod : MonoBehaviour {public enum appStyle{FullScreen,WindowedFullScreen,Windowed,WindowedWithoutBorder}public enum zDepth{Normal…

【map】【滑动窗口】【优先队列】LeetCode480滑动窗口中位数

作者推荐 动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本 本题涉及知识点 滑动窗口 map 优先队列 题目 中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。 例如&#xf…

「品牌变革必备」品牌战略咨询公司精选策略,引领企业焕新之路

每个成功故事的背后,都有一个强大的品牌战略。每个成功品牌战略的背后,都有品牌战略咨询团队或者公司的支持。那么,如何找到那个能带领您的企业实现突破性成长的战略合作伙伴呢。一起来探究一下。 首先,我们要明确两个定义&#x…

独立站:品牌建设的新高地

一、引言 在当今的商业环境中,品牌建设已成为企业成功的关键因素之一。随着电子商务的迅猛发展,独立站已成为品牌建设的新高地,为企业提供了展示品牌形象、扩大知名度和美誉度的平台。本文将深入探讨独立站在品牌建设中的优势和应用&#xf…

PYTHON基础:线性算法--线性回归|岭回归|套索回归模型

常用的三种线性模型算法–线性回归模型、岭回归模型、套索回归模型 线性模型基本概念 线性模型的一般预测模型是下面这个样子的,一般有多个变量,也可以称为多个特征x1、x2、x3 … 最简单的线性模型就是一条直线直线的方程式,b0是截距&#…

虹科方案丨L2进阶L3,数据采集如何助力自动驾驶

来源:康谋自动驾驶 虹科方案丨L2进阶L3,数据采集如何助力自动驾驶 原文链接:https://mp.weixin.qq.com/s/qhWy11x_-b5VmBt86r4OdQ 欢迎关注虹科,为您提供最新资讯! 12月14日,宝马集团宣布,搭载…