电子商务网站建设的核心多选,wordpress 网盘 插件,甘肃省建设厅官方网站质监局,微信企业邮箱登录入口前言
本文对pandas支持的一些数据格式进行IO#xff08;读写#xff09;的性能测试#xff0c;大数据时代以数据为基础#xff0c;经常会遇到操作大量数据的情景#xff0c;数据的IO性能尤为重要#xff0c;本文对常见的数据格式csv、feather、hdf5、jay、parquet、pick…前言
本文对pandas支持的一些数据格式进行IO读写的性能测试大数据时代以数据为基础经常会遇到操作大量数据的情景数据的IO性能尤为重要本文对常见的数据格式csv、feather、hdf5、jay、parquet、pickle性能进行对比。
csv
CSVComma-Separated Values是一种用于存储表格数据的简单文件格式。在 CSV 文件中每一行通常代表一条记录字段列由逗号分隔。尽管可以使用其他分隔符如制表符、分号等逗号是最常见的分隔符。
import time
import pandas as pdtemplates_path r./data.hdf5
df pd.read_hdf(templates_path, table)t0 time.time()
df.to_csv(data.csv)
print(csv写时间 , time.time()-t0)
t1 time.time()
df2 pd.read_csv(data.csv)
print(csv读时间 , time.time()-t1)测试632MB的hdf5运行结果 csv写时间 9.340209722518921 csv读时间 5.414996147155762
feather
Feather 是一种高效的列式存储格式专门用于快速读写数据框DataFrame。它是由 Apache Arrow 项目开发的旨在提高数据处理的速度和效率特别是在大型数据集的情况下。
import time
import pandas as pdtemplates_path r./data.hdf5
df pd.read_hdf(templates_path, table)t0 time.time()
df.to_feather(data.feather)
print(feather写时间 , time.time()-t0)
t1 time.time()
df2 pd.read_feather(data.feather)
print(feather读时间 , time.time()-t1)测试632MB的hdf5运行结果 feather写时间 1.2748804092407227 feather读时间 5.084072828292847
hdf5
HDF5Hierarchical Data Format version 5是一种用于存储和管理大型、复杂的数据集合的文件格式。
import time
import pandas as pdtemplates_path r./data.hdf5
df pd.read_hdf(templates_path, table)t0 time.time()
df.to_hdf(data.hdf5, table)
print(hdf写时间 , time.time()-t0)
t1 time.time()
df2 pd.read_hdf(data.hdf5, table)
print(hdf读时间 , time.time()-t1)测试632MB的hdf5运行结果 hdf写时间 4.227152109146118 hdf读时间 1.985311508178711
jay
Jay 格式通常称为 Jay Data是一种具有可扩展性的数据交换格式主要用于存储和传输数据。
import time
import pandas as pd
import datatable as dt
templates_path r./data.hdf5
df pd.read_hdf(templates_path, table)t0 time.time()
dt.Frame(df).to_jay(data.jay)
print(jay写时间 , time.time()-t0)
t1 time.time()
data_jay dt.fread(data.jay)
print(jay读时间 , time.time()-t1)测试632MB的hdf5运行结果 jay写时间 1.4829316139221191 jay读时间 0.0009965896606445312
parquet
Parquet 是一种列式存储文件格式主要用于数据处理和分析场景。它是 Apache Hadoop 生态系统中的一个重要组成部分设计用来支持高效的数据存储和检索。
import time
import pandas as pdtemplates_path r./data.hdf5
df pd.read_hdf(templates_path, table)t0 time.time()
df.to_parquet(data.parquet)
print(parquet写时间 , time.time()-t0)
t1 time.time()
df2 pd.read_parquet(data.parquet)
print(parquet读时间 , time.time()-t1)测试632MB的hdf5运行结果 parquet写时间 1.8439412117004395 parquet读时间 5.116466522216797
pickle
pickle 是 Python 的标准库之一用于序列化将 Python 对象转换为字节流和反序列化将字节流转换回 Python 对象。
import time
import pandas as pdtemplates_path r./data.hdf5
df pd.read_hdf(templates_path, table)t0 time.time()
df.to_pickle(data.pickle)
print(pickle写时间 , time.time()-t0)
t1 time.time()
df2 pd.read_pickle(data.pickle)
print(pickle读时间 , time.time()-t1)测试632MB的hdf5运行结果 pickle写时间 3.7283213138580322 pickle读时间 1.2415409088134766
测试结果汇总
格式csvfeatherhdf5jayparquetpickle632M写9.341.274.221.481.843.72632M读5.415.081.980.00095.111.243.6G写40.587.45*10.059.224.023.6G读34.434.43*0.0019 (5.44**)4.823.333.6Ghdf5占用空间3.65G0.97G3.6G3.75G1.01G3.05G
*数据中包含Long格式数据无法保存未能完成测试**数据需要经过处理才能达到原始数据格式加上处理耗时
总结
本测试基于python语言对于其他语言可能不适用。
对储存空间要求较高推荐使用 feather对读写速度要求较高推荐使用 pickle