python生成器和HDF5 、pandas中的dropna()、fillna()函数

本文介绍了Python中的生成器,包括其工作原理和使用方式。接着探讨了HDF5文件格式在科学数据存储中的应用,并推荐了PyTables和h5py库。此外,还详细解析了pandas库中处理缺失值的方法,如dropna(thresh=n)和fillna()函数的不同用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成器

生成器是一种使用普通函数语法定义的迭代器。有一个特点是包含yeild都是生成器。生成器不是使用return返回一个值,而是可以生成多个值,每次一个。每次使用yield生成一个值后,函数都将冻结,即在此停止执行,等待被重新唤醒。被重新唤醒后,函数将从停止的地方开始继续执行
生成器是包含关键字yield的函数,但被调用时不会执行函数体内的代码,而是返回一个迭代器。每次请求值时,都将执行生成器的代码,直到遇到yield或return。yield意味着应生成一个值,而return意味着生成器应停止执行(即不再生成值;仅当在生成器调用return时,才能不提供任何参数)
生成器由两个单独的部分组成:生成器的函数和生成器的迭代器。生成器的函数是由def语句定义的,其中包含yield。生成器的迭代器是这个函数返回的结果。用不太准确的话说,这两个实体通常被视为一个,通称为生成器。

HDF5

HDF5是一种存储大规模科学数组数据的非常好的文件格式。它可以被作为C标准库,带有许多语言的接口,如Java、Python和MATLAB等。HDF5中的HDF指的是层次型数据格式(hierarchical data format)。每个HDF5文件都含有一个文件系统式的节点结构,它使你能够存储多个数据集并支持元数据。与其他简单格式相比,HDF5支持多种压缩器的即时压缩,还能更高效地存储重复模式数据。对于那些非常大的无法直接放入内存的数据集,HDF5就是不错的选择,因为它可以高效地分块读写。

虽然可以用PyTables或h5py库直接访问HDF5文件,pandas提供了更为高级的接口,可以简化存储Series和DataFrame对象。

如果需要本地处理海量数据,我建议你好好研究一下PyTables和h5py,看看它们能满足你的哪些需求。。由于许多数据分析问题都是IO密集型(而不是CPU密集型),利用HDF5这样的工具能显著提升应用程序的效率。

HDF5不是数据库。它最适合用作“一次写多次读”的数据集。虽然数据可以在任何时候被添加到文件中,但如果同时发生多个写操作,文件就可能会被破坏。

dropna(thresh=n) 的用法

thresh=n,保留至少有 n 个非 NA 数的行
在这里插入图片描述
在这里插入图片描述

fillna()函数

method:

  • pad/ffill:用前一个非缺失值去填充该缺失值,用左边的非缺失值去填充该缺失值
  • backfill/bfill:用下一个非缺失值填充该缺失值,用右边的非缺失值去填充该缺失值
  • None:指定一个值去替换缺失值(默认这种方式)

limit参数:限制填充个数

axis参数:修改填充方向,默认为纵向填充,axis=1的时候,横向填充

import numpy as np
df = pd.DataFrame(  [[np.nan,2,np.nan,np.nan],
                     [3,4,88,np.nan],
                     [np.nan,np.nan,np.nan,'k'],
                     [np.nan,3,np.nan,np.nan]],
                     columns=list('ABCD'))
print(df)
print(df.fillna(method='pad', limit=1))  # limit限制了只填充一个

在这里插入图片描述
在这里插入图片描述
参考文献:
Python基础教程(第3版)
利用Python进行数据分析·第2版
https://www.cnblogs.com/xxswkl/p/10831225.html
https://www.cnblogs.com/rougan/p/10093448.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值