使用文件读取的open 函数,让你的csv pandas 尾部插入快如闪电

文章目录

    • 简介
    • 1. pandas loc 尾部插入方法
      • loc 尾部插入的速度
    • 2. open 方法
      • open方法 处理csv的速度
      • open方法 处理csv代码

简介

笔者在处理稍大型(几十万条)的csv文件时,发现在csv文件中,使用panda的loc方法进行拼接,速度太过于缓慢。
笔者提出使用open方法,处理完成后的数据每行以,进行分隔存储到文件中,程序运行速度比上述方法快200多倍。

from tqdm import tqdm
import pandas as pd

1. pandas loc 尾部插入方法

for _, row in tqdm(df.iterrows()):
    # 处理生成data列表
    new_df.loc[new_df.shape[0]] = value
new_df.to_csv('new.csv', index=False)

通常处理表格数据流程:

  1. 一行一行的遍历原始表格数据;
  2. 在新的new_df的尾部一行一行插入处理完成的数据;
  3. new_df 保存到本地

上述流程在处理小文件时,没有问题;

但当处理几十万行的文件时,随着程序运行,代码运行速度会越来越慢。

有人会认为这个是因为大文件把内存占满了,从而拖慢了程序的处理速度。
我想说的是:但当内存是足够时,每秒也才只能处理2000多条数据;依然没有下述open方法快。

在我的数据上,上述代码在进行pandas.DataFrame拼接时,随着程度执行,越来越慢,最后每秒只能处理200条数据;太过于慢了!

loc 尾部插入的速度

使用pandas 尾部插入的实验
在这里插入图片描述
如上图表示,在程序刚开始执行时,处理了7647条数据,用时2秒,平均每秒处理2108条;

然而,随着程序的运行,当程序运行2分钟后,如下图所示,程序处理了6万条数据,程序的处理速度下降到每秒221条;而且还在继续下降;
在这里插入图片描述

2. open 方法

open方法 处理csv的速度

当换成使用文件读取的open函数后,程序的处理速度一直可以保持在每秒处理 5万条数据

在这里插入图片描述
如上图所示,处理完全部的66万条数据,每秒处理5万多条,用时12秒全部处理完毕。

这个方法用来处理大文件非常好!

open方法 处理csv代码

csv 的数据是以,分隔,故在文件中逐行写入以,分隔的数据即可,甚至无需使用pandas包。

代码如下

with open('data.csv', 'w+', encoding='utf-8') as f:
    f.write(",".join(df.columns) + '\n')
    for _, row in tqdm(df.iterrows()):
        # 处理生成data列表
        ...
        
        f.write(','.join(data) + '\n')

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深刻反思现代化进程:20世纪与21世纪的比较分析及东西方思想家的贡献

深刻反思现代化进程:20世纪与21世纪的比较分析及东西方思想家的贡献 摘要:随着人类社会的快速发展,现代化已成为全球范围内的普遍追求。然而,20世纪至21世纪的现代化进程并非一帆风顺,它伴随着环境破坏、社会不平等和文…

【leetcode热题100】不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出:1 …

安装 NVIDIA Chat with RTX

安装 NVIDIA Chat with RTX 0. NVIDIA Chat with RTX 是什么?1. 安装 NVIDIA Chat with RTX2. 使用 NVIDIA Chat with RTX3. NVIDIA Chat with RTX 下载地址 0. NVIDIA Chat with RTX 是什么? Chat With RTX 是一款演示应用程序,可让您个性化…

第8集《佛说四十二章经》

请大家打开讲议第九面,第十二章、举难劝修。 佛陀在这一章共举出二十种困难事情,以劝勉我们修学。一般人的生命没有目标,一天过一天,做事遇到困难就放弃了。这段经文的难是有主动的正面意义,所谓的难能可贵&#xff1…

【Linux学习】生产者-消费者模型

目录 22.1 什么是生产者-消费者模型 22.2 为什么要用生产者-消费者模型? 22.3 生产者-消费者模型的特点 22.4 BlockingQueue实现生产者-消费者模型 22.4.1 实现阻塞队列BlockQueue 1) 添加一个容器来存放数据 2)加入判断Blocking Queue情况的成员函数 3)实现push和pop方法 4)完…

Vue3快速上手(五)ref之对象类型的响应式数据

一、ref之对象类型的响应式数据 1.1 基本语法 import { ref } from vuelet x ref(初始值)console.log(xxx --> , x.value);x为一个RefImpl对象,该对象的value属性为实际值,在script里需要操作x.value来改变数据的值,在页面里则可以直接…

常用算法介绍-->快速排序

本篇文章我们来介绍一下快速排序的算法 1.简介 快速排序是对冒泡排序的一种改进, 它是不稳定的。由C. A. R. Hoare在1962年提出的一种划分交换排序,采用的是分治策略(一般与递归结合使用),以减少排序过程中的比较次数…

PHP脉聊交友系统网站源码,可通过广告变现社交在线聊天交友即时通讯APP源码,附带视频搭建教程

探索全新社交体验:一站式PHP交友网站解决方案 🌐 全球化交友,无界沟通 在数字化的浪潮下,社交已不再受地域限制。我们的PHP交友网站不仅支持多国语言,还配备了即时翻译功能,让您轻松跨越语言障碍&#xff…

Pure Pursuit控制器路径跟随

参考博客: Pure Pursuit 纯追踪法 Autoware(Pure pursuit代码学习) 1 Pure Pursuit纯追踪法 适用场景:低速场景(速度过高会产生转弯内切以及超调) 简化前轮转向角和后轴将遵循的曲率之间的关系 (Gx,Gy)是下一个需要追踪的路点&a…

【实战】一、Jest 前端自动化测试框架基础入门(二) —— 前端要学的测试课 从Jest入门到TDD BDD双实战(二)

文章目录 一、Jest 前端自动化测试框架基础入门5.Jest 中的匹配器toBe 匹配器toEqual匹配器toBeNull匹配器toBeUndefined匹配器和toBeDefined匹配器toBeTruthy匹配器toBeFalsy匹配器数字相关的匹配器字符串相关的匹配器数组相关的匹配器异常情况的匹配器 6.Jest 命令行工具的使…

C++【AVL树】

目录 1.AVL树(高度平衡搜索二叉树)定义 1.1平衡因子(Balance Factor简写成bf) 1.2avl树的定义 2.AVL树插入的基本操作 2.1逻辑抽象图 2.2插入流程 2.3左单旋 2.4右单旋 2.5右左双旋 2.6左右双旋 3.AVL树的检验技巧 3.1…

AI:127-基于卷积神经网络的交通拥堵预测

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

2024-02-13 Unity 编辑器开发之编辑器拓展4 —— EditorGUIUtility

文章目录 1 EditorGUIUtility 介绍2 加载资源2.1 Eidtor Default Resources2.2 不存在返回 null2.3 不存在则报错2.4 代码示例 3 搜索框查询、对象选中提示3.1 ShowObjectPicker3.2 PingObject3.3 代码示例 4 窗口事件传递、坐标转换4.1 CommandEvent4.2 GUIPoint 和 ScreenPoi…

Excel模板2:进度条甘特图

Excel模板2:进度条甘特图 ‍ 今天复刻B站up【名字叫麦兜的狗狗】的甘特图:还在买Excel模板吗?自己做漂亮简洁的甘特图吧!_哔哩哔哩_bilibili 阿里网盘永久分享:https://www.alipan.com/s/cXhq1PNJfdm 当前效果&…

片上网络NoC(5)——非直连拓扑

目录 一、前言 二、概念阐述 三、交叉开关 四、蝶形网络 五、clos网络 六、fat tree网络 6.1 clos网络的折叠过程 七、总结 一、前言 本文继续介绍片上网络的拓扑,在之前的文章中,我们已经介绍了片上网络的拓扑指标和直连拓扑的相关内容&#xf…

【新年第一辑 | TortoiseGit常见用法】

TortoiseGit常见用法 概述常用操作建立仓库提交代码更新代码回滚版本添加忽略文件设置比较工具🩸 解决冲突 主页传送门 : 📀 传送 概述 TortoiseGit是一个Windows平台上的Git客户端工具,它提供了一个直观和易于使用的图形用户界面…

面向对象2:继承

目录 2.1继承 2.2 继承的好处 2.3 权限修饰符 2.4 单继承、Object 2.5 方法重写 2.6 子类中访问成员的特点 2.7 子类中访问构造器的特点 面向对象1:静态 2.1继承 向对象编程之所以能够能够被广大开发者认可,有一个非常重要的原因,是…

springboot184基于springboot的校园网上店铺的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

如何把华为手机上的数据转移到荣耀手机上?

方法/步骤 点击并进入华为手机(旧手机)的【手机克隆】应用,选择【这是旧设备】; 点击并进入荣耀手机(新手机)的【换机克隆】应用,选择【这是新设备】; 荣耀手机(新…

LeetCode-第70题-爬楼梯

1.题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 2.样例描述 3.思路描述 画图就可以发现规律,典型的斐波那契额数列 4.代码展示 class Solution {public int climbStair…