pandas:如何保存数据比较好?

这篇具有很好参考价值的文章主要介绍了pandas:如何保存数据比较好?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在使用pandas处理完数据之后,最终总是要把数据作为一个文件保存下来,
那么,保存数据最常用的文件是什么呢?
我想大部分人一定会选择csv或者excel

刚接触数据分析时,我也是这么选择的,不过,今天将介绍几种不一样的存储数据的文件格式。
这些文件格式各有自己的一些优点,希望本文能让你以后的数据存储方式能有不一样的选择,从而存储的更加专业。

1. 准备数据

本次使用的数据来自A股2023年全年的日交易数据。
数据下载地址:https://databook.top/。

导入数据:

import pandas as pd

fp = "d:/share/历史行情数据-不复权-2023.csv"

df = pd.read_csv(fp)
df

pandas:如何保存数据比较好?
总共大约120多万条数据。

准备好测试数据之后,开始测试各种文件的效果。

2. CSV

使用pandas做数据分析时,保存数据最常用的格式一定是CSV(或者excel)。
因为CSV格式易于分享,用excel或者文本编辑器都能直接打开。

但是当数据集规模比较大时,它的磁盘利用率和读写效率究竟如何呢?
首先我们把准备的数据保存为一个测试用的test.csv文件。

df = pd.read_csv(fp)
df.to_csv("d:/share/test.csv", index=None)

看看文件大小:

ls .\test.csv


    目录: D:\share


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/03/15  10:41:27      101411037 test.csv

test.csv文件大约:\(101411037/1024/1024 \approx 96.7MB\)

读取效率:

%%timeit
df = pd.read_csv("d:/share/test.csv")
1.73 s ± 54.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

写入的效率:

%%timeit
df.to_csv("d:/share/test.csv", index=None)
13.2 s ± 402 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

3. Pickle

Pickle格式是一种用于序列化和反序列化Python对象结构二进制格式
它的主要特点是能够将程序中运行的对象信息保存到文件中。

下面,我们先把准备的数据保存为一个测试用的test.pkl文件。

# pickle file
df = pd.read_csv(fp)
df.to_pickle("d:/share/test.pkl")

文件大小:

ls .\test.pkl


    目录: D:\share


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/03/15  10:49:09      116904470 test.pkl

test.pkl文件大约:\(116904470/1024/1024 \approx 111.5MB\)

读取效率:

%%timeit
df = pd.read_pickle("d:/share/test.pkl")
136 ms ± 5.09 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

写入效率:

%%timeit
df.to_pickle("d:/share/test.pkl")
182 ms ± 7.42 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

4. Parquet

Parquet格式是一种列式存储格式,被广泛应用于大数据处理领域。
它采用了压缩和编码技术,能够有效地存储和压缩数据,同时保持数据的结构和模式。

下面,我们先把准备的数据保存为一个测试用的test.parquet文件。

# parquet file
df = pd.read_csv(fp)
df.to_parquet("d:/share/test.parquet")

文件大小:

ls .\test.parquet


    目录: D:\share


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/03/15  10:52:08       32964728 test.parquet

test.parquet文件大约:\(32964728/1024/1024 \approx 31.4MB\)

读取效率:

%%timeit
df = pd.read_parquet("d:/share/test.parquet")
200 ms ± 8.54 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

写入效率:

%%timeit
df.to_parquet("d:/share/test.parquet")
1.23 s ± 62.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

5. Feather

Feather格式是一种高速、轻量且易于使用的二进制文件格式,专门用于存储数据帧。
Feather的主要目标是提供高性能的读写操作。

下面,我们先把准备的数据保存为一个测试用的test.feather文件。

# feather file
df = pd.read_csv(fp)
df.to_feather("d:/share/test.feather")

文件大小:

ls .\test.feather


    目录: D:\share


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/03/15  11:17:15       57347098 test.feather

test.feather文件大约:\(57347098/1024/1024 \approx 54.7MB\)

读取效率:

%%timeit
df = pd.read_feather("d:/share/test.feather")
130 ms ± 5.29 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

写入效率:

%%timeit
df.to_feather("d:/share/test.feather")
277 ms ± 14.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

6. 总结

pandas能够保存的文件格式有很多,比如还有XMLJSONHTML等等,
上面列出的4种是我认为比较典型,且在数据分析领域用的比较多的格式。

4种格式的比较总结如下:

磁盘占用 读取效率 写入效率
csv 96.7 MB 1.73 s ± 54.7 ms 13.2 s ± 402 ms
pickle 111.5 MB 136 ms ± 5.09 ms 182 ms ± 7.42 ms
parquet 31.4 MB 200 ms ± 8.54 ms 1.23 s ± 62.4 ms
feather 54.7 MB 130 ms ± 5.29 ms 277 ms ± 14.8 ms

综合来看,当我们的数据量不大的时候,用CSV格式比较好,分享方便,可以用多种编辑器直接打开查看。
当数据规模变大了之后,如果数据需要长期存储,而且不需要经常的更新写入,那么用parquet格式(它的磁盘占用最低,读取性能好,写入性能略逊);
如果只要短期存储的话,用fetdher格式更好(磁盘占用不算高,读写性能都不错)。

至于pickle格式,它的读写性能也不错,但它的最大优势是可以保存python对象的状态,只用来保存数据的话,这个优势难以体现。
而且它的磁盘占用比较大,单纯保存数据的话,不建议使用这种格式。文章来源地址https://www.toymoban.com/news/detail-840234.html

到了这里,关于pandas:如何保存数据比较好?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pandas教程:如何使用insert函数向Dataframe指定位置插入新的数据列(Python)

    Pandas教程:如何使用insert函数向Dataframe指定位置插入新的数据列(Python) Pandas是Python中最流行的数据处理和分析库之一。在数据分析过程中,有时候需要在Dataframe中插入新的数据列。在本教程中,我们将介绍如何使用Pandas的insert函数在指定位置插入新的数据列。 首先,我们

    2024年02月11日
    浏览(31)
  • 简述如何使用Androidstudio对文件进行保存和获取文件中的数据

    在 Android Studio 中,可以使用以下方法对文件进行保存和获取文件中的数据: 保存文件: 创建一个 File 对象,指定要保存的文件路径和文件名。 使用 FileOutputStream 类创建一个文件输出流对象。 将需要保存的数据写入文件输出流中。 关闭文件输出流。 示例代码: 获取文件中

    2024年01月20日
    浏览(46)
  • 如何使用Python的pandas库获取DataFrame数据的最小值、最大值以及自定义分位数?

    Pandas是一个非常流行的Python数据处理库,它提供了大量的方法和工具来处理和分析数据。在本文中,我将向您展示如何使用Pandas获取dataframe格式数据的最小值、最大值和自定义分位数。 1、 获取最小值和最大值 获取dataframe的最小值和最大值非常简单。可以使用Pandas的min()和

    2024年02月02日
    浏览(69)
  • 如何将yuv420p图像数据转换为RGB数据并使用opencv保存为jpg图片

    yuv420是用4个byte存储4个Y的信息,用1个Byte存储U的信息,一个Byte存储V的信息, 这4个Y共用这2个U和V ,也就是用6个Byte 存储4个像素信息,也就是一个像素需要12个Bits(6*8/4),也就是12bpp。 注意yuv420p里面的p是指planar,也就是分层存储,先存全部Y的信息,然后是U的信息,最后

    2024年02月16日
    浏览(28)
  • python中使用pandas 导出到excel ,打开excel有错误,错误的提示为:发现“***”中的部分内容问题,是否让我们尽量尝试修复?如果您信任此工作簿的源,请单击“是”。

    目录  问题及解决办法 发现问题出现的原因为:文件重复保存  解决问题的方法为:注释掉writer.save() 完美解决!!!生成的表格打开便不会再有警告提示。 pd.ExcelWriter() 是 Pandas 库中的一个函数,用于创建一个 Excel 文件的写入器(Excel writer)对象,可以用来将数据写入 Ex

    2024年02月06日
    浏览(36)
  • 比较系统的学习Pandas(8)—添加与修改

    修改具体的数值 在Pandas中修改数值非常简单,先筛选出需要修改的数值范围,再 为这个范围重新赋值。 修改大范围的值 replace方法可以对数据进行批量替换 3、填充空值 fillna对空值填入指定数据,通常应用于数据清洗。 4、修改索引名 修改索引名最简单也最常用的办法就是

    2024年02月13日
    浏览(24)
  • Pandas DataFrame如何添加一行数据?

    在Pandas DataFrame中,我们经常需要添加新的行数据。这里介绍几种向DataFrame中添加一行数据的方法。 1. 使用.loc索引器 .loc索引器可以在DataFrame的尾部添加一条新行数据,语法如下: 例如: 2. 使用.append()方法 .append()方法可以向DataFrame尾部追加一行数据,语法如下: 例如: 3. 使用insert方

    2024年02月12日
    浏览(32)
  • 信息之板:数据看板如何点亮我们的生活

    数据看板,作为数据可视化的一种应用形式,已经逐渐渗透到我们的日常生活中,发挥着越来越重要的作用。这种集中呈现和分析信息的工具,不仅在企业管理中大放异彩,更在我们的日常生活中展现出了强大的价值。下面我就以可视化从业者的角度来简单聊聊这个话题。

    2024年01月18日
    浏览(39)
  • 物联网行业中,我们如何选择数据库?

    在当今数字化潮流中,我们面对的不仅是海量数据,更是时间的涟漪。从生产线的传感器到金融市场的交易记录,时间序列数据成为了理解事物演变和趋势的关键。在面对这样庞大而动态的数据流时,我们需要深入了解一种强大的工具——时序数据库。时序数据库的崛起不仅

    2024年04月15日
    浏览(38)
  • 数据分析-Pandas如何整合多张数据表

    数据表,时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。数据分析过程中表格重整,重新调整,重塑数据表是很重要的技巧,此处选择Titanic数据,以及巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 N O 2 ​ 数据作为样例。 数据分析

    2024年01月17日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包