python 数据保存格式的选择

今天发现一个问题,就是有一个数据,很长,几百个被试的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。

你可能感兴趣的:(python,开发语言)