购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 表格属性获取与修改

想要用好DataFrame表格,首先需要了解它的一些属性,例如表格的行列数、表格的行列索引、列的数据类型和表格的元素个数等。这些属性不但可以提取使用,有的属性还可以再次修改。

4.1.1 表格属性的获取

为了让读者对DataFrame表格相关属性获取有更直观的对比学习,首先将Excel文件导入Pandas中生成DataFrame表格,示例代码如下:

Excel文件如图4-1所示,运行结果如图4-2所示。

图4-1 导入前的Excel文件

图4-2 导入后生成的DataFrame表格

1.表格行数、列数和元素个数获取

获取DataFrame表格的行数和列数使用df.shape属性,获取元素个数使用df.size属性,示例代码如下:

运行结果如下:

df.shape属性获取df表的行数和列数是存储在元组中的,所以只获取行数可用df.shape[0]表示,只获取列数用df.shape[1]表示。

2.表格行索引和列索引的获取

DataFrame表格的行索引获取用df.index属性,列索引获取用df.columns属性,如果需要同时获取,则用df.axes属性,示例代码如下:

运行结果如下:

df.axes属性获取df表的行索引和列索引是存储在列表中的,所以只获取行索引可用df.axes[0]表示,只获取列索引可用df.axes[1]表示。

3.表格列数据类型的获取

DataFrame表格的每列都具有一种数据类型,使用df.dtypes属性可以获取各列的数据类型,示例代码如下:

运行结果如下:

4.表格数据的获取

1)以数组方式获取表格数据

使用DataFrame表格的df.values属性可以以数组的方式获取数据,示例代码如下:

运行结果如下:

2)以生成器方式获取表格数据

DataFrame表格数据可以按行或列获取,按行获取数据使用df.iterrows()函数,按列获取数据使用df.iteritems()函数,但这两个函数获取数据后会产生一个生成器,示例代码如下:

运行结果如下:

返回的结果是生成器对象(generator object),生成器按需输出,也就是说在需要数据时才临时生成。就像工厂按订单生产产品,而不是先把所有原材料生产成产品,再按订单发货。如果DataFrame表格的数据特别大,直接以数组、列表等方式获取到内存中,则内存开销就比较大,我们知道内存空间是非常宝贵的。

3)循环输出表格数据

使用df.iteritems()函数可按列获取数据,返回的是生成器对象,接下来用循环语句将获取的数据打印出来,示例代码如下:

运行结果如下:

使用df.iterrows()函数按行获取数据,返回的是生成器对象,接下来用循环语句将获取的数据打印出来,示例代码如下:

运行结果如下:

注意: 除了通过循环方式获取df.iteritems()和df.iterrows()中的数据外,还可以用列表函数list()将df.iteritems()和df.iterrows()中的数据转换为列表,如list(df.iteritems())和list(df.iterrows()),但如果数据太大不建议这么做。

4.1.2 表格属性修改

本节讲解DataFrame表格的行索引、列索引和数据类型这3种属性的修改,这些属性可以在创建DataFrame表格时修改,也可以对已经存在的DataFrame表格进行修改。

1.创建表格时修改行索引和列索引

1)新建表格时修改属性

在使用pd.DataFrame()函数创建表格时,对index参数设置行索引,对columns参数设置列索引,对dtype参数设置数据类型,示例代码如下:

运行结果如图4-3所示。

图4-3 创建DataFrame表格(1)

pd.DataFrame()函数中的dtype参数只能对整个表格设置,如果需要对指定列设置类型,则data参数只能是数组,并且在生成数组时设置,示例代码如下:

运行结果如图4-4所示。

图4-4 创建DataFrame表格(2)

2)导入外部数据时修改属性

如图4-5(a)所示为原表格,在业绩表的第1行设置了表头,这是不规则的。在使用pd.read_excel()函数读取时,并不会自动将第2行设置为表格的列索引,示例代码如下:

运行结果如图4-5(b)所示。

图4-5 读取不规则工作表数据生成的表格

通过观察返回的df表发现,pd.read_excel()函数自动将工作表的第1行设置为表格的列索引,而行索引则默认为序列值。

如图4-6(a)所示为原表格,如果希望将工作表中的第2行作为表格的列索引,则需要将pd.read_excel()函数header参数设置为1;如果要将第1列作为表格的行索引,则需要将index_col参数设置为0;如果要将表格的部门列设置为字符串类型,销售额列设置为小数类型,则需要将dtype参数设置为{'姓名':'str','销售额':'float'}。示例代码如下:

运行结果如图4-6(b)所示。

图4-6 设置属性后生成的表格

2.已经存在表格的修改

在Pandas中,除了可以在新建DataFrame表格时,或者导入数据生成DataFrame表格时对行索引和列索引、数据类型等这些属性进行修改,同样也可以在生成DataFrame表格后,再次修改这些属性。

1)重新设置行索引和列索引

对DataFrame的行索引修改使用df.index属性,对列索引修改使用df.columns属性,示例代码如下:

修改前后的对比如图4-7所示。

图4-7 行索引和列索引修改前后对比

2)重新设置列数据类型

设置DataFrame表格的列数据类型使用astype()函数,在此函数的参数中写入要转换的数据类型,并且可以对单列或者多列设置数据类型,示例代码如下:

修改前后的对比如图4-8所示。

图4-8 列数据类型修改前后对比(1)

细心的读者可能会发现上面的设置方法只能对单列设置数据类型,即使可以选择多列,也只能设置为同一种数据类型。如果要对不同列设置不同数据类型,则可以在astype()函数的参数中用字典的方式,表示为{'列标题':'数据类型'},示例代码如下:

修改前后的对比如图4-9所示。

图4-9 列数据类型修改前后对比(2) oHtCIn/8NDoSqy3X2Xderwg5Z97pLULyOrPd7/boXHZsg6WFg6mnFfWzIVTtXujX

点击中间区域
呼出菜单
上一章
目录
下一章
×