首页 > 其他分享 >矢量化操作是 Pandas 的一个强大特性

矢量化操作是 Pandas 的一个强大特性

时间:2024-08-22 08:53:52浏览次数:9  
标签:示例 df 特性 矢量化 操作 iterrows Pandas row

矢量化操作是 Pandas 的一个强大特性,它允许你对整个 DataFrameSeries 进行操作,而不需要显式地写出循环。矢量化操作利用底层的 C 语言实现和优化,使得它在处理大数据集时比循环效率更高。

使用矢量化操作替代 iterrows() 的示例

假设你有以下 DataFrame df,并且你想要在每一行上执行某些操作:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

 

示例 1: 对某一列的数据进行转换

假设你想对 A 列中的每个值加 10,使用 iterrows() 你可能会这样做:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data)

 

使用矢量化操作,只需一行代码:

df['A'] = df['A'] + 10

 

示例 2: 根据多列的条件来生成新列

假设你想根据 AB 两列的值生成新的一列 D,内容是 AB 的和,使用 iterrows() 你可能会这样做:

for index, row in df.iterrows():
    df.at[index, 'D'] = row['A'] + row['B']

 

使用矢量化操作:

df['D'] = df['A'] + df['B']

 

示例 3: 条件筛选并修改

假设你想在 C 列大于 7 时,将 A 列的值改为 0,使用 iterrows() 你可能会这样做:

for index, row in df.iterrows():
    if row['C'] > 7:
        df.at[index, 'A'] = 0

 

使用矢量化操作:

df.loc[df['C'] > 7, 'A'] = 0

 

示例 4: 使用 apply 函数进行更复杂的操作

如果你需要对一列的值进行复杂的变换,使用 apply 是矢量化操作的一个变体,性能仍然优于 iterrows()。例如:

df['A'] = df['A'].apply(lambda x: x ** 2 + 2 * x + 1)

 

为什么矢量化操作更快?

  • 底层实现:矢量化操作是在底层 C 或 Cython 代码中直接执行的,这比逐行操作的 Python 循环快得多。
  • 减少 Python 循环iterrows() 逐行操作,每一行的数据处理都会引起 Python 解释器的调用,而矢量化操作通常是在更接近硬件的层次上执行的。
  • 并行计算:在某些情况下,矢量化操作可以自动并行化,从而进一步提升性能。

总结

尽可能使用矢量化操作来代替循环和 iterrows(),这会让代码不仅更简洁,而且性能也会显著提升。在处理大型数据集时,这种性能差异尤为明显。

标签:示例,df,特性,矢量化,操作,iterrows,Pandas,row
From: https://www.cnblogs.com/beichengshiqiao/p/18372944

相关文章

  • 浅谈面向对象三大特性(着重介绍虚函数实现的多态)
        写在前面:文章内容分享为主,如有不当之处,恳请批评指正。        今天在使用C++的工厂模式的时候,突然发下有些生疏,就想着发一篇博客,巩固一下,但突然想到工厂模式中设计的继承以及多态的特性,决定先发一篇有关于C++多态的文章,其他的就丢给明天吧!一、面向对象三......
  • 豆瓣评分8.7!Python pandas创始人亲码的数据分析入门手册!
    在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算社区。进入21世纪以来,在行业应用和学术研究中采用python进行科学计算的势头越来越猛。近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完......
  • 排序算法 常见排序算法特性比较
    目录排序的概念内外部排序稳定与非稳定排序改进排序的指标图片排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原......
  • vSphere5.11.3.管理特性.1.Scheduled Task
    vcenterserversupportsquitealistoftasksyoucanscheduletorunautomatically:1.changethepowerstateofavm.(修改虚拟机电源状态)2.cloneavm.(克隆虚拟机)3.deployavmfromatemplate.(从一个模板部署虚拟机)4.moveavmwithvmotion.(使用vmotion技......
  • vSphere5.11.3.管理特性.4.Host Profile
    hostprofiles的介绍ahostprofileisessentiallyacollectionofallthevariousconfigurationsettingsforanesxihost.thisincludessettingssuchasnicassignments,virtualswitches,storageconfiguration,dateandtime,andmore.(hostprofile收集esxi主机的......
  • .NET 9 优化,抢先体验 C# 13 新特性
    前言微软即将在2024年11月12日发布.NET9的最终版本,而08月09日发布的.NET9Preview7是最终发布前的最后一个预览版。这个版本将与.NETConf2024一同亮相,并已与VisualStudio202217.12预览版1一同发布,可以直接通过VisualStudio安装。同时VisualStudioCode和C#Dev......
  • STP(角色选举、状态、定时器、拓扑变更机制、PVST、PVST+增强特性)
    文章目录一、什么是STP定义特点工作原理专业术语二、STP角色选举1、配置命令:2、端口角色:三、STP的状态四、STP的定时器①HelloTime:2s②MaxAge:20s③ForwardDelay:15s④AgingTime:300s五、STP拓扑变化机制六、PVST七、PVST+增强特性......
  • OSPF的优化及高级特性
    文章目录一、LSA类型1.LSA12.LSA23.LSA34.LSA45.LSA56.LSA7二、OSPF优化1、解决区域不连续问题①虚链路②gre隧道(gretunnel)2、防环机制①区域内②区域间3、FA地址/转发地址三、OSPF高级特性1、OSPF报文认证①明文认证②MD5认证③Keychain认证④HMAC-SHA256......
  • Python数据结构:元组详解(创建、访问、不可变特性)②
    @[toc]Python中的元组(Tuple)是一种重要的数据结构,与列表类似,但元组是不可变的,这意味着一旦创建,就无法修改。元组的不可变性使其在某些场景下比列表更具优势。本文将详细介绍Python元组的创建、访问、不可变特性,并附上一个综合复杂的例子,全面展示元组在实际编程中的应用。一......
  • 【面试】事务的ACID特性有哪些?是如何保证的?
    面试模拟场景面试官:你能解释一下事务的ACID特性有哪些?是如何保证的?参考回答示例候选人:当然可以。事务的ACID特性是数据库系统中保证数据一致性和可靠性的关键特性。ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)的缩写。以下是每个......