欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > 【Python】pkl、npz、parquet文件格式

【Python】pkl、npz、parquet文件格式

2025/5/1 0:26:59 来源:https://blog.csdn.net/old_power/article/details/147579563  浏览:    关键词:【Python】pkl、npz、parquet文件格式

.pkl.npz.parquet 是三种常见的文件格式,分别用于不同的数据存储和序列化场景。以下是它们的详细说明:


1. .pkl (Pickle File)

  • 用途: .pkl 文件是由 Python 的 pickle 模块生成的序列化文件,用于保存 Python 对象(如字典、列表、模型等)到磁盘。
  • 特点:
    • 优点:
      • Python 原生支持,适合保存复杂的 Python 数据结构。
      • 可以保存机器学习模型(如 scikit-learn、TensorFlow 等)。
    • 缺点:
      • 不跨语言,其他编程语言无法直接读取。
      • 存在安全风险,加载不受信任的 .pkl 文件可能导致代码执行漏洞。
  • 示例代码:
    import pickle# 写入 .pkl 文件
    with open('data.pkl', 'wb') as f:pickle.dump(data, f)# 读取 .pkl 文件
    with open('data.pkl', 'rb') as f:data = pickle.load(f)
    

2. .npz (NumPy Zipped Archive)

  • 用途: .npz 文件是 NumPy 提供的一种压缩存档格式,用于存储多个数组或矩阵。
  • 特点:
    • 优点:
      • 支持同时存储多个数组,并且可以压缩以节省空间。
      • 高效处理数值数据,特别适合科学计算。
    • 缺点:
      • 主要适用于 NumPy 数组,不适合其他类型的数据。
  • 示例代码:
    import numpy as np# 创建一些数组
    array1 = np.array([1, 2, 3])
    array2 = np.array([4, 5, 6])# 写入 .npz 文件
    np.savez('arrays.npz', array1=array1, array2=array2)# 读取 .npz 文件
    data = np.load('arrays.npz')
    print(data['array1'])  # 访问存储的数组
    print(data['array2'])
    

3. .parquet (Parquet File)

  • 用途: .parquet 是一种高效的列式存储文件格式,广泛用于大数据处理和分析(如 Apache Spark、Pandas、Dask 等)。
  • 特点:
    • 优点:
      • 列式存储适合数据分析任务,尤其是对部分列的操作。
      • 支持高效压缩,节省存储空间。
      • 支持 Schema(数据结构定义),便于管理复杂数据。
    • 缺点:
      • 更适合表格型数据,不适用于非结构化数据。
  • 示例代码:
    import pandas as pd# 创建一个 DataFrame
    df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})# 写入 .parquet 文件
    df.to_parquet('data.parquet')# 读取 .parquet 文件
    df = pd.read_parquet('data.parquet')
    print(df)
    

总结对比

格式用途特点常见工具/库
.pklPython 对象序列化Python 原生支持,灵活但可能存在安全风险pickle 模块
.npzNumPy 数组存储支持多数组压缩存储,适合科学计算NumPy (numpy.savez)
.parquet大数据分析和高效存储列式存储,支持压缩,适合大数据场景Pandas、PyArrow、Spark

如何选择?

  1. 如果需要保存 Python 对象(如字典、列表、模型等):使用 .pkl
  2. 如果需要保存多个 NumPy 数组(如科学计算中的矩阵):使用 .npz
  3. 如果需要高效存储和分析大规模表格型数据(如 CSV 替代方案):使用 .parquet

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词