python 数据保存格式的选择

文章讨论了在处理大量行但列数较少的FMRI数据时,如何通过使用HDF5(尤其是PyArrow优化的CSV写入)显著提高数据保存速度。作者推荐在大数据场景下优先选择HDF5,同时提及了TSV和PyArrow对CSV的优化作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天发现一个问题,就是有一个数据,很长,几百个被试的fmri数据,有10M+行,使用pandas.to_csv占用的时间特别长,写了20分钟还没写完。于是上网寻找更快的数据保存方式。

  1. HDF5
    网上首推的是h5为后缀的格式,这个是fmriprep使用的格式。这个的好处在于,对于很长不宽的数据(很多行,列不多),10M+,写入的速度是to_csv的二十几倍。坏处在于需要读取后进一步转换成data.frame和csv,并且保存为h5的数据size会变大,其利用磁盘空间代替来提升速度。推荐使用的场景是大数据(1G+)的长数据。
stage.to_hdf(r'path/file.h5', key='stage', mode='w')
  1. tsv和csv
    tsv和csv的速度差不多,两者差不多,区别在于tsv能解决数据中字符串带有逗号(‘,’)的问题,因为csv是基于逗号分隔,会额外分割数据。
  2. csv和txt
    两者速度差不太多。
  3. 优化csv - pyarrow
    pyarrow 能优化to csv的速度,大概是快8x
import pyarrow as pa
import pyarrow.csv as csv
df = pandas.DataFrame(xxxxxx)
new_df = pa.Table.from_pandas(df)
new_df_name = 'Downloads/data/results'
csv.write_csv(new_df, new_df_name) # 不需要加其他参数,自动带header 和没有index

最后还是强烈推荐使用 pyarrow。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clancy_wu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值