0%

PYTHON-pandas-pickle(Python对象序列化)

PYTHON-pandas-pickle(Python对象序列化)

pickle模块实现了一个强大的算法,能够对用Python实现的数据结构进行序列化( pickling )和反序列化操作。序列化是指把对象的层级结构转换为字节流的过程。

  1. 用CPickle实现Python对象序列化

    pickle模块(或cPickle)使用的数据格式是Python独有的,默认使用ASCII表达式,以增强可读性。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 使用模块前,需要先导人它
    import cPickle as pickle
    # 创建具有内部结构的足够复杂的对象
    data={'color':['white','red'],'value':[5,7]}
    # 用cPickle模块的dumps()函数对data对象执行序列化操作。
    pickled_data = pickle.dumps(data)
    # 输出pickled_data变量的值,查看dict对象序列化的结果。
    print(pickled_data)

    # 数据序列化后,在写入文件或用套接字、管道等发送都很简单
    # 传输结束后,用cPickle模块的loads()函数能够重建被序列化的对象(反序列化)
    nframe = pickle.loads(pickled_data)
  2. 用pandas实现对象序列化

    pandas的序列化格式并不是完全使用ASCII编码。

    1
    2
    frame = pd.DataFrame(np.arange(16).reshape(4,4),index=['up','down','left','right'])
    frame.to_pickle('frame.pkl')

    工作目录中将生成新文件frame.pkl,其包含frame中的所有信息。使用以下命令,就能打开PKL文件,读取里面的内容。

    1
    pd.read_pickle('frame.pkl')

    pandas的所有序列化和反序列化操作都在后台运行,用户根本看不到。这使得这两项操作对数据分析人员而言尽可能简单和易于理解。