python笔记:pandas/geopandas DataFrame逐行遍历

在Pandas和GeoPandas中,可以使用几种不同的方法来遍历DataFrame的每一行

0 数据

import pandas as pddata = {'column1': range(1, 1001),'column2': range(1001, 2001)
}
df = pd.DataFrame(data)
df

 

1 iterrows

for index, row in df.iterrows():print(index)print(row)
'''
0
column1       1
column2    1001
Name: 0, dtype: int64
1
column1       2
column2    1002
Name: 1, dtype: int64
2
column1       3
column2    1003
Name: 2, dtype: int64
3
column1       4
column2    1004
Name: 3, dtype: int64
...
'''
  • 优点:简单直观,可以同时获取行索引和数据。
  • 缺点:比其他方法慢,尤其是在大数据集上,因为它逐行遍历。

2 itertuples

for row in df.itertuples():print(row)print(row.Index) print(row.column1)print(row.column2)
'''
Pandas(Index=0, column1=1, column2=1001)
0
1
1001
Pandas(Index=1, column1=2, column2=1002)
1
2
1002
Pandas(Index=2, column1=3, column2=1003)
2
3
1003
...
'''
  • 优点:比 iterrows() 快,因为它返回命名元组,遍历的是元组而不是Series对象。
  • 缺点:仍然比向量化操作慢,稍微复杂一点。

3 apply

def process_row(row):print(row)df.apply(process_row, axis=1)
'''
column1       1
column2    1001
Name: 0, dtype: int64
column1       2
column2    1002
Name: 1, dtype: int64
column1       3
column2    1003
Name: 2, dtype: int64
...
'''
  • 优点:可以方便地应用一个函数到每一行或每一列。
  • 缺点:比 itertuples() 慢,而且在使用上可能比直接遍历更复杂一些。

4 applymap

def process_row(element):print(element)df.applymap(process_row)
'''
1
2
3
4
5
6
7
8
9
10
...
'''
  • 优点:可以方便地应用一个函数到DataFrame的每个元素。
  • 缺点:可能不如其他方法高效,尤其是在大数据集上。

5 逐元素at

for i in range(len(df)):print(df.at[i,'column1'],df.at[i,'column2'])
'''
1 1001
2 1002
3 1003
4 1004
5 1005
...
'''

6 使用timeit 分别计算运行时间

python 笔记: timeit (测量代码运行时间)-CSDN博客zhiguan

import timeit
def row_at(df):for i in range(len(df)):df.at[i,'column1']df.at[i,'column2']def iter_row(df):for index,row in df.iterrows():indexrowdef iter_tuple(df):for row in df.itertuples():rowdef apply_df(df):df.apply(lambda x:x,axis=1)def apply_map_df(df):df.applymap(lambda x:x)time_at=timeit.timeit("row_at(df)", globals=globals(),number=1000)
time_iterrow=timeit.timeit('iter_row(df)',globals=globals(),number=1000)
time_itertuple=timeit.timeit('iter_tuple(df)',globals=globals(),number=1000)
time_apply=timeit.timeit('apply_df(df)',globals=globals(),number=1000)
time_applymap=timeit.timeit('apply_map_df(df)',globals=globals(),number=1000)time_at,time_iterrow,time_itertuple,time_apply,time_applymap
'''
(4.100567077999585,14.672198772001138,0.37428459300281247,12.572721185002592,0.5845120449957903)
'''

直观可视化 

import seaborn as sns
import matplotlib.pyplot as pltx = ['at by row','iterrows','itertuples','apply','applymap']
y = [time_at,time_iterrow,time_itertuple,time_apply,time_applymap]  # 请将这些值替换为你实际的时间数据sns.barplot(x=x, y=y)
# 创建 barplotfor i, val in enumerate(y):plt.text(i, val + 0.01, round(val, 2), ha='center')
# 添加标签(x轴、y轴、text的label)# 显示图形
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/150398.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT Vision初体验

本周,OpenAI为其广受欢迎的 ChatGPT 平台发布了一项突破性的补充。除了处理文本之外,ChatGPT 现在还可以处理图像并聊天。 很难夸大这件事的重要性。目前多达70% 的内容是视觉内容而不是书面内容。人们每年会生成数千张照片,而当今许多最大的…

FastThreadLocal 快在哪里 ?

FastThreadLocal 快在哪里 ? 引言FastThreadLocalset如何获取当前线程私有的InternalThreadLocalMap ?如何知道当前线程使用到了哪些FastThreadLocal实例 ? get垃圾回收 小结 引言 FastThreadLocal 是 Netty 中造的一个轮子,那么为什么放着…

JavaScript系列从入门到精通系列第十八篇:JavaScript中的函数作用域

文章目录 前言 一&#xff1a;函数作用域 前言 我们刚才提到了&#xff0c;在<Script>标签当中进行定义的变量、对象、函数对象都属于全局作用域&#xff0c;全局作用域在页面打开的时候生效在页面关闭的时候失效。 一&#xff1a;函数作用域 调用函数时创建函数作用域…

【Linux学习】05-1Linux上安装部署各类软件

Linux&#xff08;B站黑马&#xff09;学习笔记 01Linux初识与安装 02Linux基础命令 03Linux用户和权限 04Linux实用操作 05-1Linux上安装部署各类软件 05-2Linux上部署项目 文章目录 Linux&#xff08;B站黑马&#xff09;学习笔记前言05-1Linux上安装部署各类软件JDK安装部署…

Linux高性能服务器编程 学习笔记 第十一章 定时器

网络程序需要处理定时事件&#xff0c;如定期检测一个客户连接的活动状态。服务器进程通常管理着众多定时事件&#xff0c;有效地组织这些定时事件&#xff0c;使其在预期的时间被触发且不影响服务器的主要逻辑&#xff0c;对于服务器的性能有至关重要的影响。为此&#xff0c;…

【计算机网络-自顶向下方法】应用层(HTTP、FTP)

1. Principles of network applications 创建一个网络应用 创建一个网络应用的核心&#xff0c;是编写一个分布式程序&#xff0c;使其可以运行在不同的端系统上&#xff0c;并能通过网络相互通信。&#xff08;例如&#xff0c;web服务器软件与浏览器软件&#xff09;   应…

MongoEngine 简介安装、连接、数据类型及其参数详解

文章目录 前言一、MongoEngine 简介二、MongoEngine的安装与连接1. 安装MongoEngine2. 连接到MongoDB3. 定义数据模型 三、MongoEngine模型介绍1. 常见数据类型2. 数据类型参数 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方…

归并排序与非比较排序详解

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; &#x1f354;前言&#xff1a; 上篇博客我们讲解了非常重要的快速排序&#xff0c;相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…

[NewStarCTF 2023 公开赛道] week1

最近没什么正式比赛&#xff0c;都是入门赛&#xff0c;有moectf,newstar,SHCTF,0xGame都是漫长的比赛。一周一堆制。 这周newstar第1周结束了&#xff0c;据说py得很厉害&#xff0c;第2周延期了&#xff0c;什么时候开始还不一定&#xff0c;不过第一周已经结束提交了&#…

林沛满-TCP之在途字节数

本文整理自&#xff1a;《Wireshark网络分析的艺术 第1版》 作者&#xff1a;林沛满 著 出版时间&#xff1a;2016-02 我一直谨记斯蒂芬霍金的金玉良言—每写一道数学公式就会失去一半读者。不过为了深度分析网络包&#xff0c;有时候是不得不计算的&#xff0c;好在小学一年级…

socket简介

套接字&#xff08;Socket&#xff09;实质上就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端&#xff0c;为应用层进程利网络协议交换数据提供了相应机制。套接字出于承上启下的作用&#xff0c;向上连接应用进程&#xf…

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】

【QT5-程序控制电源-[GPIB-USB-HS]-SCPI协议-上位机-基础样例【2】】 1、前言2、实验环境3、自我总结1、基础了解仪器控制-熟悉仪器2、连接SCPI协议3、了解GPIB-USB-HS4、软件调试-代码编写 4、熟悉协议-SCPI协议5、实验过程-熟悉软件&#xff08;1&#xff09;去官网NI&#x…

【Java项目推荐之黑马头条】自媒体文章实现异步上下架(使用Kafka中间件实现)

自媒体文章上下架功能完成 需求分析 流程说明 接口定义 说明接口路径/api/v1/news/down_or_up请求方式POST参数DTO响应结果ResponseResult DTO Data public class WmNewsDto {private Integer id;/*** 是否上架 0 下架 1 上架*/private Short enable;}ResponseResult 自媒…

使用华为eNSP组网试验⑷-OSPF多区域组网

今天进行了OSPF的多区域组网试验&#xff0c;本来这是个很简单的操作&#xff0c;折腾了好长时间&#xff0c;根本原因只是看了别人写的配置代码&#xff0c;没有真正弄明白里面对应的规则。 一般情况下&#xff0c;很多单位都使用OSPF进行多区域的组网&#xff0c;大体分为1个…

2023-IDEA插件推荐

CamelCase 链接 https://plugins.jetbrains.com/plugin/7160-camelcase https://github.com/netnexus/camelcaseplugin 介绍 提供下划线、驼峰等代码风格的切换。快捷键是⇧ ⌥ U / Shift Alt U GsonFormatPlus 链接 https://plugins.jetbrains.com/plugin/14949-gs…

11.2 基本电路和基本分析方法

一、基本电路 电路类型电路名称特点和典型功能指标参数或功能描述方法基本放大电路共射放大 ∣ A ˙ ∣ |\dot A| ∣A˙∣大&#xff1b;适用于小信号电压放大 A ˙ u \dot A_u A˙u​、 R i R_i Ri​、 R o R_o Ro​、 f L f_L fL​、 f H f_H fH​、 f b w f_{bw} fbw​共集…

Docker 安装 MongoDB

一、什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库。是一个介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 二、MongoDB的安装 这里使用docker来安装MongoD 1.docker 拉取mysql镜像 docker pu…

unity脚本_生命周期函数 c#

帧&#xff1a;fps 即每秒钟跑的游戏帧数 游戏的本质 是一个死循环 每一次循环处理游戏逻辑就会更新一次画面 之所以能看到画面在动 是因为切换画面的速度达到一定时人眼就认为画面时流畅的 一帧就是执行一次循环 人眼舒适放松时可视帧数 24帧/s 游戏卡顿的原因&#xff1a; …

x64内核实验7-线程

x64内核实验7-线程 TOC 线程是比较重要的内核结构&#xff0c;思考一下其实可以想到线程结构体在64位下的变化应该不会很大最多只是扩充了一些内容&#xff0c;因为从我们之前分析段页时候会发现cpu更新的这些内容大部分不影响xp时候的线程切换机制&#xff0c;下面我们来验证…

初识链表(7.25)

前面我们学习了顺序表&#xff0c;但顺序表其实存在一些问题 1. 中间/头部的插入删除&#xff0c;时间复杂度为O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗&#xff08;尤其是异地扩容&#xff09;。 3. 增容一般是呈2倍的增长&am…