使用文件读取的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,一经查实,立即删除!

相关文章

盐值1111

盐值处理简介 1.1 定义与概述 "盐值"是一个术语,通常在密码哈希中使用。当存储或传输密码时,系统不会(或不应)直接存储或传输用户的明文密码。相反,会通过哈希函数将密码转换成哈希值。问题在于&#xff0…

【面试】国家公务员考试复试,面试内容准备方向(非技术面试考察点)

【面试】国家公务员考试复试,面试内容准备方向(非技术面试考察点) 说明: csdn无法发部分考试相关例题(提示涉z),所以本文主要还是针对评分标准和仪表等相关因素。 文章目录 1、面试试卷与评分1.…

前端架构: 实现脚手架处理简单的命令注册和参数解析

实现简单的命令注册和参数解析 1 )概述 这里不会使用任何第三方工具,而是给大家讲解一下参数解析的一个实现原理实现两个目标 第一目标是注册一个命令 $ xyzcli init 这个命令就可以完成一个自己的操作第二个是实现参数解析 希望能够实现 --version 的一…

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

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

C语言系列1——详解C语言:变量、常量与数据类型

目录 写在开始1. 变量与常量的概念1.1. 变量1.2. 常量1.3. 变量与常量的比较1.4. 选择变量还是常量 2. C语言中的基本数据类型2.1. 整型(Integer Types)2.2. 浮点型(Floating-Point Types)2.3. 字符型(Character Type&…

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插件 …

Linux和Windows文件共享实现方式

安装 samba 服务 sudo apt-get install samba samba-common新增用户 groupadd sfp -g 6000 useradd sfp -u 6000 -g 6000 -s /sbin/nologin -d /dev/null设置密码 sudo smbpasswd -a sfp修改配置文件 sudo vi /etc/samba/smb.conf追加参数 [file]comment sfpfile #说明…

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属性的使用。 需求:解散部门时需要记录操作日志 由于解散部门是一个非常重要而且非常危险的操作,所以在业务当中要求每一次执行解散部门的操作都需要留下痕迹,就是要记录操作…

蓝桥杯每日一题----唯一分解定理

唯一分解定理 1.内容 任何一个大于1的整数n都可以分解成若干个质数的连乘积,如果不计各个质数的顺序,那么这种分解是惟一的,即若n>1,则有 n ∏ p i j n\prod{p^j_i} n∏pij​ 这里的 p i p_i pi​是质数。可以进行简单证明…

C语言字符串处理

在 C 语言中&#xff0c;字符串是以字符数组的形式表示的&#xff0c;以空字符 \0 结尾。C 语言提供了一系列的字符串处理函数&#xff0c;可以用于字符串的操作、查找、比较等。以下是一些常用的 C 语言字符串处理函数&#xff1a; 1. 字符串定义与初始化 #include <stdi…

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

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

golang集成sentry: go-redis

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

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

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

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

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

高中数学:不等式

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

TiDB分布式关系型数据库简介

目录 1.关于TiDB2.TiDB的整体架构3.使用场景4. TiDB VS MySQL5.参考本文主要介绍TiDB架构以及使用场景。 1.关于TiDB TiDB 是由 PingCAP 公司开源的一款分布式关系型数据库,它支持水平扩展、强一致性和高可用性。TiDB 兼容 MySQL 协议,可以无缝替代 MySQL,特别适合处理大规…

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

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

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

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