明天咱们盘点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销量    Truedtype: 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编程学习圈,或是返回编程学习网,理解更多编程技术常识,还有大量干货学习材料能够支付!