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相关推荐

  1. fetchxml 汇总_Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧

    我们经常要对表单里各种类型的字段进行读取或赋值,下面列出各种类型的读写方法及注意事项: 1. lookup 类型 清空值 var state = Xrm.Page.getAttribute(" ...

  2. python csv读写方法_python中csv文件的若干读写方法小结

    如下所示: //用普通文本文件方式打开和操作 with open("'file.csv'") as cf: lines=cf.readlines() ...... //用普通文本方 ...

  3. 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 ...

  4. 实战: 对GBDT(lightGBM)分类任务进行贝叶斯优化, 并与随机方法对比

    目录: 一. 数据预处理 1.1 读取&清理&切割数据 1.2 标签的分布 二. 基础模型建立 2.1 LightGBM建模 2.2 默认参数的效果 三. 设置参数空间 3.* 参数空 ...

  5. 机器学习入门:准备知识笔记(pandas)之一

    参考教学笔记:2021年Python人工智能,13天机器学习入门到精通,精讲+14大案例分析(数据来源参考) pandas的优势  增强图表可读性 便捷的数据处理能力 读取文件方便 封装了Matplo ...

  6. 【论文笔记】投影仪-相机系统标定方法

    文章目录 Simple, Accurate, and Robust Projector-Camera Calibration 摘要 1.介绍 背景 所提方法 配套软件 相关工作 2.方法^*^ A.投 ...

  7. 【笔记】机器翻译学术论文写作方法和技巧(作者:清华大学 刘洋)

    文章目录 [笔记]机器翻译学术论文写作方法和技巧 1 论文发表流程 2 解决问题 3 审稿过程 4 全新全意为读者服务 5 标题的写法 6 摘要的写法 8 介绍的写法 9 段落的写法 10 图和表的重 ...

  8. python pandas 条件求和_python 使用pandas计算累积求和的方法

    python 使用pandas计算累积求和的方法 使用pandas下的cumsum函数 cumsum:计算轴向元素累积加和,返回由中间结果组成的数组.重点就是返回值是"由中间结果组成的数组& ...

  9. C语言清空输入缓冲区的N种方法对比

    C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...

最新文章

  1. etcd 笔记(07)— 键值对读写操作过程
  2. python开发【第四篇】:python基础之函数
  3. 兴趣记忆法(1)顺口溜记忆
  4. 你想进BAT吗?告诉你一个秘密,面试成功率能提高到99%!
  5. flask实现后台java实现前端页面_java实现telnet功能,待实现windows下远程多机自动化发布软件后台代码...
  6. lambda表达式传参
  7. 并发编程学习之线程8锁
  8. python模拟手机app签到_Python实现云之家自动签到
  9. 号码吉凶查询易语言代码
  10. VB浏览器html5网页,VB用IE浏览器打开网页源码,及用其它指定的浏览器打开网页源码。...
  11. python排名上升_11点告诉你,Python为什么这些年在编程语言排行榜上一直上升?...
  12. cad绘制正八边形_什么是CAD?为什么要学CAD?该怎么学CAD?
  13. 传说中最贵的跑车: 布加迪威龙
  14. 2021-07-08图书借阅管理系统
  15. 图书管理系统模块,通过模糊查询实现查找图书的功能
  16. 期货公司最低标准的手续费和保证金
  17. QML 自适应布局 关键
  18. 读取txt的中文字符出现乱码
  19. Java Future接口、Future模式理解
  20. ocr扫描识别软件操作步骤

热门文章

  1. 读书笔记:《活出生命的意义》
  2. 【VUE】前端搜索引擎优化seo
  3. Android 10 手机端控制车载蓝牙音乐上一首、暂停、下一首、获取音乐信息等流程
  4. 2018 mysql 笔试题_2018秋招数据库笔试面试题汇总
  5. el-pagination分页自定义前往第几页样式(下拉框形式)
  6. zabbix_sender用法实例
  7. 图片处理工具类 - ImageUtils.java
  8. 《Web设计大全》读书笔记之一
  9. 1+X 网络系统 建设与运维(中级)实验
  10. 模电设计学习笔记(二)——反相放大电路