今天看到一篇文章

参考:对比不同主流存储格式(csv, feather, jay, h5, parquet, pickle)的读取效率

然后我自己也试了一下,感觉发现了“新大陆”,T_T~到现在才知道还有这些存储形式,比这excel、csv快多了。

上次实习的时候,因为不知道可以存为其他格式,把多个几十个G的dataframe处理完后存为csv,过后又要读出来

心态瞬间崩了~

搞数据都搞了好久,浪费时间~拐求

文章目录

  • desk 读取CSV文件
  • 一、excel 存储格式(xlsx)
  • 二、csv 存储格式
  • 三、pickle 存储格式
  • 四、feather 存储格式
  • 五、parquet 存储格式
  • 六、jay 存储格式
  • 七、hdf5 存储格式

多的不说,直接看效果

这个结论直接借一下参考文章的,有需要的可以详细看参考文章


还有就是,数据稍微大一点,最好不要存为 excel 格式,这真的~慢

最后最后,在借用这位大兄弟的一句话

desk 读取CSV文件

import time
import dask
import dask.dataframe as dd
from dask.diagnostics import ProgressBar
from numba import jit
import pandas as pd
import numpy as np
import sys
# ----------------------------------------------------------------------------
switchDict = {0 : 'TEST',1 : 'ALL'
}# 编译数据量状态开关 0为测试(读部分数据),1为全量
status = switchDict[1]
@jit
def importData(fileName):if status == 'TEST':df = dd.read_csv(fileName, header=None, blocksize="100MB").head(17000)else:df = dd.read_csv(fileName,  blocksize="64MB").compute()df.index = pd.RangeIndex(start=0, stop=len(df))return df# 读正样本
t0=time.time()
t1= time.perf_counter()
with ProgressBar():data = importData('train.csv')
t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 3.421277699999337
wall time: 3.421303749084473
'''
print(f"当前数据框占用内存大小:{sys.getsizeof(data)/1024/1024:.2f}M")
data.shape

一、excel 存储格式(xlsx)

存为excel表,真的慢到天荒~拉胯啊

import time
t0=time.time()
t1= time.perf_counter() data.to_excel("data.xlsx")t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)

等了十几分钟,算了~

import time
t0=time.time()
t1= time.perf_counter() data_excel = pd.read_excel("./data.xlsx")t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)

二、csv 存储格式

import time
t0=time.time()
t1= time.perf_counter() data.to_csv("data.csv")t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 32.49002720000135
wall time: 32.48996901512146
'''

import time
t0=time.time()
t1= time.perf_counter() data_csv = pd.read_csv("./data.csv")t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 7.5742819999995845
wall time: 7.574833154678345
'''

三、pickle 存储格式

Pickle:用于序列化和反序列化Python对象结构

详细百度八~

import time
t0=time.time()
t1= time.perf_counter() data.to_pickle("data.pkl.gzip")t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 1.1933384000002625
wall time: 1.1980044841766357
'''

import time
t0=time.time()
t1= time.perf_counter() data_pickle = pd.read_pickle("./data.pkl.gzip")t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 1.246990000000551
wall time: 1.246736764907837
'''

四、feather 存储格式

Feather:一个快速、轻量级的存储框架

网上很多推荐这个存储格式的

再见 CSV,速度提升 150 倍!

详细百度八~


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
'''

五、parquet 存储格式

Parquet:Apache Hadoop的列式存储格式

详细百度八~

import time
t0=time.time()
t1= time.perf_counter() data.to_parquet("data.parquet")t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 2.874607599999763
wall time: 2.874359369277954
'''

t0=time.time()
t1=time.perf_counter() data_parquet = pd.read_parquet("./data.parquet")t2=time.time()
t3=time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 0.9940449000000153
wall time: 0.9959096908569336
'''

六、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
'''

当我查看内容时,该对象是frame

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

七、hdf5 存储格式

普通格式存储

import time
t0=time.time()
t1= time.perf_counter() ####普通格式存储:
h5 = pd.HDFStore('./data.h5','w')
h5['data'] = data
h5.close()t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 2.1860209000005852
wall time: 2.186391592025757
'''

压缩格式存储

import time
t0=time.time()
t1= time.perf_counter() ####压缩格式存储
h5 = pd.HDFStore('./data.h5','w', complevel=4, complib='blosc')
h5['data'] = data
h5.close()t2=time.time()
t3= time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 1.9893786000002365
wall time: 1.9896411895751953
'''

t0=time.time()
t1=time.perf_counter() data_hdf5 = pd.read_hdf('./data.h5',key='data')t2=time.time()
t3=time.perf_counter() print("cpu time:",t3-t1)
print("wall time:",t2-t0)
'''
cpu time: 1.4497185000000172
wall time: 1.4497275352478027
'''

Python Dataframe之excel、csv、pickle、feather、parquet、jay、hdf5 文件存储格式==》存读效率对比相关推荐

  1. python中txt转成csv_python 快速把超大txt文件转存为csv的实例

    今天项目有个需求,就是把txt文件转为csv,txt之间是空格隔开,转为csv时需要把空格转换为逗号,网上找的一个版本,只需要三行代码,特别犀利: import numpy as np import ...

  2. hdf5文件和csv的区别_使用HDF5文件并创建CSV文件

    hdf5文件和csv的区别 In my last article, I discussed the steps to download NASA data from GES DISC. The dat ...

  3. python怎么筛选excel数据_Python如何实现excel筛选后生成新表

    Python如何实现excel筛选后生成新表 xlrd对exce进行读操作,xlwt对exce进行写操作. 实现把excel中某些单元格的部分字符作为关键字,进行查找.话不多说直接上代码.# -*- ...

  4. Python 教程之如何在 Python 中处理大型数据集CSV、Pickle、Parquet、Feather 和 HDF5 的比较

    时隔这么久, Kaggle 终于推出了新的表格数据竞赛,一开始大家都很兴奋.直到他们没有.当 Kagglers 发现数据集有 50 GB 大时,社区开始讨论如何处理如此大的数据集. CSV 文件格式需 ...

  5. python csv转excel_使用 Python 把 PDF 转为 CSV 和 Excel(一)

    杭州国立公证处-公正摇号 会不定期公布杭州各个楼盘的购房意向登记汇总表和摇号结果,里面公开的数据是很全面的,对于想要分析一波数据搞点事情的人来说,挺有吸引力的. 但当你兴冲冲地去官网下载完数据,一看傻 ...

  6. Python数据分析实战-提取DataFrame(Excel)某列(字段)最全操作(附源码和实现效果)

    实现功能: Python数据分析实战-提取DataFrame(Excel)某列(字段)最全操作,代码演示了单列提取和多列提取两种情况,其中单列提取有返回series格式和dataframe两种情况,在 ...

  7. python pandas库读取excel/csv中指定行或列数据详解

    通过阅读表格,可以发现Pandas中提供了非常丰富的数据读写方法,下面这篇文章主要给大家介绍了关于python利用pandas库读取excel/csv中指定行或列数据的相关资料,需要的朋友可以参考下 ...

  8. python:dataframe保存成csv文件和读取

    一.从csv文件读取数据为dataframe 函数原型: pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='i ...

  9. python合并word单元格_python之DataFrame实现excel合并单元格_python

    这篇文章主要为大家详细介绍了python之DataFrame实现excel合并单元格,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元 ...

  10. python合并多个csv文件为excel并绘制曲线(参考文章记录)

    1 Python将多个excel文件合并为一个文件 https://blog.csdn.net/jiahaowanhao/article/details/80547623?utm_medium=dis ...

最新文章

  1. 驭下术:如何让下属老实听话?用这3招,让你不怒自威
  2. 2019金融科技风往哪儿吹?蚂蚁金服联合20余家金融机构预测新年热点:5G、区块链上榜...
  3. 【推荐系统】面向科研的推荐系统Benchmark诞生!
  4. 撒花!吴恩达新书《Machine Learning Yearning》完整中文版pdf开放下载
  5. Cognos 10.1 饼图百分比小数点显示的问题
  6. pip 安装网络超时解决方案
  7. 简述Android 程序执行流程,Android系统启动流程简述
  8. lk部分没有msm8937相关目录原因(指向msm8952)
  9. ❤️《大前端—Babel》
  10. 知网查重报告html乱码,知网查重报告乱码如何解决?
  11. java 有多少种锁_java有哪些锁?java锁种类盘点
  12. [CVPR2021]NeRV: Neural Reflectance and Visibility Fields for Relighting and View Synthesis
  13. ios 制作方形头像
  14. android p蓝色壁纸,iPhone和Android的最佳蓝色系壁纸分享
  15. Scrcpy-Android 设备投屏+控制工具--简略快捷键方便记忆
  16. AIX 比较全的FAQ
  17. linux usb视频播放,如何从linux USB捕获设备捕获与ffmpeg同步的音频和视频
  18. 超级狗无法识别到开发狗
  19. MAC 反编译安卓问题汇总
  20. OpenCV图像处理专栏九 | 基于直方图的快速中值滤波算法

热门文章

  1. 关于IDEA中使用git更新代码,会覆盖掉未提交的新代码解决问题
  2. python第三方库 invalid requirement_Python - 生成 requirement.txt 文件
  3. android 联系人 拼音,Android 2.1 (Eclair)的中文联系人拼音检索问题
  4. 通过公网访问二级路由器
  5. 牛逼哄哄的京东 JD-hotkey
  6. 【动态系统的建模与分析】一阶系统的单位阶跃响应+时间常数-笔记
  7. RGCF: Refined Graph Convolution Collaborative Filering withConcise and Expressive Embedding
  8. 微信小程序——车牌键盘组件实现
  9. HDU6069(区间筛)
  10. 苹果笔记本的end键_苹果电脑键盘快捷键使用技巧