使用文件读取的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')

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

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

相关文章

春节专题|产业7问:区块链厂商的现在和未来——基础设施厂商

2023转瞬即逝,不同于加密领域沉寂一整年后在年末集中爆发,对于我国的区块链厂商而言,稳中求胜才是关键词,在平稳发展的基调下,产业洗牌也悄无声息的到来。 从产业总体而言,在经过了接近3年的快速发展后&…

android studio下开发flutter

文章目录 1. 配置环境 https://flutter.cn/docs/get-started/install2. android studio下开发flutter 1. 配置环境 https://flutter.cn/docs/get-started/install 2. android studio下开发flutter 打开Android Studio -> File -> Settings -> Plugins 搜索Dart插件 …

C++ 动态规划 计数类DP 整数划分

一个正整数 n 可以表示成若干个正整数之和,形如:nn1n2…nk ,其中 n1≥n2≥…≥nk,k≥1 。 我们将这样的一种表示称为正整数 n 的一种划分。 现在给定一个正整数 n ,请你求出 n 共有多少种不同的划分方法。 输入格式 共一行&…

【vue3学习笔记】shallowReactive与shallowRef;readOnly与shallowReadOnly;toRaw与markRaw

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 课程 P158节 《shallowReactive与shallowRef》笔记: reactive()与shallowReactive():reactive()处理后的数据是响应式的,对象内嵌套的深层结构全部是响应式的。shallowReactive()处理后的数据…

Javaweb之SpringBootWeb案例之propagation属性案例演示的详细解析

案例 接下来我们就通过一个案例来演示下事务传播行为propagation属性的使用。 需求:解散部门时需要记录操作日志 由于解散部门是一个非常重要而且非常危险的操作,所以在业务当中要求每一次执行解散部门的操作都需要留下痕迹,就是要记录操作…

【数据结构】链表OJ面试题4《返回链表入环的第一个结点》(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表,判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 记录每天的刷题,继续坚持! 2.OJ题目训练 10. 给定一个链表,返回链表开始…

golang集成sentry: go-redis

网上没有找到go-redis集成sentry的库, 所以我简单实现了一个 代码: https://github.com/Shujie-Tan/go-redis-sentry 使用方法: import (redis_sentry "github.com/Shujie-Tan/go-redis-sentry" ) rdb : redis.NewClient(&re…

如何一键启动、停止或重启运行在服务器内的幻兽帕鲁游戏服务进程?

如果你是用腾讯云轻量应用服务器一键部署的幻兽帕鲁服务器,那么可以在面板一键启动、停止或重启运行在服务器内的幻兽帕鲁游戏服务进程(注意并非对服务器整机进行操作),无需手动在服务器内部运行命令。 详细教程地址:h…

Xubuntu16.04系统中修改系统语言和系统时间

1.修改系统语言 问题:下图显示系统语言不对 查看系统中可用的所有区域设置的命令 locale -a修改/etc/default/locale文件 修改后如下: # File generated by update-locale LANG"en_US.UTF-8" LANGUAGE"en_US:en"LANG"en_US…

高中数学:不等式

一、性质 1、同向可加性 2、同向同正可乘 3、正数乘方开方(n∈Z,n≥2) 常见题型 1、比较大小 分式比较大小,先去分母作差法比较大小带根号的无理数比较大小,直接两边开方因式分解(较难) 2、…

Java17之使用Lambda表达式对对象集合中指定的字段进行排序

Java17之使用Lambda表达式对对象集合中指定的字段进行排序 文章目录 Java17之使用Lambda表达式对对象集合中指定的字段进行排序1. 集合对象排序1. Java实体类2. 正序排序3.倒序排序 1. 集合对象排序 Java8起可用 List 的 sort 方法进行排序,形参为函数式接口Compara…

C#利用接口实现选择不同的语种

目录 一、涉及到的知识点 1.接口定义 2.接口具有的特征 3.接口通过类继承来实现 4.有效使用接口进行组件编程 5.Encoding.GetBytes(String)方法 (1)检查给定字符串中是否包含中文字符 (2)编码和还原前后 6.Encoding.GetS…

netstat命令

netstat 是一个计算机网络命令行工具,用于显示网络连接、路由表和网络接口等网络相关信息。netstat 命令可以在各种操作系统上使用,包括 Windows、Linux 和 macOS 等。 在使用 netstat 命令时,可以提供不同的选项来显示不同类型的网络信息。…

猫头虎分享已解决Bug || Invariant Violation in React: Element Type is Invalid ‍

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

【Web】NSSCTF Round#18 Basic个人wp(未完待续)

①门酱想玩什么呢&#xff1f; 先试一下随便给个链接 不能访问远程链接&#xff0c;结合评论区功能&#xff0c;不难联想到xss&#xff0c;只要给个评论区链接让门酱访问就可 我们研究下评论区 从评论区知道&#xff0c;要让门酱玩元梦之星&#xff0c;考虑直接 <script&…

Vuex 模块的详解

Vuex 模块是将 store 分割成多个模块的一种方式&#xff0c;每个模块都有自己的状态、mutations、actions 和 getters。这有助于更好地组织和管理应用程序的状态。 创建模块&#xff1a; 首先&#xff0c;需要创建一个模块。可以在 store 中定义一个新的模块对象&#xff0c…

在git bash中可以提交代码,但是在android studio中提交代码就会报错

出现这个错误 error: unable to read askpass response from ‘C:\Users…\AppData\Local\Google\AndroidStudio2021.2\tmp\intellij-git-askpass-local.sh’ bash: line 1: /dev/tty: No such device or address 勾选git的use credential helper选项再提交就行了

ITK 图像分割(一):阈值ThresholdImageFilter

效果&#xff1a; 1、itkThresholdImageFilter 该类的主要功能是通过设置低阈值、高阈值或介于高低阈值之间&#xff0c;则将图像值输出为用户指定的值。 如果图像值低于、高于或介于设置的阈值之间&#xff0c;该类就将图像值设置为用户指定的“外部”值&#xff08;默认情况…

【电路笔记】-并联电感

并联电感 文章目录 并联电感1、概述2、并联电感示例13、互耦并联电感器4、并联电感示例25、并联电感示例36、总结当电感器的两个端子分别连接到另一个或多个电感器的每个端子时,电感器被称为并联连接在一起。 1、概述 所有并联电感器上的压降将是相同的。 然后,并联的电感器…

如何写好一个简历

如何编写求职简历 论Java程序员求职中简历的重要性 好简历的作用 在求职过程中&#xff0c;一份好的简历是非常重要的&#xff0c;它甚至可以直接决定能否被面试官认可。一份出色或者说是成功的个人简历&#xff0c;最根本的作用是能让看这份简历的人产生一定要见你的强烈愿…