用Jupyter+pandas数据分析,6种数据格式效率对比(文末附全套视频版教程)_pandas教程 jupyter 视频

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

为了找到格式来存储数据,本文选择以下指标进行对比。

  • size_mb:带有序列化数据帧的文件的大小
  • save_time:将数据帧保存到磁盘所需的时间
  • load_time:将先前转储的数据帧加载到内存所需的时间
  • save_ram_delta_mb:在数据帧保存过程中最大的内存消耗增长
  • load_ram_delta_mb:数据帧加载过程中最大的内存消耗增长

注意,当我们使用有效压缩的二进制数据格式(例如Parquet)时,最后两个指标变得非常重要。它们可以帮助我们估算加载串行化数据所需的RAM数量,以及数据大小本身。我们将在下一部分中更详细地讨论这个问题。

对比

现在开始对前文介绍的5种数据格式进行比较,为了更好地控制序列化的数据结构和属性我们将使用自己生成的数据集。

下面是生成测试数据的代码,我们随机生成具有数字和分类特征的数据集。数值特征取自标准正态分布。分类特征以基数为C的uuid4随机字符串生成,其中2 <= C <= max_cat_size。

def generate_dataset(n_rows, num_count, cat_count, max_nan=0.1, max_cat_size=100):

    dataset, types = {}, {}
    
    def generate_categories():
        from uuid import uuid4
        category_size = np.random.randint(2, max_cat_size)
        return [str(uuid4()) for _ in range(category_size)]
    
    for col in range(num_count):
        name = f'n{col}'
        values = np.random.normal(0, 1, n_rows)
        nan_cnt = np.random.randint(1, int(max_nan*n_rows))
        index = np.random.choice(n_rows, nan_cnt, replace=False)
        values[index] = np.nan
        dataset[name] = values
        types[name] = 'float32'
        
    for col in range(cat_count):
        name = f'c{col}'
        cats = generate_categories()
        values = np.array(np.random.choice(cats, n_rows, replace=True), dtype=object)
        nan_cnt = np.random.randint(1, int(max_nan*n_rows))
        index = np.random.choice(n_rows, nan_cnt, replace=False)
        values[index] = np.nan
        dataset[name] = values
        types[name] = 'object'
    
    return pd.DataFrame(dataset), types

现在我们以CSV文件保存和加载的性能作为基准。将五个随机生成的具有百万个观测值的数据集转储到CSV中,然后读回内存以获取平均指标。并且针对具有相同行数的20个随机生成的数据集测试了每种二进制格式。

同时使用两种方法进行对比:

  • 1.将生成的分类变量保留为字符串
  • 2.在执行任何I/O之前将其转换为pandas.Categorical数据类型

1.以字符串作为分类特征

下图显示了每种数据格式的平均I/O时间。这里有趣的发现是hdf的加载速度比csv更低,而其他二进制格式的性能明显更好,而feather和parquet则表现的非常好

用Jupyter+pandas数据分析,6种数据格式效率对比

保存数据并从磁盘读取数据时的内存消耗如何?下一张图片向我们展示了hdf的性能再次不那么好。但可以肯定的是,csv不需要太多额外的内存来保存/加载纯文本字符串,而feather和parquet则非常接近

用Jupyter+pandas数据分析,6种数据格式效率对比

最后,让我们看一下文件大小的对比。这次parquet显示出非常好的结果,考虑到这种格式是为有效存储大量数据而开发的,也是理所当然

用Jupyter+pandas数据分析,6种数据格式效率对比

2.对特征进行转换

在上一节中,我们没有尝试有效地存储分类特征,而是使用纯字符串,接下来我们使用专用的pandas.Categorical类型再次进行比较。

用Jupyter+pandas数据分析,6种数据格式效率对比

从上图可以看到,与纯文本csv相比,所有二进制格式都可以显示其真强大功能,效率远超过csv,因此我们将其删除以更清楚地看到各种二进制格式之间的差异。

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jupyter Notebook是一个基于Web的交互式计算环境,可用于创建和共享文档,其中包含实时代码、方程式、可视化和叙述文本。它支持多编程语言,包括Python、R和Julia等。下面是使用Jupyter Notebook进行数据处理的一些步骤: 1.安装Jupyter Notebook 首先,您需要安装Jupyter Notebook。您可以使用pip在终端中运行以下命令来安装它: ```shell pip install jupyter ``` 2.启动Jupyter Notebook 在终端中输入以下命令来启动Jupyter Notebook: ```shell jupyter notebook ``` 这将在默认浏览器中打开Jupyter Notebook。 3.创建一个新的Notebook 在Jupyter Notebook主页中,单击右上角的“New”按钮,然后选择要使用的编程语言。这将创建一个新的Notebook。 4.导入数据 您可以使用Python中的pandas库来导入和处理数据。在Notebook中,您可以使用以下代码来导入数据: ```python import pandas as pd data = pd.read_csv('data.csv') ``` 这将从名为“data.csv”的文件中读取数据,并将其存储在名为“data”的变量中。 5.数据清洗和转换 一旦您导入了数据,您可能需要对其进行清洗和转换。您可以使用pandas库中的各函数来执行此操作。例如,您可以使用以下代码来删除包含缺失值的行: ```python data = data.dropna() ``` 6.数据分析和可视化 一旦您完成了数据清洗和转换,您可以使用pandas和其他Python库来执行数据分析和可视化。例如,您可以使用以下代码来计算数据的平均值: ```python mean = data.mean() ``` 您还可以使用matplotlib库来创建各图表和可视化效果。例如,您可以使用以下代码来创建一个简单的折线图: ```python import matplotlib.pyplot as plt plt.plot(data['x'], data['y']) plt.show() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值