![Python+Office:轻松实现Python办公自动化](https://wfqqreader-1252317822.image.myqcloud.com/cover/834/40107834/b_40107834.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.3 数据的切片
在解决各种实际问题的过程中,经常会遇到从某个对象中提取部分数据的情况,切片操作可以完成这个任务。本节将会介绍Python如何提取一列或多列数据、一行或多行数据、指定区域的数据等,使用的数据文件为“2020年第二学期学生考试成绩.xls”。
3.3.1 提取一列或多列数据
在介绍数据切片之前,需要创建一个由4名学生学习成绩构成的数据集,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_33.jpg?sign=1739329980-q5PBdRY7kuHB1zrRR6dlCPsnZdbFIl7Q-0-a930a640fa1abf07a40ab1655cca86a0)
运行上述代码,创建的数据集如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_34.jpg?sign=1739329980-7vJRukMT3SbUNZtJsFHrejN8F1493nbq-0-6f35bee39dd670792993aa0b806658f1)
可以提取某一列数据,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_35.jpg?sign=1739329980-gNRPjvI819jDGsobZQF5Dy6EdBJT3Y20-0-a2585a8d14b434cf5c116ae191a7b9cf)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_36.jpg?sign=1739329980-jErRXd7PoMPc3fG4aDz6FMIEk2eFLvB9-0-35997b2098ba54f253f85a65708492c4)
可以提取某几列连续和不连续的数据,如提取两列数据,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_37.jpg?sign=1739329980-NVxzybFDgDWtmUR09PtJrm2pjyihRvRk-0-b615569fd9104c9f25da6fe34796643f)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_38.jpg?sign=1739329980-mvtwbyxqf2nE27RIl3b07B0aC5s9XmRC-0-fef8978612995ed86bd5d3dc2e20a3e4)
3.3.2 提取一行或多行数据
可以使用loc()函数和iloc()函数获取特定行的数据。其中,iloc()函数是通过行号获取数据的,而loc()函数则是通过行标签索引数据的。例如,提取第2行数据,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_39.jpg?sign=1739329980-Hwbdpvj0fp3o5H3VFYJznVaCLFKC1lki-0-754aad2fb75c8bf334d5031fc84df1bb)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_40.jpg?sign=1739329980-2lZ4Fdg07t2fsqiPhD8qU54xr9FT0XME-0-e1bcfd52299d5cf43fd6074742bcaa43)
也可以提取几行数据,需要注意的是,行号也是从0开始的,区间是左闭右开。例如,提取第3行~第5行的数据,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_41.jpg?sign=1739329980-3VBvSl6SO1mvcAbNG0awZQkfH48tYwJx-0-7cec748abbaa4f16a9b93b97c6f70556)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_42.jpg?sign=1739329980-LGovKxOkLaM3uvhtWdAwY5M7bYjCaIA6-0-fab052b57cf19f66dd257c60de380d5b)
如果不指定iloc()函数的行索引的初始值,则默认从0开始,即第1行,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_43.jpg?sign=1739329980-DtLysHbSCaaGqlgx8jLZ9nPnJPbRiEC8-0-a864c8fff988e082f4424776f4801070)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_44.jpg?sign=1739329980-kJl9U4PfBsHrN7py9pN1lTVWmHi3h2VU-0-a93e9f8aedd06b3f78073304456ee456)
3.3.3 提取指定区域的数据
使用iloc()函数还可以提取指定区域的数据。例如,提取第3行~第5行的数据、第2列~第4列的数据,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_45.jpg?sign=1739329980-J8YaEbMp9UHRgvDgjRPpPAgoyW91stxJ-0-f2858ad674183954274a314ad37852ee)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_46.jpg?sign=1739329980-RHrisRBbdwgAtfIYhwTcYpNx55VuTDyU-0-8a461e2550de8224cde86c3b23f153b8)
此外,如果不指定区域中列索引的初始值,那么从第1列开始,代码如下:
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_47.jpg?sign=1739329980-uoJlWRhNYLZxM0heanm4gEKVZ5FrHVBZ-0-3962fd7715ad8136c58e288b5ffc569c)
代码输出结果如下所示。
![img](https://epubservercos.yuewen.com/450204/20862583108963306/epubprivate/OEBPS/Images/txt004_48.jpg?sign=1739329980-uW4REp8xtQ9nbJfjCfDP58Z2O3tHmYWU-0-4f1c6865f38b2b26440e83146263fba3)
同理,如果不指定列索引的结束值,那么提取后面的所有列。