pandas 读写常见文件性能对比

文章通过Python的pandas库测试了HDF5、CSV、pickle、parquet和feather等文件格式的读写性能,发现HDF5、pickle和parquet在处理大数据时具有较好的速度和空间占用率。
摘要由CSDN通过智能技术生成
1. 背景

pandas在数据分析应用中使用频率非常高的python 库,在数据分析的过程中,读写文件是非常基础的操作,它关系到整个数据分析的性能表现。下面就用程序验证pandas 读写常见几种文件的性能表现。

2. 代码验证
import pandas as pd
import time
import numpy as np


def write_data(df):
    store = pd.HDFStore('D:\\test\\store.h5')
    start = time.time()
    store['df'] = df
    store.close()
    print(f'HDF5存储用时{time.time() - start}秒')

    start = time.time()
    df.to_csv('d:\\test\\df.csv', index=False)
    print(f'csv存储用时{time.time() - start}秒')

    start = time.time()
    df.to_pickle("D:\\test\\df.pickle")
    print(f'pickle存储用时{time.time() - start}秒')

    start = time.time()
    df.to_parquet("D:\\test\\df.parquet")
    print(f'parquet存储用时{time.time() - start}秒')

    start = time.time()
    df.to_feather("D:\\test\\df.feather")
    print(f'feather存储用时{time.time() - start}秒')





def read_data():
    start = time.time()
    store = pd.HDFStore('d:\\test\\store.h5', mode='r')
    df1 = store.get('df')
    print(f'HDF5读取用时{time.time() - start}秒')
    store.close()

    start = time.time()
    df1 = pd.read_csv('d:\\test\\df.csv')
    print(f'csv读取用时{time.time() - start}秒')

    start = time.time()
    df1 = pd.read_pickle('d:\\test\\df.pickle')
    print(f'pickle读取用时{time.time() - start}秒')

    start = time.time()
    df1 = pd.read_parquet('d:\\test\\df.parquet')
    print(f'parquet读取用时{time.time() - start}秒')

    start = time.time()
    df1 = pd.read_feather('d:\\test\\df.feather')
    print(f'feather读取用时{time.time() - start}秒')

if __name__ == '__main__':
    # 生成1亿条5列的随机数据
    data = pd.DataFrame(np.random.rand(100000000, 5))
    write_data(data)
    read_data()


3. 运行结果
hdf5csvpickleparquetfeather
读取11.8s68.9s3.5s6.5s5.3s
写入4s532s3.3s28.4s9.4s
文件大小4.46G9.06G3.72G3.84G3.72G

从以上表格中可以得出hdf5,pickle,parquet等格式的读写性能以及空间占用均比较好,当进行大量数据的分析时可以考虑使用这些格式。

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值