再见 CSV,速度提升 150 倍!

DuckDB导出Excel和CSV性能对比:百万行数据实测与优化建议 本文深入对比了DuckDB导出Excel和CSV的性能差异,通过百万行数据的实测数据揭示CSV导出速度显著优于Excel,最高可达15.6倍。文章详细分析了技术根源,并提供了SQL优化、分批处理和格式选择等实用建议,帮助用户根据数据量级和需求选择最佳导出方案。 阅读详情

为什么要和CSV再见?

好了说了那么久,来介绍下为什么要和CSV再见。其实也谈不上彻底再见吧,日常还是要用的,这里再介绍一个更加高效的数据格式。

用Python处理数据时保存和加载文件属于日常操作了,尤其面对大数据量时我们一般都会保存成CSV格式,而不是Excel。一是因为Excel有最大行数1048576的限制,二是文件占用空间更大,保存和加载速度很慢。

虽然用CSV没有行数限制,相对轻便,但是面对大数据量时还是略显拉夸,百万数据量储存加载时也要等好久。。不过很多同学都借此机会抻抻懒腰、摸摸鱼,充分利用时间也不错。

其实,CSV 并不是唯一的数据存储格式。今天和大家介绍一个速度超快、更加轻量级的二进制格式保存格式:feather。

Feather是什么?

Feather 是一种用于存储数据帧的数据格式。它最初是为了 Python 和 R 之间快速交互而设计的,初衷很简单,就是尽可能高效地完成数据在内存中转换的效率。

现在 Feather 也不仅限于 Python 和 R 了,基本每种主流的编程语言中都可以用 Feather 文件。不过,要说明下,它的数据格式并不是为长期存储而设计的,一般的短期存储。

如何在Python中操作Feather?

在 Python 中,可以通过 pandas 或 Feather 两种方式操作。首先需要安装feather-format。

# pip 
pip install feather -format 

# Anaconda 
conda install -c conda-forgefeather-format

只需要上面一行安装即可,很简单。

我们通过一个较大的数据集举例,需要 Feather、Numpy 和 pandas 来一起配合。数据集有 5 列和 1000 万行随机数。

import feather
import numpy as np
import pandas as pd

np.random.seed = 42
df_size = 10000000

df = pd.DataFrame({
    'a': np.random.rand(df_size),
    'b': np.random.rand(df_size),
    'c': np.random.rand(df_size),
    'd': np.random.rand(df_size),
    'e': np.random.rand(df_size)
})
df.head()

它的用法和之前csv的操作难度一个水平线,非常简单。

保存

两种方式,一是 DataFrame 直接to_feather 的 Feather 格式:

df.to_feather('1M.feather')

二是用 Feather 库执行相同操作的方法:

feather.write_dataframe(df, '1M.feather')

加载

加载也是一样的,同样还是两种方式。一是通过pandas加载:

df = pd.read_feather('1M.feather')

二是用 Feather 加载:

df =feather.read_dataframe('1M.feather')

操作习惯一样,难度完全没有。

和CSV的区别

对比产生美。下面来看下feather和csv的差距有多大。下图显示了上面本地保存 DataFrame 所需的时间:

差距巨大,有木有!原生 Feather(图中的Native Feather)比 CSV 快了将近 150 倍左右。如果使用 pandas 处理 Feather 文件并没有太大关系,但与 CSV 相比,速度的提高是非常显著的。

然后再看下读取不同格式的相同数据集需要多长时间。

同样,差异也很明显。CSV 的读取速度要慢得多。并且CSV占用的磁盘空间也更大。

CSV 文件占用的空间是 Feather 文件占用的空间的两倍多。假如我们每天存储千兆字节的数据,那么选择正确的文件格式至关重要。Feather 在这方面完全碾压了 CSV。

当然,如果追求更多的压缩空间,也可以试试Parquet,也是一个可以替代CSV 的格式。

结语

说了这么多,还是那句话,当你需要它时,它就有用,如果日常没有速度和空间的强烈需求,还是老老实实CSV吧。CSV已经用惯了,改变使用习惯还是挺难的。



推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,领AI全套资料
CSV大数据分批并压缩导出 使用POI、JXL导出大量的数据到Excel很容易造成内存溢出,而CSV采用流的方式将大数据分批并压缩导出 立即下载

相关推荐

最详细的Cadence OrCAD Capture自带元件库的介绍

最详细的Cadence OrCAD Capture自带元件库的介绍 本章节将介绍Cadence OrCAD Capture 软件自带的各类元件库的分类,方便大家在设计时能够快速的选择元件。 AMPLIFIER.OLB 共182个零件,存放模拟放大器,IC,如LM386,MAX457等。 ARITHMETIC.OLB 共182个零件...

LGCPCB的博客 6万+

Python读取Excel表格效率对比(openpyxl、xrld、csv)

文章目录前言安装模块正文一、openpyxl 读取 .xlsx二、openpyxl 读取 .xlsx(只读模式)三、xrld 读取 .xlsx四、CSV 读取 .csv结论 前言 搭了一个配置表检查平台,单个项目使用时执行效率还能接收,可后面部署到公司所有项目使用时执行就变的慢,毕竟数据量起来了,经过排查主要表现在表格的读取,所有才有这篇效率对比。 安装模块 CSV标准库自带,不用安装 pip install openpyxl pip install xrld 环境: Python版本:3.6.9 O

游戏测试-AJiian的博客 7268

200SMART PLC时间不准?手把手教你用MCGS触摸屏实现自动校时(附完整代码)

本文针对西门子200SMART PLC时钟不准的常见问题,提供了一套基于MCGS触摸屏的自动校时解决方案。文章详细阐述了时钟偏差的根源、时间同步方案的技术选型,并手把手指导如何配置MCGS与PLC的通信,以及编写完整的PLC时间读取、转换与设置代码,最终实现稳定可靠的自动时间同步功能。

jupyter5notebook的博客 462

python读写csv与数据库性能_Python读取CSV文件并存储到MySQL

在项目中对后台进行测试时,经常会遇到要在数据库新增数据,那么如何快速新增数据来提高工作效率呢?现整理如下:代码内容(csv_to_mysql.py):# coding=utf-8import pymysqlfile_path = "export.csv"table_name = "export"try:con = pymysql.connect(user="root",passwd="123456...

weixin_39594080的博客 281

html2canvas 返回的toDataURL()数据为 data:,的解决方法

html2canvas 返回的toDataURL()数据为 data:,的解决方法 我在使用html2canvas的使用, 发现toDataURL() 返回的数据为data:, 而且将数据设置为img的src属性,图片也不能正常显示,我尝试了很多方法,也没有解决出来,经过我不断的百度+自己尝试,终于解决了这个问题。 代码: 这段代码是没有任何问题的,标准html2canvas的demod代码,但就是无法正常将图片previewImg 渲染出来,dataURL 我打印的结果为 data:, 错误的原因是,

java123_PB的博客 5025

浅谈功放PA的VBW

摘要:VBW(视频带宽)反映功放的宽带非线性特性和记忆效应,影响数字预失真(DPD)校正能力。其成因是功放管寄生参数(如Cshunt和Leff)形成低频并联谐振,导致供电臂阻抗增大,引发电压波动和记忆效应。测试方法包括双音IM3/IM5测试(以两侧IM3差≥3dB定义VBW)和魔T测试(通过S21曲线测量谐振频率)。改善措施主要是减小Leff,如采用双电源平衡馈电。VBW指标要求通常为魔T测试结果大于3倍信号带宽,以确保功放线性度。

weixin_49761275的博客 1575

停止以 CSV 格式保存数据帧,这些格式更棒!

欢迎关注 ,专注Python、数据分析、数据挖掘、好玩工具! 数据科学就是要处理数据。整个数据科学模型开发流程涉及数据讨论、数据探索、探索性数据分析、特征工程和建模。读取和保存中间文件是模型开发中的一项常见任务。 数据科学家通常更喜欢以 CSV 格式读取和保存 Pandas 数据帧。处理小尺寸或中等尺寸的数据非常简单,不需要太多开销,但是当处理大尺寸的数据集时,由于资源的限制,工作流会变慢。 CSV、Excel或其他文本文件格式在处理大数据时会失去吸引力。有各种二进制数据格式优于 CSV 文件格式,Pa.

Python学习与数据挖掘 437

详解STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用

本文详细解析了STM32F407双重ADC同步采集与DMA传输的配置技巧及实战应用。通过CubeMX配置、代码实现和常见问题解决方案,帮助开发者高效实现多通道数据同步采集,提升工业自动化和嵌入式系统的数据采集效率与精度。

ii567的博客 365

Pandas慢到崩溃?,3种高性能替代方案让你的数据分析提速10倍

Pandas慢?试试这3种开源数据分析Python替代方案,大幅提升处理速度。适用于大数据清洗与计算场景,基于Arrow、Polars等高性能库,内存效率提升10倍。操作兼容Pandas语法,迁移简单,值得收藏。

CompiWander的博客 1297

Opencv2.4.9源码分析——HoughCircles

图形可以用一些参数进行表示,标准霍夫变换的原理就是把图像空间转换成参数空间(即霍夫空间),例如霍夫变换的直线检测就是在距离-角度空间内进行检测。圆可以表示成: (x-a)2+(y-b)2=r2                   (1) 其中a和b表示圆心坐标,r表示圆半径,因此霍夫变换的圆检测就是在这三个参数组成的三维空间内进行检测。 原则上,霍夫变换可以检测任何形状。但复杂的形状需要的

赵春江的专栏 3万+

华为OD机试真题 新系统2026-04-01 Python&JS 实现【空间占用计算】

员工A的磁盘空间经常被耗尽,他需要找到占用空间最大的目录或文件,然后决定如何清理文件释放空间。给定某一目录,请编写程序帮助他统计该目录内一级子目录和文件的占用空间,并返回目标目录一级子项(文件或子目录)中占用空间最大的项。

MISAYAONE的博客 1322

Python、pandas读取和存储json、xlsx、csv文件速度比较

利用原有装饰器函数 @timeit_test(number=3, repeat=3) 进行测试。【省略源代码】测试结果表明:json 和 csv 格式文件读写,均在 0.1 左右完成;而 excel 文件读用时5秒多,写用时11秒多,比 json、csv 文件读写慢50-100倍。所以,尽量减少excel的读写,必要时采用文本格式json、csv文件进行存储信息,以提高程序运行效率。

【独钓寒江雪】的博客 4535

一文带你了解什么是RDMA

RDMA(Remote Direct Memory Access,远程直接内存访问)是一种起源于高性能计算领域的通信技术,如今已广泛应用于数据中心。该技术使得用户程序能够绕过操作系统内核及CPU,直接与网络接口卡(NIC)交互,实现网络通信。这种方式不仅大幅提升了通信带宽,还显著降低了网络延迟,优化了整体性能。

嵌入式技术开发 6018

在Python中文件用Feather格式,与 CSV说再见,速度提升 150 倍!

在Python中文件用Feather格式,与 CSV说再见,速度提升 150 倍!

【独钓寒江雪】的博客 3932

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

吊打 CSV,速度提升 150 倍!

图片来源@unsplash.com为什么要和CSV再见?害,来介绍下为什么要和CSV再见。其实也谈不上彻底再见吧,日常还是要用的,这里再介绍一个更加高效的数据格式。用Python处理数据时...

SeizeeveryDay的博客 419

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python CSV处理:四招搞定所有数据难题!

csv.reader:简单读取,返回列表形式的数据:按字段名读取,返回字典形式的数据csv.writer:简单写入,接受列表形式的数据:按字段名写入,保持数据结构清晰。

YAnt的博客 742

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

比传统方法快10倍!JS字符串分割优化技巧

最近在处理大规模CSV数据时,发现字符串分割成了性能瓶颈。经过反复测试对比,总结出三种JavaScript字符串分割方法的效率差异,其中最优方案比传统方式快了近10倍。对于需要持续运行的服务端数据处理场景,平台的一键部署能力也很实用——将优化后的解析函数封装成API接口,直接生成可对外服务的端点,省去自己搭建测试环境的麻烦。测试发现,这种方法在Chrome控制台平均耗时约1200ms,成为数据处理链条中最耗时的环节。的优化都很好,但在IE11等老旧环境中,正则方案可能更稳定。截取子串,平均仅需150ms。

BlackironLynx23的博客 605

如何用105个公共Tracker服务器让BT下载速度提升3倍:完整指南

还在为BT下载速度慢如蜗牛而烦恼吗?每次下载热门资源却连接不到足够的用户?今天我要分享一个简单有效的解决方案——使用trackerslist项目提供的105个公共Tracker服务器列表。这个开源项目每天自动更新,为你提供最优质、最活跃的BitTorrent tracker服务器资源,让你的下载体验焕然一新。 ## 为什么Tracker服务器是BT下载的关键? 想象一下,你在一个大型音乐节上想

gitblog_00778的博客 366

告别Excel卡顿!用Modern CSV在Mac上秒开百万行CSV文件(附免费替代方案)

本文介绍了Modern CSV在Mac上高效处理百万行CSV文件的优势,相比Excel等传统工具,Modern CSV通过懒加载、内存映射和列式存储技术显著提升加载速度和内存效率。文章还提供了免费替代方案如VS Code插件和csvtk,帮助用户优化数据处理工作流。

weixin_30664615的博客 578
上一篇: 一二线城市知名 IT 互联网公司名单!
下一篇: 用 Python 爬了猫眼3000+《指环王》影评,看看20年前的魔幻电影鼻祖在当下影迷眼中的样子...
菜鸟学Python
博客等级 码龄9年 8089粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值