Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧保存到pickle和csv之间有什么区别?_Python_Pandas_Csv_Pickle - Fatal编程技术网

Python 将数据帧保存到pickle和csv之间有什么区别?

Python 将数据帧保存到pickle和csv之间有什么区别?,python,pandas,csv,pickle,Python,Pandas,Csv,Pickle,我正在学习蟒蛇。 我看到了一个教程,其中展示了保存数据帧的两种方法 pd.to_csv('sub.csv')和打开pd.read_csv('sub.csv') pd.to_pickle('sub.pkl')和打开pd.read_pickle('sub.pkl') 教程说,to_pickle是将数据帧保存到磁盘。我对此感到困惑。因为当我使用创建csv时,我确实看到文件夹中出现了一个csv文件,我想它也是保存到磁盘的,对吗 一般来说,为什么我们要使用来保存数据帧,而不是将其保存为csv、txt或其他

我正在学习蟒蛇。 我看到了一个教程,其中展示了保存数据帧的两种方法

  • pd.to_csv('sub.csv')
    和打开
    pd.read_csv('sub.csv')

  • pd.to_pickle('sub.pkl')
    和打开
    pd.read_pickle('sub.pkl')

  • 教程说,
    to_pickle
    是将数据帧保存到磁盘。我对此感到困惑。因为当我使用
    创建csv
    时,我确实看到文件夹中出现了一个csv文件,我想它也是保存到磁盘的,对吗


    一般来说,为什么我们要使用
    来保存数据帧,而不是将其保存为csv、txt或其他格式?

    pickle是存储数据帧的一种序列化方式。基本上,您正在将数据帧的精确表示形式写入磁盘。这意味着列的类型和索引是相同的。如果您只是将文件保存为
    csv
    ,那么您只是将其存储为逗号分隔的列表。根据您的数据集,在加载备份时,某些信息将丢失

    您可以阅读有关python中pickle库的更多信息。

    csv
    • ✅可读
    • ✅跨平台
    • ⛔慢的
    • ⛔更多磁盘空间
    • ⛔在某些情况下不保留类型
    泡菜
    • ✅快速保存/加载
    • ✅更少的磁盘空间
    • ⛔非人类可读的
    • ⛔仅限python
    还可以看看拼花地板的格式(
    到_parquet
    读取_parquet
    • ✅快速保存/加载
    • ✅比pickle更少的磁盘空间
    • ✅由多个平台支持
    • ⛔非人类可读的

    那么您的意思是,在保存熊猫数据帧时,最好使用pickle,即它保留原始数据帧?泡菜有什么好处吗?例如,在加载速度方面?@KevinKim,您可能想检查一下以CSV保存的主要优点是有一个标准格式,可以用多种软件打开/languages@MaxU谢谢因此,如果我的原始数据集是一个大的csv文件,我想最好先将其加载到pandas中,然后使用to_pickle存储它。因此,下一次当我需要再次加载此数据帧时,我可以使用read_Picker来更快地加载它,对吗?@Alessandro是的,这是有道理的,我同意你的看法Matthew Rocklin做了一个有趣的速度分析,还根据it的一个例子来看看feather格式(
    to_feather
    read_feather
    )“显示出很高的I/O速度,不占用磁盘上太多的内存,并且在加载回RAM时不需要任何解包。”感谢这个答案非常简洁,切中要害。对于详细的细分,我发现这是一个深入的细分,包括
    到_feather
    vs
    到_parquet