笔记·Pandas几类数据读写方法对比——csv,parquet,feather和pickle
Pandas读取文件类型的数据方法有很多,当读取大文件时往往需要一点技巧来提高效率。
简单对比一下csv,parquet,feather和pickle这几类数据的读写效率,正好最近在处理轨迹数据,特别记录在此。
1.csv格式
csv格式可以通过文本形式直接读取,但是读取和存储效率较低。
'''
读取csv文件示例,16828849条数据,1.32GB
'''
pd_csv = pd.read_csv("data.csv") # 最常规的读取方式,也是最慢的
# time 11.286217212677002s
pd_csv_pa = pd.read_csv("data.csv", engine="pyarrow") # 利用pyarrow引擎,可以大幅提高效率
# time 3.797694206237793s
'''
存储csv文件示例
'''
pd_csv.to_csv("data.csv") # 存储csv效率很低
# time 55.74313497543335s
2.parquet格式
parquet被广泛用作表格数据集的主要文件格式,在Hadoop生态中被广泛应用,所以此类格式适用于Java、Scala、Python、R的环境中,兼顾适用范围和效率。
pandas1.4版本之后,使用parquet可以调用pyarrow和fastparquet两个引擎,需要额外安装。
# parrow:
pip install pyarrow
# fastparquet:
pip install fastparquet>=0.8
pip install python-snappy
'''
读取parquet文件示例,16828849条数据,313MB
'''
pd_pq_pa = pd.read_parquet("data.parquet", engine="pyarrow")
# time 2.2554268836975098s
pd_pq_fp = pd.read_parquet("data.parquet", engine="fastparquet")
# time 1.7567646503448486s
'''
存储parquet文件示例
'''
pd_pq.to_parquet("data.parquet") # 当安装过pyarrow之后默认使用pyarrow
# time 5.019140005111694s
pd_pq.to_parquet("data.parquet", engine="pyarrow")
# time 5.126128911972046s
pd_pq.to_parquet("data.parquet", engine="fastparquet") # 这个存储有点问题,用fastparquet存储之后为862MB,而且读取报错,不知道是不是环境问题,暂时不细究,建议不使用
# time 14.370543479919434s
engine参数如下图,当安装过pyarrow之后默认使用pyarrow
3.feather格式
feather是一种可移植的文件格式,用于存储Arrow表或数据帧,适用于Python和R语言,读写效率高。
'''
读取feather文件示例,16828849条数据,980MB
'''
pd_ft = pd.read_feather("data.feather")
# time 1.6818311214447021s
'''
存储feather文件示例
'''
pd_ft.to_feather("data.feather")
# time 2.6491539478302s
4.pickle格式
pickle文件是Python用来序列化和反序列化对象的方法,虽然可以用来存储数据,效率也很高,但是需要注意的是只适用于Python环境,且容易引发安全问题,使用时需要格外注意。
'''
读取pickle文件示例,16828849条数据,803MB
'''
pd_pkl = pd.read_pickle("data.pkl")
# time 1.2140724658966064s
'''
存储pickle文件示例
'''
pd_pkl.to_pickle("data.pkl")
# time 4.325848817825317s
方法对比
Parser | read time | save time | file size |
---|---|---|---|
Default csv | 11.2s | 55.74s | 1.32GB |
PyArrow csv | 3.8s | ||
PyArrow parquet | 2.25s | 5.13s | 313MB |
Fastparquet | 1.76s | 14.37s | 862MB |
Default feather | 1.68s | 2.65s | 980MB |
Default pickle | 1.21s | 4.33s | 803MB |
结论
显然相较于csv,不管是parquet、feather还是pickle都有非常明显的效率提升,通过对比可以简单得出结论:
1.feather无论是读取还是写入的效率都是最高的,唯一的缺点就是数据量比较大,如果只使用Python且不缺少存储空间的可以考虑;
2.pickle与feather相似,适合只使用Python的用户,且可以存储对象等其他数据结构
3.对于有空间要求的用户,parquet是一个不错的选择,并且适用于分布式计算场景中,保持较快读取速度的同时可以减少数据的传输量,比较推荐。(参数方面可以选择使用fastparquet去读取,pyarrow进行存储,这里不知道是不是我的设置问题)
4.一般数据处理而言,还是建议尽量减少使用csv,保障处理的效率
笔记·Pandas几类数据读写方法对比——csv,parquet,feather和pickle相关推荐
- fetchxml 汇总_Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
我们经常要对表单里各种类型的字段进行读取或赋值,下面列出各种类型的读写方法及注意事项: 1. lookup 类型 清空值 var state = Xrm.Page.getAttribute(" ...
- python csv读写方法_python中csv文件的若干读写方法小结
如下所示: //用普通文本文件方式打开和操作 with open("'file.csv'") as cf: lines=cf.readlines() ...... //用普通文本方 ...
- python移动平均线绘图_对python pandas 画移动平均线的方法详解
数据文件 66001_.txt 内容格式: date,jz0,jz1,jz2,jz3,jz4,jz5 2012-12-28,0.9326,0.8835,1.0289,1.0027,1.1067,1.0 ...
- 实战: 对GBDT(lightGBM)分类任务进行贝叶斯优化, 并与随机方法对比
目录: 一. 数据预处理 1.1 读取&清理&切割数据 1.2 标签的分布 二. 基础模型建立 2.1 LightGBM建模 2.2 默认参数的效果 三. 设置参数空间 3.* 参数空 ...
- 机器学习入门:准备知识笔记(pandas)之一
参考教学笔记:2021年Python人工智能,13天机器学习入门到精通,精讲+14大案例分析(数据来源参考) pandas的优势 增强图表可读性 便捷的数据处理能力 读取文件方便 封装了Matplo ...
- 【论文笔记】投影仪-相机系统标定方法
文章目录 Simple, Accurate, and Robust Projector-Camera Calibration 摘要 1.介绍 背景 所提方法 配套软件 相关工作 2.方法^*^ A.投 ...
- 【笔记】机器翻译学术论文写作方法和技巧(作者:清华大学 刘洋)
文章目录 [笔记]机器翻译学术论文写作方法和技巧 1 论文发表流程 2 解决问题 3 审稿过程 4 全新全意为读者服务 5 标题的写法 6 摘要的写法 8 介绍的写法 9 段落的写法 10 图和表的重 ...
- python pandas 条件求和_python 使用pandas计算累积求和的方法
python 使用pandas计算累积求和的方法 使用pandas下的cumsum函数 cumsum:计算轴向元素累积加和,返回由中间结果组成的数组.重点就是返回值是"由中间结果组成的数组& ...
- C语言清空输入缓冲区的N种方法对比
C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...
最新文章
- etcd 笔记(07)— 键值对读写操作过程
- python开发【第四篇】:python基础之函数
- 兴趣记忆法(1)顺口溜记忆
- 你想进BAT吗?告诉你一个秘密,面试成功率能提高到99%!
- flask实现后台java实现前端页面_java实现telnet功能,待实现windows下远程多机自动化发布软件后台代码...
- lambda表达式传参
- 并发编程学习之线程8锁
- python模拟手机app签到_Python实现云之家自动签到
- 号码吉凶查询易语言代码
- VB浏览器html5网页,VB用IE浏览器打开网页源码,及用其它指定的浏览器打开网页源码。...
- python排名上升_11点告诉你,Python为什么这些年在编程语言排行榜上一直上升?...
- cad绘制正八边形_什么是CAD?为什么要学CAD?该怎么学CAD?
- 传说中最贵的跑车: 布加迪威龙
- 2021-07-08图书借阅管理系统
- 图书管理系统模块,通过模糊查询实现查找图书的功能
- 期货公司最低标准的手续费和保证金
- QML 自适应布局 关键
- 读取txt的中文字符出现乱码
- Java Future接口、Future模式理解
- ocr扫描识别软件操作步骤