Pandas中的直接向量化操作

简介: Pandas中的直接向量化操作

一、何为直接向量化操作?

pandas中,直接向量化操作通常指的是利用pandas内建的函数或NumPy的数组操作来处理数据,而不是使用apply或applymap方法。这些操作往往更加高效,因为它们在底层直接利用了优化的C语言代码,避免了Python层面的循环和额外的函数调用开销。

二、为啥要进行直接向量化操作?

下面,我们通过一个简单的例子来说明一下为啥要进行直接向量化操作?以一个100万的一维数组相加为例:

import numpy as np
# 创建一个较大的随机数组a = np.random.rand(1000000)b = np.random.rand(1000000)
print(a)print(b)# 非向量化操作:使用Python循环计算两个数组的和def add_arrays_nonvectorized(x, y):    result = []    for i in range(len(x)):        result.append(x[i] + y[i])    return result
# 向量化操作:直接使用NumPy的加法def add_arrays_vectorized(x, y):    return x + y
# 测试非向量化操作的执行时间%timeit add_arrays_nonvectorized(a, b)
# 测试向量化操作的执行时间%timeit add_arrays_vectorized(a, b)

运行结果为:

baaa598e3f881e797576803268e242e2.png

从执行时间来看,向量化操作的执行时间远小于非向量化操作。具体来说,非向量化操作的执行时间大约为186毫秒每循环,而向量化操作的执行时间为2.99毫秒每循环。

向量化操作之所以快,是因为它利用了底层的优化和并行计算能力,而传统的循环方法则没有利用这些优势。在处理大规模数据时,向量化操作可以显著提高效率。

三、常见的直接向量化操作示例:

1. 数学运算

DataFrame或Series中的元素进行数学运算时,可以直接使用向量化操作,无需编写循环。

# 创建一个示例 DataFramedf = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})# 向量化加法df['C'] = df['A'] + df['B']


2. 条件筛选

使用向量化条件表达式来筛选数据,比使用 .apply() 或循环更快。

# 筛选 A 列大于 1 的行filtered_df = df[df['A'] > 1]


3. 字符串操作

Pandas的字符串方法(如.str访问器)也是向量化的,可以高效地对 Series 中的每个字符串元素执行操作。

import pandas as pd # 示例 DataFramedf = pd.DataFrame({'text': ['hello', 'world', 'python']})# 向量化字符串操作df['text_upper'] = df['text'].str.upper()df

9c3c6d457ab14bd8146c83effe359d11.png


4. 通用函数(ufuncs)

NumPy的通用函数(ufuncs)可以用于Pandas的Series和 DataFrame,实现快速的元素级运算。

import numpy as np# 示例DataFramedf = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})# 使用 NumPy的ufunc进行计算df['C'] = np.sqrt(df['A'] ** 2 + df['B'] ** 2)df

四. 总结

直接向量化操作是提高Pandas数据处理效率的关键。通过使用直接向量化的方法,可以避免显式循环,利用底层的NumPy操作来加速数据处理。在处理大规模数据集时,直接向量化操作尤其重要,因为它可以显著减少计算时间。

总之,一句话,在Pandas中能用直接向量操作的尽量用直接向量进行,实在不行,再考虑非直接向量的操作手段,比如apply、map、applymap等手段。

相关文章
|
5月前
|
存储 索引 Python
高效的5个pandas函数,你都用过吗?
高效的5个pandas函数,你都用过吗?
|
5月前
|
索引 Python
高效的10个Pandas函数,你都用过吗?
高效的10个Pandas函数,你都用过吗?
|
数据处理 Python
技巧 | 分享几个Pandas高效函数(二)
技巧 | 分享几个Pandas高效函数(二)
|
存储 机器学习/深度学习 数据挖掘
向量化操作简介和Pandas、Numpy示例
Pandas是一种流行的用于数据操作的Python库,它提供了一种称为“向量化”的强大技术可以有效地将操作应用于整个列或数据系列,从而消除了显式循环的需要。在本文中,我们将探讨什么是向量化,以及它如何简化数据分析任务。
351 0
|
数据采集 数据处理 数据库
pandas 数据处理
pandas 数据处理
115 0
|
数据可视化 数据处理 Python
pandas 数据处理汇总(下)
pandas 数据处理汇总(下)
69 0
|
数据处理 索引 Python
pandas 数据处理汇总(上)
pandas 数据处理汇总(上)
92 0
|
数据处理 索引 Python
pandas 数据处理汇总(中)
pandas 数据处理汇总(中)
121 0
|
数据处理 索引 Python
技巧 | 分享几个Pandas高效函数(三)
技巧 | 分享几个Pandas高效函数(三)
|
数据处理 Python
技巧 | 分享几个Pandas高效函数(一)
技巧 | 分享几个Pandas高效函数(一)