生成器
生成器是一种使用普通函数语法定义的迭代器
。有一个特点是包含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