You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pandas DataFrame保存为npz文件?附大文件高效方案

保存合并后DataFrame到NPZ文件的方法及高效实现方案

基础实现方式

NPZ是NumPy的压缩存储格式,本身用于存储NumPy数组,因此需要将DataFrame转换为适配的NumPy结构,同时可保留列名、索引等元信息:

  1. 转为结构化数组存储(保留列名)
    利用Pandas的to_records方法将DataFrame转为结构化数组,列名会被保留在数组的dtype中,无需额外存储列名信息:

    import numpy as np
    import pandas as pd
    
    # 假设merged_df是处理完成的合并后DataFrame
    structured_array = merged_df.to_records(index=False)  # 不需要保存索引则加index=False,反之移除
    np.savez('merged_data.npz', data=structured_array)
    

    读取恢复的代码:

    loaded_data = np.load('merged_data.npz')
    restored_df = pd.DataFrame(loaded_data['data'])
    
  2. 拆分存储数据、列名与索引
    若不想使用结构化数组,可将数据主体、列名、索引分别作为独立数组存入NPZ:

    np.savez('merged_data.npz',
             data=merged_df.values,
             columns=np.array(merged_df.columns),
             index=np.array(merged_df.index))
    

    读取恢复的代码:

    loaded_data = np.load('merged_data.npz')
    restored_df = pd.DataFrame(
        loaded_data['data'],
        columns=loaded_data['columns'],
        index=loaded_data['index']
    )
    

大DataFrame的高效存储优化

针对你的5000行30列规模的DataFrame,可通过以下方式提升存储效率与读写速度:

  • 启用压缩存储
    np.savez默认不压缩,改用np.savez_compressed可启用无损压缩,大幅减小文件体积,且对数值型数据的压缩效率极高:

    structured_array = merged_df.to_records(index=False)
     np.savez_compressed('merged_data_compressed.npz', data=structured_array)
    
  • 优化数据类型
    先对DataFrame的字段类型做精简,比如将非必要的float64转为float32,大整数类型按需转为int32/int16,减少内存占用与文件体积,间接提升读写速度:

    # 示例:优化字段数据类型
     merged_df['temperature'] = merged_df['temperature'].astype('float32')
     merged_df['user_id'] = merged_df['user_id'].astype('int32')
    
     # 再转结构化数组并压缩存储
     structured_array = merged_df.to_records(index=False)
     np.savez_compressed('merged_data_optimized.npz', data=structured_array)
    
  • 补充:专用表格存储格式(可选)
    如果并非必须使用NPZ,Pandas自带的to_parquet或to_feather格式更适合表格数据:它们支持列存储、读写速度更快,且能完整保留DataFrame的所有元信息。但如果业务要求必须用NPZ,上述方法已足够高效。

内容的提问来源于stack exchange,提问作者Akash Parmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:25:30