前面内容,我们讲解了使用openpyxl处理Excel的基本方法,细心的小伙伴肯定发现了,我们利用openpyxl从Excel中获取数据时,多数情况下使用了for循环。

从前面的分析我们知道,对于海量数据,多次使用for循环会带来不必要的内存浪费。

假设我们想要从一个Excel表格中某一列选择符合要求的数值(比如在某一区间范围内的数值),然后将这些数据写入到另一个Excel文件中,该如何解决呢?

如果使用第三方库openpyxl或者xlrd、xlwt,前面已经介绍了很多内容,感兴趣的小伙伴了解下。今天,我们来掌握另一个更加简单的方法,使用pandas库来处理Excel文件。

对于pandas库的讲解,今天不浪费过多篇幅,你只需知道它是一个功能强大的数据分析处理库即可。对于pandas库的讲解,网上有很多内容,今天这里就不赘述了。

就读取各类文件,pandas为我们提供了将近20个函数接口供调用。感兴趣的小伙伴挨个试试看。

我们先来创建一个演示用的Excel文件,命名为‘test.xlsx’,里面一张表格score,记录了学生的语文数学成绩。如下:

为了对这个函数加深理解,我们把完成参数列表整理了一下,感兴趣的小伙伴深入研究。

io:excel 路径sheetname:默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。注意:int/string返回的是dataframe,而none和list返回的是dict of dataframeheader:指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = Noneskiprows:省略指定行数的数据index_col:指定列为索引列,也可以使用 u’string’names:指定列的名字,传入一个list数据date_parser:函数,用于将字符串列序列转换为日期时间实例na_values:na\nan字符串的处理方式thousands:用于将字符串列解析为数字的千位分隔符。注意,此参数仅适用于Excel中存储为文本的列。无论显示的如何,任何数值列都将自动解析convert_float:将整数浮点转换为整数(即1.0–1)。如果为False,则为所有数字数据将作为浮点数读入,Excel将所有数字存储为浮点数内部converters:用于转换某些列中的值的函数。键可以是整数或列标签,值是接受一个输入参数、Excel单元格内容并返回转换内容的函数dtype:默认不指定,比如:{a:np.float64,b:32}使用object保存Excel中存储的数据,而不解释数据类型。如果指定了转换器,则将应用它们而不是数据类型转换true_values:值视为真,传递列表,默认为Nonefalse_values:值视为假,传递列表,默认为Noneengine:如果io不是缓冲区或路径,则必须将其设置为标识io。可选的参数有:“xlrd”、“openpyxl”、“odf”、“pyxlsb”。兼容性描述:“xlrd”支持旧式Excel文件(.xls)、“openpyxl”支持更新的Excel文件格式、“odf”支持OpenDocument文件格式(.odf、.ods、.odt)、“pyxlsb”支持二进制Excel文件squeeze:如果解析的数据只包含一列,则返回一个序列。默认只包含一列时,不返回一个序列2.读取行数和列数及行列索引

可以看出,列表索引是一个ndarray数组对象,注意,这里的索引是从0开始的。

还可以使用DataFrame的iloc方法,不同的是iloc方法传入索引值(整数),loc方法传入标签值,记住这一点就可以了。上面同样可以用iloc实现

假设我们在test.xlsx中有另一张表格,它记录了学生的英文成绩。那么,我们今天的例子是将两张表格合并,并保存在bobTest.xlsx中。

好了,今天的内容就到这里了,喜欢Python编程的小伙伴点个赞,后续推出更加精彩的内容。

发表回复

您的电子邮箱地址不会被公开。