Pandas 变换函数在数据科学中的应用

数据科学的学习旅程中,大多数数据科学家不会立即使用Excel。但是Pandas的变换函数对于数据科学家来说是一个非常实用的工具,特别是在Python中进行特征工程时。个人在一次黑客马拉松中开始使用这个功能,当时需要进行特征工程,变换函数的快速工作让感到惊喜。强烈认为将从了解和使用变换函数中受益,因此决定在本文中介绍它。

要学习Python和Pandas在数据科学中的基础知识,请查看这些受欢迎的课程:Python数据科学和Python中Pandas数据分析。

目录

  • Python中的变换函数是什么?
  • 为什么Python的变换函数很重要?
  • 方法1:使用Groupby后跟merge()
  • 方法2:使用Python的变换函数
  • Python中Apply和变换函数的区别
  • 常见问题解答

Python中的变换函数是什么?

Python的变换函数返回一个经过转换的自产数据框,其中包含了应用其参数中指定的函数后的转换值。这个数据框的长度与传递的数据框相同。变换()方法的参数可以是NumPy函数、字符串函数的名称或用户自定义的函数。

Pandas系列是一个一维的ndarray,带有轴标签。虽然标签不必是唯一的,但它们必须是可哈希的类型。

让通过一个例子来解释。假设想要将数据框中的每个元素乘以10:

# 导入库 import pandas as pd import numpy as np # 创建数据框 df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c']) # 应用变换函数 print(df.transform(func=lambda x: x * 10))

为了更好地理解,让分解上述代码的每一行:

  • 导入库:pd是Pandas库的别名,用于数据操作和分析。np是NumPy库的别名,用于Python中的数值操作。
  • 创建数据框:使用NumPy数组创建Pandas数据框。数组包含按行和列排列的数值数据,并指定列名为‘a’、‘b’和‘c’。
  • 应用变换函数:使用数据框的变换函数对数据框的每个元素应用指定的函数。
  • 指定的函数是一个lambda函数(lambda x: x * 10),它将每个元素(x)乘以10。
  • 然后打印出转换后的数据框。

为什么Python的变换函数很重要?

变换在特征提取中非常有用。顾名思义,从现有特征中提取新特征。让通过一个例子来理解变换函数的重要性。

这里有一个关于百货商店的数据集:可以看到每个用户购买了多个产品,购买金额各不相同。想知道每个用户的平均购买金额。这有助于为模型创建一个新特征,以更好地理解关系。

这是期望的输出。有多种方法可以做到这一点:

  • 使用Groupby后跟merge()
  • 变换函数方法

将在本文中实现这两种方法。要了解更多关于2024年要使用的十大机器学习算法,请查看学习机器学习教程。

方法1:使用Groupby后跟merge()

第一种方法是使用groupby聚合数据,然后使用merge()函数将这些数据重新合并回原始数据框。让来做吧!

  1. 导入库并读取数据集
  2. 使用groupby计算聚合
  3. 使用merge()函数重新组合

现在,困难的部分。如何将这些数据重新组合回原始数据框?将为此任务使用merge()函数。可以在这里和这里阅读更多关于使用Pandas在Python中进行连接和合并的信息。

原始数据框看起来像这样:使用NumPy数组创建Pandas数据框。数组包含按行和列排列的数值数据,并指定列名为‘a’、‘b’和‘c’。

这当然可以完成工作。然而,这是一个多步骤的过程,需要额外的代码来获取所需的数据形式。这个多步骤的过程在资源消耗方面可能是一个问题,在黑客马拉松中,时间是一个主要的限制因素。

可以使用Pandas中的变换函数有效地解决这个问题。

方法2:使用Python的变换函数

这是一个重要的功能,用于创建特征。相信,它可以成为一个游戏规则改变者!

执行转换后,变换函数保留了与原始数据集相同数量的项目。将依赖于一个非常简单的单行步骤,使用groupby后跟变换:

不能更简单了,对吧?原始数据框看起来与上一步中的类似。

变换函数执行上述操作所需的时间比大型数据框上的第一种方法要少。这是一个显著的优势,与之前使用的方法相比。让用Pandas在Python中演示变换函数。

假设创建了一个包含1,000,000行和3列的随机数据集。现在根据groupby(类似于根据groupby user_id计算所有购买的平均值)计算一列的平均值。

  1. 导入库
  2. 创建数据框
  3. 使用合并过程
  4. 使用变换函数

这清楚地表明变换函数比之前的方法快得多。做得很好!

Python中Apply和变换函数的区别

现在,假设想根据另一个列的值创建一个新列。这是正在处理的数据框:

使用Apply函数:

# 应用函数 df['new_column'] = df['existing_column'].apply(lambda x: x * 2)

使用变换函数:

# 变换函数 df = df.assign(new_column=df['existing_column'].transform(lambda x: x * 2))

apply函数发送整个数据框的副本以供操作,因此可以同时操纵所有行或列。

变换函数不支持此功能。它基于轴值操纵单个行或列,并不操纵整个数据框。因此,可以根据需要使用Apply或变换函数。

  1. Q1. Pandas中的变换函数是什么?
  2. A1.Pandas中的变换函数执行特定组的计算,并返回与原始数据框形状相同的数据框。它允许通过将函数应用于数据框中的每个组来高效地操作数据,促进了按组的变换和聚合。
  3. Q2. 如何使用Pandas绘制数据框?
  4. A2. 使用Pandas绘制数据框,可以使用内置的绘图函数。使用df.plot()命令进行基本绘图,或指定绘图类型、列和样式选项。这使得直接从Pandas数据框轻松可视化数据趋势和模式。此外,要在绘图之前转换数据,可以探索pandas数据框.transform方法,将函数应用于数据框的元素。
  5. Q3. 如何在Python中对数据框实现自定义变换函数?
  6. A3. 要在Python中对数据框实现自定义变换函数,定义函数,然后使用数据框的apply方法,将自定义函数作为参数传递。这允许根据需要转换数据,增强数据框操作和分析能力。关键字json也可以表示变换涉及JSON数据操作。
  7. Q4. 如何使用Python pandas接收实时数据?
  8. A4. 要使用Python Pandas进行实时数据操作,使用read_csv或read_excel等函数从API或数据库等源获取数据。使用requests等库进行API集成,确保动态数据集的定期更新。
  9. Q5. Python中Transform和Apply的区别是什么?
  10. A5. 在Python中,'Transform'通常用于特征工程的上下文中,使用函数修改数据。同时,'Apply'用于pandas数据框,沿特定轴应用函数。'Transform'通常创建新特征,而'apply'处理数据框内现有的数据。
  11. Q6.Python中的args和kwargs是什么?
  12. A6. 在Python中,args和kwargs用于处理函数中可变长度的参数列表。args允许传递可变数量的位置参数,而kwargs处理可变长度的关键字参数,允许在函数中传递命名参数。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485