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