数据科学家必不可少的 5 个 Pandas 函数 [2022]

已发表: 2021-01-02

在使用 Python 进行数据科学和数据分析时, Pandas显然是最常用和最受欢迎的库之一。 是什么让它特别? 在本教程中,我们将介绍 5 个这样的功能,这些功能使 Pandas 成为数据科学家工具包中非常有用的工具。

在本教程结束时,您将了解 Pandas 中的以下函数以及如何将它们用于您的应用程序:

  • 价值计数
  • 通过...分组
  • loc 和 iloc
  • 独特而独特
  • 剪切和 qcut

目录

数据科学家的顶级 Pandas 函数

1. value_counts()

Pandas 的 value_counts() 函数用于显示数据框列中所有唯一元素的计数。

专业提示:为了演示,我将使用 Titanic 数据集。

现在,要查找 Embarked 功能中的类计数,我们可以调用 value_counts 函数:

火车[ '登船' ].value_counts()

#输出:
S 644
C 168
77

此外,如果这些数字没有多大意义,您可以查看它们的百分比:

train[ 'Embarked' ].value_counts(normalize= True )

#输出:
S 0.724409
C 0.188976
Q 0.086614

此外,默认情况下 value_counts 不考虑 NaN 或缺失值,这对于检查非常重要。 为此,您可以将参数 dropna 设置为 false。

train[ 'Embarked' ].value_counts(dropna= False )

#输出:
S 644
C 168
77
2

2. group_by()

使用 Pandas group_by,我们可以按某些列拆分和分组我们的数据框,以便能够查看数据中的模式和细节。 Group_by 涉及 3 个主要步骤:拆分、应用和组合。

train.groupby( '性别' ).mean()

输出:

如您所见,我们按特征“性别”对数据框进行分组,并使用方法进行聚合。

您还可以使用 Pandas 的内置可视化来绘制它:

df.groupby( 'Sex' ).sum().plot(kind= 'bar' )

我们还可以通过使用多个特征进行分层拆分来进行分组。

df.groupby([ 'Sex' , 'Survived' ] )[ 'Survived' ].count()

必读:熊猫面试问题

3.loc和iloc

Pandas 中的索引是最基本的操作之一,最好的方法是使用 loc 或 iloc。 “Loc”代表位置,“i”代表索引位置。 换句话说,当您想使用列/行的名称或标签来索引数据框时,您将使用 loc。 当你想使用位置索引列或行时,你会使用 iloc 函数。 我们先来看看loc

train.loc[ 2 , '性' ]

上面的操作给了我们行索引 2 和列 'sex' 的元素。 同样,如果您需要 sex 列的所有值,您可以:

train.loc[:, 'sex' ]

此外,您可以过滤掉多个列,例如:

train.loc[:, 'sex' , '登船' ]

您还可以使用 loc 中的布尔条件过滤掉,例如:

train.loc[train.age >= 25 ]


要仅查看某些行,您可以使用 loc 对数据框进行切片:

火车.loc[ 100 : 200 ]

此外,您可以将列轴上的数据框切片为:

train.loc[:, 'sex' : 'fare' ]

上述操作会将所有行的数据帧从“sex”列切片到“fare”。

现在,让我们继续讨论 iloc。 iloc 仅使用索引号或位置进行索引。 您可以切片数据帧,如:

火车.iloc [ 100 200,2 9 ]


上述操作将从 100 到 199 的行和从 2 到 8 的列进行切片。同样,如果您想水平拆分数据,您可以执行以下操作:

train.iloc[: 300 , :]

4. unique() 和 nunique()

Pandas unique 用于从任何特征中获取所有唯一值。 这主要用于获取数据中分类特征中的类别。 Unique 显示所有唯一值,包括 NaN。 它将其视为不同的唯一值。 让我们来看看:

火车[ 'sex' ].unique()

#输出:
[ '女' '男' ]

正如我们所见,它为我们提供了“性”特征的独特价值。

同样,您还可以检查唯一值的数量,因为某些功能中可能存在很多唯一值。

火车[ 'sex' ].nunique()

#输出:
2

但是,您应该记住 nunique() 不会将 NaN 视为唯一值。 如果您的数据中有任何 NaN,那么您需要将 dropna 参数作为 False 传递,以确保 Pandas 也为您提供包括 NaN 在内的计数。

train[ 'sex' ].nunique(dropna= False )

#输出:
3

5.cut() 和 qcut()

Pandas cut 用于对范围内的值进行分箱,以离散化特征。 让我们深入了解它。 分箱是指根据连续值的范围将数值或连续特征转换为一组离散值。 当您想根据数据点所在的范围查看趋势时,这会派上用场。

让我们通过一个小例子来理解这一点。

假设,我们有 7 个孩子的分数,范围从 0 到 100。 现在,我们可以将每个孩子的分数分配到特定的“bin”。

df = pd.Dataframe(数据= {
'姓名' :[ 'Ck' 'Ron' 'Mat' 'Josh' 'Tim' 'SypherPK' 'Dew' 'Vin' ],
'标记' :[ 37 , 91 , 66 , 42 , 99 , 81 , 45, 71 ]
})

df[ 'marks_bin' ] = pd.cut(df[ 'Marks' ], bins=[ 0 , 50 , 70 , 100 ], 标签=[ 1 , 2 , 3 ])

然后我们可以将输出附加为新特征,并且可以删除 Marks 特征。 新的数据框看起来像:

#输出:
名称 Marks_bin
0 CK 37 1
1罗恩91 3
266 2
3乔什42 1
4蒂姆99 3
5赛弗PK 81 3
6露水45 1
7 VIN 71 3

所以,当我说bins = [ 0 , 50 , 70 , 100 ]时,这意味着有 3 个范围:

对于 bin 1,0 到 50,

箱 2 为 51 至 70,以及

71 到 100 属于 bin 3。

因此,现在我们的特征不包含分数,而是包含该学生分数所在的范围或 bin。

与 cut() 类似,Pandas 还提供了名为qcut()的兄弟函数 Pandas qcut接受分位数的数量,并根据数据分布将数据点划分到每个 bin。 所以,我们可以把上面的cut函数改成qcut:

df[ 'marks_bin' ] = pd.qcut(df[ 'Marks' ], q= 3 , 标签=[ 1 , 2 , 3 ])

在上述操作中,我们告诉 Pandas 将特征分成 3 等份并分配标签。 输出如下:

名称 Marks_bin
0 CK 37 1
1罗恩91 3
266 2
3乔什42 1
4蒂姆99 3
5赛弗PK 81 3
6露水45 1
7 VIN 71 2

注意最后一个值是如何从 3 变为 2 的。

另请阅读:Pandas Dataframe Astype

在你走之前

我们看到了一些最常用的 Pandas 函数。 但这些并不是唯一重要的,我们鼓励您了解更多 Pandas 最常用的功能。 这是一种很好且有效的方法,因为您可能不会使用 Pandas 的所有功能,而只使用其中的一部分。

学习世界顶尖大学的数据科学课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

为什么 Pandas 库如此受欢迎?

这个库在数据科学家和数据分析师中确实很受欢迎。 这样做的原因是它对大量文件格式的强大支持和丰富的功能集合来处理提取的数据。 它可以轻松地与 NumPy 等其他库和包集成。

这个强大的库提供了各种有用的功能,可以灵活地操作庞大的数据集。 一旦你掌握了它,你就可以用几行代码轻松完成伟大的任务。

什么是合并功能,为什么要使用它?

合并功能是 Pandas 数据框的一个特殊功能,用于合并 2 个数据框的多行或多列。 它是一种高内存连接操作,类似于关系数据库。 您可以使用 on = Column Name 来合并公共列上的数据框。

您可以更新 left_on = Column Name 或 right_on = Column Name 以使用左侧或右侧数据框中的列作为键来对齐表。

除了 Pandas 库,还有哪些 Python 数据科学库?

除了 Pandas 库之外,还有很多 Python 库被认为是数据科学的一些最佳库。 其中包括 PySpark、TensorFlow、Matplotlib、Scikit Learn、SciPy 等等。 它们中的每一个都因其独特而令人惊叹的特性和功能而被广泛使用。

每个库都有其自身的意义,例如当您必须处理统计数据时,更经常使用 SciKit Learn。 除了分析数据,您还可以使用这些神奇库提供的功能创建仪表板和可视化报告。