合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
如果你曾经使用过Pandas处理表格数据,你可能会熟悉导入数据、清洗和转换的过程,然后将其用作模型的输入。然而,当你需要扩展和将代码投入生产时,你的Pandas管道很可能开始崩溃并运行缓慢。在这篇文章中,笔者将分享2个技巧,帮助你让Pandas代码快得离谱,提升数据处理效率并避免常见的陷阱。
在Pandas中,矢量化操作是一种强大的工具,它可以用一种更简洁和高效的方式处理整个数据框的列,而不是逐行循环。
广播是矢量化操作的一个关键要素,它允许您直观地操作具有不同形状的对象。
eg1: 具有3个元素的数组a与标量b相乘,得到与Source形状相同的数组。
eg2: 在进行加法运算时,将形状为(4,1)的数组a与形状为(3,)的数组b相加,结果会得到一个形状为(4,3)的数组。
关于这一点已经有很多文章,并且在深度学习中,大规模的矩阵乘法是非常常见的。在本文中,我们将利用两个简短的例子上进行讨论。
首先,假设您想要计算给定整数在列中出现的次数。以下是 2 种可能的方法。
"""
计算DataFrame X 中 "column_1" 列中等于目标值 target 的元素个数。
参数:
X: DataFrame,包含要计算的列 "column_1"。
target: int,目标值。
返回值:
int,等于目标值 target 的元素个数。
"""
# 使用循环计数
def count_loop(X, target: int) -> int:
return sum(x == target for x in X["column_1"])
# 使用矢量化操作计数
def count_vectorized(X, target: int) -> int:
return (X["column_1"] == target).sum()
TOP