关于pandas:盘点66个Pandas函数轻松搞定数据清洗

8次阅读

共计 3805 个字符,预计需要花费 10 分钟才能阅读完成。

明天咱们盘点 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(lambda x: 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 函数,也能够在评论区交换。

如果你感觉文章还不错,欢送关注公众号:Python 编程学习圈,或是返回编程学习网,理解更多编程技术常识,还有大量干货学习材料能够支付!

正文完
 0