超全超全 | 盘点66个Pandas函数,轻松搞定“数据清洗”!
本文转自公家号: 数据阐发与统计学之美
今天我们从头清点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课程征询