超全超全 | 盘点66个Pandas函数,轻松搞定“数据清洗”!

访客2023-12-01 15:20:2024

本文转自公家号: 数据阐发与统计学之美

今天我们从头清点66个Pandas函数合集,包罗数据预览、数值数据操做、文本数据操做、行/列操做等等,涉及“ 数据清洗”的方方面面。

Pandas 是基于NumPy的一种东西,该东西是为处理数据阐发使命而创建的。它供给了大量能使我们快速便当地处置数据的函数和办法。

数据预览

关于探痛快数据阐发来说,做数据阐发前需要先看一下数据的总体概略。 info 办法用来查看数据集信息, describe 办法将返回描述性统计信息,那两个函数各人应该都很熟悉了。

describe办法默认只给出数值型变量的常用统计量,要想对DataFrame中的每个变量停止汇总统计,能够将此中的参数include设为all。

head 办法和 tail 办法则是别离展现数据集的前n和后n行数据。假设想要随机看N行的数据,能够利用 sample 办法。

df.sample( 3)

输出:

假设要查抄数据中各列的数据类型,能够利用 .dtypes ;假设想要值查看所有的列名,能够利用 .columns 。

df.columns

输出:

Index(['日期', '销量'], dtype='object')

前面介绍的函数次要是读取数据集的数据信息,想要获得数据集的大小(长宽),能够利用 .shape 办法。

df.shape

输出:

(5, 2)

别的, len 能够查看某列的行数, count 则能够查看该列值的有效个数,不包罗无效值(Nan)。

缺失值与反复值

Pandas清洗数据时,揣度缺失值一般摘用 isnull 办法。此外, isnull.any 会揣度哪些”列”存在缺失值, isnull.sum 用于将列中为空的个数统计出来。

df.isnull.any

输出:

日期 False

销量 True

dtype: bool

发现“销量”那列存在缺失值后,处置办法要么删除 dropna ,要么填充 fillna 。

df.fillna( 50)

输出:

Pandas清洗数据时,揣度反复值一般摘用 duplicated 办法。假设想要间接删除反复值,能够利用 drop_duplicates 办法。此处较为常见,不再过多演示。

数值数据操做

我们在处置数据的时候,会碰着批量替代的情状, replace 是很好的处理办法。它既撑持替代全数或者某一行,也撑持替代指定的某个或指定的多个数值(用字典的形式),还能够利用 正则表达式替代。

df[ "编号"].replace( r'BA.$', value= 'NEW', regex= True, inplace = True)

输出:

在Pandas模块中, 调⽤ rank ⽅法能够实现数据排名。

df[ "排名"] = df.rank(method= "dense").astype( "int")

输出:

rank ⽅法中的method参数,它有5个常⽤选项,能够搀扶帮助我们实现差别情状下的排名。

clip 办法,用于对超越或者低于某些数的数值停止截断 [1] ,来包管数值在必然范畴。好比每月的迟到天数必然是在0-31天之间。

df[ "迟到天数"] = df[ "迟到天数"].clip( 0, 31)

独一值, unique 是以数组形式返回列的所有独一值,而 nunique 返回的是独一值的个数。

df[ "gender"].unique

df[ "gender"].nunique

输出:

在数值数据操做中, apply 函数的功用是将一个自定义函数感化于DataFrame的行或者列; applymap 函数的功用是将自定义函数感化于DataFrame的所有元素。他们凡是也与匿名函数lambda一路利用。

df[ "数量"].apply( lambdax: x+ 1)

输出:

文本数据操做

之前我们曾经介绍过 经常被人漠视的:Pandas 文本型数据处置 。在对文本型的数据停止处置时,我们会大量利用字符串的函数,来实现对一列文本数据停止操做 [2] 。

函数办法

用法释义

cat

字符串的拼接

contains

揣度某个字符串能否包罗给定字符

startswith/endswith

揣度某个字符串能否以...开头/结尾

get

获取指定位置的字符串

len

计算字符串长度

upper、lower

英文大小写转换

pad/center

在字符串的右边、右边或摆布两边添加给定字符

repeat

反复字符串几次

slice_replace

利用给定的字符串,替代指定的位置的字符

split

朋分字符串,将一列扩展为多列

strip、rstrip、lstrip

往除空白符、换行符

findall

操纵正则表达式,往字符串中婚配,返回查找成果的列表

extract、extractall

承受正则表达式,抽取婚配的字符串(必然要加上括号)

举例:

df.insert( 2, "姓名",

df[ "姓"].str.cat(df[ "名"], sep= ""))

输出:

df[ "手机号码"] = df[ "手机号码"].str.slice_replace( 3, 7, "*"* 4)

输出:

df[ "地址"].str.extract( "([\u4e00-\u9fa5]+)")

输出:

行/列操做

数据清洗时,会将带空值的行删除,此时DataFrame或Series类型的数据不再是持续的索引,能够利用 reset_index 重置索引。

df.reset_index(drop= True)

输出:

rename 重定名用于更改行列的标签,即行列的索引。能够传进一个字典或者一个函数。在数据预处置中,比力常用。

df.rename(columns={ 'mark': 'sell'}, inplace= True)

输出:

行列转置,我们能够利用T属性获得转置后的DataFrame。

df.T

输出:

删除行列,能够利用 drop 。

df.drop(columns=[ "mark"])

输出:

数据阐发师在停止数据处置时经常会碰着长宽表互转的情状,那也是一道常见的数据阐发面试题。

melt 办法能够将宽表转长表,即表格型数据转为树形数据。

df.melt(id_vars= "姓名", var_name= "科目", value_name= "功效")

输出:

pivot 办法能够将长表转宽表,即树形数据转为表格型数据。

df.pivot(index= '姓名', columns= '科目', values= '功效')

输出:

pivot 其实就是用 set_index 创建条理化索引,再用 unstack 重塑

df1.set_index([ '姓名', '科目']).unstack( '科目')

数据分组与数据透视表更是一个常见的需求, groupby 办法能够用于数据分组。

df.groupby( "科目").mean

因为 pivot_table 数据透视表的参数比力多,就不再利用案例来演示了,详细用法可参考下图。

数据挑选

假设是挑选行列的话,凡是有以下几种办法:

有时我们需要按前提抉择部门列、部门行,一般常用的办法有:

操做

语法

返回成果

抉择列

df[col]

Series

按索引抉择行

df.loc[label]

Series

按数字索引抉择行

df.iloc[loc]

Series

利用切片抉择行

df[:5]

DataFrame

用表达式挑选行 [3]

df[bool_vec]

DataFrame

除此以外,还有良多办法/函数能够用于“数据挑选”。

假设想间接挑选包罗特定字符的字符串,能够利用 contains 那个办法。

例如,挑选户籍地址列中包罗“黑龙江”那个字符的所有行。

df[df[ "户籍地址"].str.contains( "黑龙江")]

query 查询办法也能够用来挑选数据,好比查询“语文”功效大于“数学”功效的行笔录。

df.query( "语文 英语")

输出:

select_dtypes 办法可用于挑选某些数据类型的变量或列。举例,我们仅抉择具有数据类型'int64'的列。

df.select_dtypes( "int64")

输出:

isin 承受一个列表,揣度该列中元素能否在列表中。

name_list = [ "张三", "李四"]

df[df[ "姓名"].isin(name_list)]

输出:

数值数据统计运算

在对数值型的数据停止统计运算时,除了有算术运算、比力预算还有各类常见的汇总统计运行函数,详细如下表所示。

函数办法

用法释义

count

非NaN数据项计数

sum

乞降

mean

均匀值

median

中位数

mode

寡数

max

更大值

min

最小值

std

原则差

var

方差

quantile

分位数

skew

返回偏态系数

kurt

返回峰态系数

举例:

df[ "语文"].max

输出:

155

最初,再说一个比力常用的统计运算函数——累加 cumsum 。

df[ "累计销量"] = df[ "销量"].cumsum

输出:

注: cumprod 办法是指连乘,用于与连加一样,但利用频次较少。

今天我们清点了66个Pandas函数合集,但现实还有良多函数在本文中没有介绍,包罗时间序列、数据表的拼接与毗连等等。此外,那些类似 describe 那种各人十分熟悉的办法都省往了代码演示。假设各人有在工做生活中停止“数据清洗”十分有用的Pandas函数,也能够在评论区交换。

参考材料

[1][2]

经常被人漠视的:Pandas文本型数据处置:

[3]

深进浅出Pandas: 操纵Python停止数据处置与阐发

点那里👇存眷我,记得标星哦~

CDA课程征询

控制面板

您好,欢迎到访网站!
  查看权限

最新留言