pandas 各种存储格式速度对比:CSV、hdf5、SQL、pickle、feather、parquet

news2024/11/23 1:59:54

前言:目前我在做一个callback函数,需要将数据重复的读取、写入,再供使用,并且数据量比较大,所以需要使用一个读写速度快的存储方式,不太考虑占用的磁盘空间

直接看结果 

在这里插入图片描述

  • csv的文件存储,在读取的时候是最为消耗时间的;如果数据大的话不建议存储为csv形式;

  • jay文件是读取最快的(相较于其他的快了极市上百倍,比csv则快了千万倍;

  • feather在存储速度上是最快的,读取速度也还可以,适用于比较均衡的场景

存储类型:

feather,parquet:有数据冗余排除算法,可节省大量空间,根据数据类型可压缩数千倍(feather可以显著提高了数据集的读取速度、在Hadoop生态系统中,parquet被广泛用作表格数据集的主要文件格式,Parquet使Hadoop生态系统中的任何项目都可以使用压缩的、高效的列数据表示的优势。现在parquet与Spark一起广泛使用。这些年来,它变得更容易获得和更有效,也得到了pandas的支持。)

hdf,SQL: 支持SQL索引(hdf5设计用于快速I/O处理和存储,它是一个高性能的数据管理套件,可以用于存储、管理和处理大型复杂数据。)

csv:纯字符串存储(csv格式是使用最多的一个存储格式,但是其存储和读取的速度会略慢。)

pkl:python object 直接存储到文件(pickle模块实现二进制协议,用于序列化和反序列化Python对象结构。Python对象可以以pickle文件的形式存储,pandas可以直接读取pickle文件。pickle模块不安全。最好只unpickle你信任的数据。)

jay:Datatable使用.jay(二进制)格式,这使得读取数据集的速度非常快。

读取方式:

jay读取(jay文件是读取最快的

安装 datatable 包

pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com datatable

import datatable as dt
t0=time.time()
t1=time.perf_counter() 

dt.Frame(data).to_jay("data.jay")

t2=time.time()
t3=time.perf_counter() 
 
print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 6.169269200000599
wall time: 6.168536901473999
'''

t0=time.time()
t1=time.perf_counter() 

data_jay = dt.fread("./data.jay")

t2=time.time()
t3=time.perf_counter() 
 
print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 0.03480849999959901
wall time: 0.034420013427734375
'''
data_jay.shape

feather读取(feather在存储速度上是最快的

import time
t0=time.time()
t1= time.perf_counter() 

data.to_feather("data.feather")

t2=time.time()
t3= time.perf_counter() 
 
print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 0.5462657999996736
wall time: 0.5466225147247314
'''

t0=time.time()
t1=time.perf_counter() 

data_feather = pd.read_feather("./data.feather")

t2=time.time()
t3=time.perf_counter() 
print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 0.6685380999997506
wall time: 0.6682815551757812
'''

hdf5读取

parquet读取

pickle读取

直接看:pkl文件是什么?pickle.dump,pickle.load、为什么使用pkl文件、pickle_pkl.dump_HealthScience的博客-CSDN博客

Python Dataframe之excel、csv、pickle、feather、parquet、jay、hdf5 文件存储格式==》存读效率对比_卖山楂啦prss的博客-CSDN博客

pandas 各种存储格式速度对比[CSV, hdf5,SQL,pickle, feather, parquet] - 知乎

【Python】大数据存储技巧,快出csv文件10000倍!-腾讯云开发者社区-腾讯云

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

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

相关文章

Java虚拟机(JVM)

Java虚拟机(JVM) 类加载 类加载 Java类加载的过程可以分为以下几个步骤: 加载(Loading):类加载的第一步是将类的字节码文件加载到内存中。 通过类的全名,全限定名(包括包名和类名&…

C++之std::enable_if_t用法(一百五十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

“人工智能的崛起:挑战与机遇并存“

近日,一位美国网络安全高级官员发出警告,称如果科技公司未能自我约束并与政府合作控制人工智能的力量,我们可能面临着巨大的风险。这位官员的言论是在数百名科技领袖和公众人物支持的联合声明之后发表的,该声明将人工智能的存在威…

mysql练习---存储过程/存储函数

创建表并插入数据 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 2 1、创建一个可以统计表格内记录条数的存储函数 &#…

W波段超外差LO两种倍频链路的比较

W波段(75-110GHz)由于其衰减小,分辨率高,超宽带等优势,受到越来越多的关注。之前由于成本高昂,主要是军事方面的应用。近些年随着Gotmic等厂家毫米波芯片的量产,成本大大降低,已被很…

LRU 缓存

题目链接 LRU 缓存 题目描述 注意点 如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字函数 get 和 put 必须以 O(1) 的平均时间复杂度运行 解答思路 如果想以O(1)的速度进行get,则需要将对应的key、value存到map中如果想…

word 公式序号自动按章节排序

1.在普通视图下,使用Alt和F9切换到域代码模式。 普通视图 域代码模式 2.光标放在章节标题最后一个字后面,使用Ctrl和F9添加域代码的大括号 3.在大括号中键入 SEQ ch \h 4.光标放在刚刚的大括号后面,再次按下Ctrl和F9添加域代码的大括号 5.…

SAP MESSAGE ID LB31的问题和解决办法

外协采购订单判退时报错 EA 返回交货(原因)-> 3700006717 /00009 (0000) 1 EA 不正确过帐返回给供应商,错误信息:对所需数量 XXXXXX00003122,1.000 PCS 仍然未清LB 31 搜索到lb31是和批次相关的错误 https://www.michaelmanagement.com/sap-error-mes…

YoloX训练报错“IndexError: list index out of range”

问题描述 在训练Yolox时报错,IndexError: list index out of range 解决方案 在/yolox/data/datasets/voc.py修改第138行 (self._imgpath % self.ids[i]).split(self.root "\\")[1]修改完代码就没问题了,开始训练

48.循环类关键字 for in of while do continue break

我们使用循环的时候很可能出现一些问题,导致语句循环次数过多(几万次甚至几十万次),这个时候请立即点击这里关闭选项卡 如果点关闭选项卡已经关不上了,可以立即结束浏览器进程,windows可以通过任务管理器关闭,linux可以…

华为OD机试真题 Java 实现【MELON的难题】【2023 B卷 100分】,采用动态规划算法,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、动态规划五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明 大家好,我是哪吒。 做技术,我是认真的,立志于打造最权威的华为OD机试真题专栏,帮助那些与我有同样需求的…

【LeetCode热题100】打卡第35天:最小栈相交链表

文章目录 【LeetCode热题100】打卡第35天:最小栈&相交链表⛅前言 最小栈🔒题目🔑题解 相交链表🔒题目🔑题解 【LeetCode热题100】打卡第35天:最小栈&相交链表 ⛅前言 大家好,我是知识汲…

MySQL-分库分表详解(一)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

C进阶:指针的进阶(1)

回归 哈喽哈喽大家好呀,我是灰灰快醒醒,时隔一个月又与大家见面了。众所周知,期末考试是中国教育部为大学生专门研发的一款开放式大逃杀游戏,学生需要扮演大难将至而绝望的人类,与小骚书共同完成《期末复习》的任务&a…

【无标题】采用技术外包做项目开发,不得不说的四大注意事项

在进行多项目开发及多个研发供应商团队管理(技术外包管理)时,你是不是也遇到不少问题。 项目管理者A:在项目开发中聘用外包技术团队的过程中,我踩过太多的坑,换过一批又一批的供应商,之前遇到过…

I.MX8MM系统构建 -- 1.系统烧录

硬件环境:米尔 MY8-C8MMX V1.3开发板软件工具:uuu烧录工具 环境准备 硬件环境 将开发板拨码开关调整为SW1(ON,OFF,x,x) SW2(x,x,x,x),按照丝印字体方向向上为OFF,向下为ON。将开发板USB连接到PC给开发板通上12V电源(注意先修改拨…

Django框架之CSRF使用篇

Django框架之CSRF使用篇 目录 全局使用 设置csrf token 表单使用 脚本使用 单独豁免 引入csrf类库 设置单独豁免csrf 单独保护 关闭全局csrf 引入csrf库 设置函数保护 csrf token配置 总结 全局使用 Django项目配置中默认全局使用csrf中间件,注释掉即…

最新Jupyter Notebook(保姆级教程)

Jupyter Notebook介绍 什么是Jupyter Notebook Jupyter Notebook 是一个基于 Web 的交互式计算环境,支持多种编程语言,包括 Python、R、Julia 等。它的主要功能是将代码、文本、数学方程式、可视化和其他相关元素组合在一起,创建一个动态文…

STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072

STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072 Proteus仿真小实验: STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072 功能: 硬件组成:STM32F103C6单片机 0.960LED显示屏DHT11温度湿度电位器模拟SGP30二氧化碳传感器蜂鸣…

Layui实现动态树效果(书籍管理系统左侧下拉列表)

目录 一、前言 1.什么是树形菜单 2.树形菜单的使用场景 二、案例实现 1.需求分析 2.前期准备工作 ①导入依赖 ②工具类 BaseDao(通用增删改查) BuildTree(完成平级数据到父子级的转换) ResponseUtil(将数据转换成json格式进行回显&…