大家好,我是小寒
今天给大家带来一篇 如何在 pandas 上使用 apply 方法,如果觉得不错,欢迎关注起来。
本文的内容主要如下:
- 在 Pandas Series 上使用 apply() 方法
- 在 Pandas Dataframe 上使用 apply() 方法
- 使用 apply() 方法的四个用例
apply() 方法主要用于数据清理,它专注于将方法应用于 pandas Series 中的每个元素以及 pandas DataFrame 的每一行/列。
在 Pandas Series 上使用 apply() 方法
Series 是一维数组,它具有名为索引的轴标签,并且还包含不同类型的数据,例如字符串、整数和其他 Python 对象。
让我们来创建一个 Series 对象,其中索引为行星,数据为对应行星的直径(以千米为单位)。
输出为:
让我们看看如何使用 apply() 方法将每个行星的直径以千米为单位转换为英里(每千米等于0.6214英里)。
输出:
上面的代码返回了每个行星的直径英里的转换。
为此,我们首先定义了一个名为 km_to_miles() 的函数,然后我们将不带任何括号的函数传递给 apply() 方法。
apply() 方法然后获取 Series 中的每个数据点并对其应用 km_to_miles() 函数。
在 Pandas Dataframe 上使用 apply() 方法
首先我们先创建一个 Dataframe,以了解如何使用 apply() 方法在 Dataframe 中进行行和列的操作。
我们现在创建了一个名为 studentinfo 的数据框,并将通过探索 4 个不同的用例来学习如何使用 apply() 方法。
案例一、
作为数据清理检查的一部分,我们将检查 STUDENT_NAME 列中的所有值是否都只是字母。为此,我们将定义一个名为 datacheck() 的函数,该函数获取 STUDENT_NAME 列并使用 isalpha() 方法返回 True 或 False。
现在我们将通过实现 apply() 方法对 studentinfo 数据框的 STUDENT_NAME 列应用 datacheck() 函数。
输出为:
我们可以看到 datacheck() 函数是如何应用于 STUDENT_NAME 列的每一行的,并且返回的结果存储在一个名为 IS_ALPHABET 的新列中。
案例二
我们对 ACADEMIC_STANDING 列进行处理,其中我们将类别 Good 标记为 ACADEMIC_STANDING_GOOD,其余类别标记为 ACADEMIC_STANDING_BAD。
为了实现这个用例,我们将定义一个名为 reduce_cardinality() 的函数,它获取列 ACADEMIC_STANDING。在函数内部,if 语句将用于比较检查,最后将 ACADEMIC_STANDING_GOOD 和 ACADEMIC_STANDING_BAD 返回到 ACADEMIC_STANDING 列中。
现在我们将通过实现 apply() 方法在 studentinfo 数据框的 ACADEMIC_STANDING 列上应用 reduce_cardinality() 函数。
输出为:
我们可以看到如何在 ACADEMIC_STANDING 列的每一行上应用 reduce_cardinality() 函数,其中 ACADEMIC_STANDING 列中的原始值现在已修改为两个不同的类别,即 ACADEMIC_STANDING_BAD 和 ACADEMIC_STANDING_GOOD,从而减少了数据中类别数。
用例三
在这个用例中,我们将再次减少列 MID_TERM 的类别数,我们将以 A、B、C 开头的等级标记为 Corhigher,以 D、F、W 开头的等级标记为 Dorlower。
为了实现这个用例,我们将定义一个名为 reduce_cardinality_grade() 的函数。
现在我们将通过实现 apply() 方法在 studentinfo 数据框的 MID_TERM_GRADE 列上应用 reduce_cardinality_grade() 函数。
我们可以看到如何在 MID_TERM_GRADE 列的每一行上应用 reduce_cardinality_grade() 函数,其中 MID_TERM_GRADE 列中的原始值现在已被修改为两个不同的类别,即 Corhigher 和 Dorlower,从而降低了基数。
用例四
我们将使用函数 check() 来创建一个名为 FINAL_GRADE_STATUS 的新列,其中 FINAL_GRADE_STATUS 中的值将根据以下两个条件确定:
- 如果学生的 ATTENDANCE_PERCENTAGE >= 0.6 并且 MID_TERM_GRADE 为 Corhigher,将被标记为 High_Chance_Of_Passing
- 如果学生的 ATTENDANCE_PERCENTAGE < 0.6 并且 MID_TERM_GRADE 为 Dorlower,将被标记为 Low_Chance_Of_Passing
现在我们将通过实现 apply() 方法对 studentinfo 数据框的 ATTENDANCE_PERCENTAGE、MID_TERM_GRADE 列应用 check() 函数。axis=1 参数表示遍历数据框中的行。
我们可以看到 check() 函数如何应用于 MID_TERM_GRADE 和 ATTENDANCE_PERCENTAGE 列的每一行,从而返回一个名为 FINAL_GRADE_STATUS 的新列。
在本文中,我们通过探索不同的用例了解了如何使用 apply() 方法。apply() 方法使用户能够对 Series 或 Dataframe的每个值执行不同类型的数据操作。
最后
今天简单介绍了一下如何在 pandas 中使用 apply() 方法。