Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Pandas DataFrame 数据存储格式比较

Pandas DataFrame 数据存储格式比较

作者头像
数据STUDIO
发布于 2023-09-28 04:40:28
发布于 2023-09-28 04:40:28
27300
代码可运行
举报
文章被收录于专栏:数据STUDIO数据STUDIO
运行总次数:0
代码可运行
Pandas 支持多种存储格式,在本文中

创建测试Dataframe

首先创建一个包含不同类型数据的测试Pandas Dataframe。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import pandas as pd
 import random
 import string
 import numpy as np
 
 # Config DF
 df_length= 10**6
 start_date= '2023-01-01'
 all_string= list(string.ascii_letters + string.digits)
 string_length= 10**1
 min_number= 0
 max_number= 10**3
 
 # Create Columns
 date_col= pd.date_range(start= start_date, periods= df_length, freq= 'H')
 str_col= [''.join(np.random.choice(all_string, string_length)) for i in range(df_length)]
 float_col= np.random.rand(df_length)
 int_col= np.random.randint(min_number,max_number, size = df_length)
 
 # Create DataFrame
 df= pd.DataFrame({'date_col' : date_col,
                  'str_col' : str_col,
                  'float_col' : float_col,
                  'int_col' : int_col})
 df.info()
 df.head()

以不同的格式存储

推荐阅读:详解 16 个 Pandas 读与写函数

接下来创建测试函数,以不同的格式进行读写。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import time
 import os
 
 def check_read_write_size(df, file_name, compression= None) :
    format= file_name.split('.')[-1]
    # Write
    begin= time.time()
    if file_name.endswith('.csv') : df.to_csv(file_name, index= False, compression= compression)
    elif file_name.endswith('.parquet') : df.to_parquet(file_name, compression= compression)
    elif file_name.endswith('.pickle') : df.to_pickle(file_name, compression= compression)
    elif file_name.endswith('.orc') : df.to_orc(file_name)
    elif file_name.endswith('.feather') : df.to_feather(file_name)
    elif file_name.endswith('.h5') : df.to_hdf(file_name, key= 'df')
    write_time= time.time() - begin
    # Read
    begin= time.time()
    if file_name.endswith('.csv') : pd.read_csv(file_name, compression= compression)
    elif file_name.endswith('.parquet') : pd.read_parquet(file_name)
    elif file_name.endswith('.pickle') : pd.read_pickle(file_name, compression= compression)
    elif file_name.endswith('.orc') : pd.read_orc(file_name)
    elif file_name.endswith('.h5') : pd.read_hdf(file_name)
    read_time= time.time() - begin
    # File Size
    file_size_mb = os.path.getsize(file_name) / (1024 * 1024)
    return [format, compression, read_time, write_time, file_size_mb]

然后运行该函数并将结果存储在另一个Pandas Dataframe中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 test_case= [
            ['df.csv','infer'],
            ['df.csv','gzip'],
            ['df.pickle','infer'],
            ['df.pickle','gzip'],
            ['df.parquet','snappy'],
            ['df.parquet','gzip'],
            ['df.orc','default'],
            ['df.feather','default'],
            ['df.h5','default'],
            ]
 
 result= []
 for i in test_case :
    result.append(check_read_write_size(df, i[0], compression= i[1]))
 
 result_df= pd.DataFrame(result, columns= ['format','compression','read_time','write_time','file_size'])
 result_df

测试结果

下面的图表和表格是测试的结果。

我们对测试的结果做一个简单的分析

CSV

  • 未压缩文件的大小最大
  • 压缩后的尺寸很小,但不是最小的
  • CSV的读取速度和写入速度是最慢的

Pickle

  • 表现得很平均
  • 但压缩写入速度是最慢的

Feather

最快的读写速度,文件的大小也是中等,非常的平均

ORC

  • 所有格式中最小的
  • 读写速度非常快,几乎是最快的

Parquet

总的来说,快速并且非常小,但是并不是最快也不是最小的。

总结

从结果来看,我们应该使用ORC或Feather,而不再使用CSV ?是吗?

“这取决于你的系统。”

如果你正在做一些单独的项目,那么使用最快或最小的格式肯定是有意义的。

但大多数时候,我们必须与他人合作。所以,除了速度和大小,还有更多的因素。

未压缩的CSV可能很慢,而且最大,但是当需要将数据发送到另一个系统时,它非常容易。

ORC作为传统的大数据处理格式(来自Hive)对于速度的和大小的优化是做的最好的,Parquet比ORC更大、更慢,但是它却是在速度和大小中取得了最佳的平衡,并且支持他的生态也多,所以在需要处理大文件的时候可以优先选择Parquet。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-27 17:30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据STUDIO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Pandas DataFrame 数据存储格式比较
Pandas 支持多种存储格式,在本文中将对不同类型存储格式下的Pandas Dataframe的读取速度、写入速度和大小的进行测试对比。
deephub
2023/09/14
5190
Pandas DataFrame 数据存储格式比较
Pandas 如何创建 DataFrame
我们已经知道了什么是 Series,在使用 Series 之前,我们得知道如何创建 Series。
用户7886150
2020/12/26
1.7K0
Python小技巧:保存 Pandas 的 datetime 格式
Pandas 中的 datetime 格式保存并保留格式,主要取决于你使用的文件格式和读取方式。以下是一些常见方法:
renhai
2024/06/01
3100
【python】pyarrow.parquet+pandas:读取及使用parquet文件
pyarrow.parquet模块,可以读取和写入Parquet文件,以及进行一系列与Parquet格式相关的操作。例如,可以使用该模块读取Parquet文件中的数据,并转换为pandas DataFrame来进行进一步的分析和处理。同时,也可以使用这个模块将DataFrame的数据保存为Parquet格式。
Qomolangma
2024/07/30
6870
【python】pyarrow.parquet+pandas:读取及使用parquet文件
Pandas 2.2 中文官方教程和指南(十·二)
将多级索引的 DataFrames 存储为表与存储/选择同质索引的 DataFrames 非常相似。
ApacheCN_飞龙
2024/05/24
5560
6个pandas新手容易犯的错误
我们在这里讨论6个新手容易犯的错误,这些错误与你所使用工具的API或语法无关,而是与你的知识和经验水平直接相关。在实际中如果出现了这些问题可能不会有任何的错误提示,但是在应用中却会给我们带来很大的麻烦。
deephub
2021/11/08
1.7K0
6个pandas新手容易犯的错误
polars 和 pandas 数据处理效率对比
Polars是一个高性能的数据处理库,它旨在提供快速的数据处理能力,特别是在处理大型数据集时。Polars是由Rust语言编写的,这使得它在性能和内存安全性方面具有显著优势。
Michael阿明
2024/05/24
4760
Pandas的Apply函数——Pandas中最好用的函数
Pandas是Python语言中非常好用的一种数据结构包,包含了许多有用的数据操作方法。而且很多算法相关的库函数的输入数据结构都要求是pandas数据,或者有该数据的接口。
全栈程序员站长
2022/06/25
1.1K0
Pandas的Apply函数——Pandas中最好用的函数
【原创干货】6000字、22个案例详解Pandas数据分析/预处理时的实用技巧,超简单
上两篇原创的文章,小编主要是讲了数据可视化方面的内容,但是好像看得人不是很多的样子(搞得小编心里拔凉拔凉的....)
用户6888863
2022/04/13
1.6K0
【原创干货】6000字、22个案例详解Pandas数据分析/预处理时的实用技巧,超简单
数据分析利器 pandas 系列教程(六):合并上百万个 csv 文件,如何提速上百倍
过完基础知识以后就是实战 tricks 的集锦,这些都是笔者在实际工作中用到的解决方案,求小而精,抛砖引玉。
月小水长
2023/11/03
6070
数据分析利器 pandas 系列教程(六):合并上百万个 csv 文件,如何提速上百倍
【Python】大数据存储技巧,快出csv文件10000倍!
但无论这些工具包处理数据的时间多快,在碰到例如10G以上的数据时,都还是会耗费一些时间的,快的可能几十秒,慢的可能几十分钟,然后再进行一些特征抽取等等,快的话也得几十分钟,而此时,为了节省时间消耗,我们就需要将这些中间结果线存储到磁盘上面,而不同格式的存储,带来的差别是巨大的,比如:
黄博的机器学习圈子
2021/07/07
3.1K0
【Python】大数据存储技巧,快出csv文件10000倍!
20个经典函数细说Pandas中的数据读取与存储
大家好,今天小编来为大家介绍几个Pandas读取数据以及保存数据的方法,毕竟我们很多时候需要读取各种形式的数据,以及将我们需要将所做的统计分析保存成特定的格式。
用户6888863
2021/12/10
3.2K0
20个经典函数细说Pandas中的数据读取与存储
加载大型CSV文件到Pandas DataFrame的技巧和诀窍
现实世界中的大多数数据集通常都非常庞大,以千兆字节为单位,并包含数百万行。在本文中,我将讨论处理大型CSV数据集时可以采用的一些技巧。
磐创AI
2024/04/03
5660
加载大型CSV文件到Pandas DataFrame的技巧和诀窍
更高效的利用Jupyter+pandas进行数据分析,6种常用数据格式效率对比!
在使用Python进行数据分析时,Jupyter Notebook是一个非常强力的工具,在数据集不是很大的情况下,我们可以使用pandas轻松对txt或csv等纯文本格式数据进行读写。
bugsuse
2020/11/06
2.5K0
更高效的利用Jupyter+pandas进行数据分析,6种常用数据格式效率对比!
《Pandas 1.x Cookbook · 第二版》第03章 创建和持久化DataFrame
当调用DataFrame构造器时,Pandas会创建一个RangeIndex对象:
SeanCheney
2021/03/02
1.4K0
《Pandas 1.x Cookbook · 第二版》第03章 创建和持久化DataFrame
Pandas 2.2 中文官方教程和指南(一)
安装 pandas 的最简单方法是作为Anaconda发行版的一部分安装,这是一个用于数据分析和科学计算的跨平台发行版。Conda包管理器是大多数用户推荐的安装方法。
ApacheCN_飞龙
2024/04/26
1.3K0
Pandas 2.2 中文官方教程和指南(一)
Pandas处理大数据的性能优化技巧
Pandas是Python中最著名的数据分析工具。在处理数据集时,每个人都会使用到它。但是随着数据大小的增加,执行某些操作的某些方法会比其他方法花费更长的时间。所以了解和使用更快的方法非常重要,特别是在大型数据集中,本文将介绍一些使用Pandas处理大数据时的技巧,希望对你有所帮助
deephub
2023/02/01
7990
pandas.DataFrame.to_csv函数入门
在数据处理和分析的过程中,经常需要将数据保存到文件中,以便后续使用或与他人分享。pandas库是Python中最常用的数据处理和分析库之一,提供了丰富的功能和方法来处理和操作数据。其中,to_csv函数是pandas库中非常常用的一个函数,用于将DataFrame对象中的数据保存为CSV(逗号分隔值)文件。本文将介绍pandas.DataFrame.to_csv函数的基本使用方法,帮助读者快速上手。
大盘鸡拌面
2023/11/01
1.3K0
Pandas高级数据处理:数据报告生成实战指南
常见报错:KeyError: "None of [Index(['错误列名']...)] are in the [columns]"
Jimaks
2025/02/13
830
使用Python实现高性能数据存储
在数据驱动的时代,处理和存储海量数据已成为关键需求。高性能数据存储不仅能够确保数据的快速读写,还能提升系统的整体性能。Python作为一种灵活且功能强大的编程语言,提供了多种高效的数据存储解决方案。本文将详细介绍如何使用Python实现高性能数据存储,并通过具体代码示例展示其实现过程。
Echo_Wish
2024/12/13
1640
推荐阅读
相关推荐
Pandas DataFrame 数据存储格式比较
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验