如何示例 Excel 数据
我们以Python Pandas数据加载类型表格为例,演示Python Pandas Excel操作。
![83404709975499cf3758a6f111705ca5.png](https://img-blog.csdnimg.cn/img_convert/83404709975499cf3758a6f111705ca5.png)
本文将使用Pandas中 read_excel 函数来读取 Excel 文件,并存储成DataFrame格式,本文将介绍如何使用 iloc 、loc 方法获取 DataFrame中对应的数据,实现Execl数据的获取。
read_excel的主要参数
- io: excel文档路径。
- sheetname : 读取的excel指定的sheet页,若多个则为列表。
- header :设置读取的excel第一行是否作为列名称。
- skiprows:省略指定行数的数据。
- skip_footer:省略从尾部数的int行数据。
- index_col:设置读取的excel第一列是否作为行名称。
- names:设置每列的名称,数组形式参数。
- usecols:读取指定的列, 也可以通过名字或索引值。
读取Excel文件
根据上述参数介绍,我们通过指定表单名和指定列的方式来读取文件
![945bde9f6a58ba6bb7c3ee4fe8b2f5c7.png](https://img-blog.csdnimg.cn/img_convert/945bde9f6a58ba6bb7c3ee4fe8b2f5c7.png)
如下,我们可以看到读取的Excel数据类型为DataFrame类型:
![9f9ab0b10788bac06282b50abd9e99d0.png](https://img-blog.csdnimg.cn/img_convert/9f9ab0b10788bac06282b50abd9e99d0.png)
使用 iloc 从DataFrame中筛选数据
iloc 语法
data.iloc[, ]
iloc 在Pandas中是用来通过数字来选择数据中具体的某些行和列。可以设想每一行都有一个对应的下标(0,1,2,...),通过 iloc 我们可以利用这些下标去选择对应的行数据。同理,对于行也一样,通过这些下标也可以选择对应的列数据。
需要注意的是0表示第一行,但不包含表头。
选择单行或单列
选择数据中的第一行。
![91e736403cf04cf168763946bd446068.png](https://img-blog.csdnimg.cn/img_convert/91e736403cf04cf168763946bd446068.png)
选择数据中的最后一行。
![1ff90665fc785a4792c197fdb4c70944.png](https://img-blog.csdnimg.cn/img_convert/1ff90665fc785a4792c197fdb4c70944.png)
选择数据中的第一列。
![d5c906282cdee7c3db8c2af154329e36.png](https://img-blog.csdnimg.cn/img_convert/d5c906282cdee7c3db8c2af154329e36.png)
选择数据中的最后一列。
![b516a58c4d5d8c0d4fc9ff04d4f03856.png](https://img-blog.csdnimg.cn/img_convert/b516a58c4d5d8c0d4fc9ff04d4f03856.png)
行列混合选择
选择数据中的第 1-3 行的所有列。
![5025f1bd4a05d31e4503c130f10d438b.png](https://img-blog.csdnimg.cn/img_convert/5025f1bd4a05d31e4503c130f10d438b.png)
选择数据中的前2列的所有行。
![8d9104ab5f8f3019b6d8978331ff9c50.png](https://img-blog.csdnimg.cn/img_convert/8d9104ab5f8f3019b6d8978331ff9c50.png)
选择第 0, 2, 4行 和 第 1,3 列。
![f4380cd8237b16c2164a898a31a863bf.png](https://img-blog.csdnimg.cn/img_convert/f4380cd8237b16c2164a898a31a863bf.png)
选择第0 到 第3行 的 第0 到第2列。
![ba1cbd42334375b2478fd9bf29e957e9.png](https://img-blog.csdnimg.cn/img_convert/ba1cbd42334375b2478fd9bf29e957e9.png)
使用 iloc 仅选择了单独的一行或一列,返回的数据为 Series 类型。若选择了多行数据则会返回 DataFrame 类型,若只选择了一行,但需要要返回 DataFrame 类型,可以传入一个单值列表,如[1],如下:
![6e9f07c970d9a3dc7e5ac7ea001f6dc5.png](https://img-blog.csdnimg.cn/img_convert/6e9f07c970d9a3dc7e5ac7ea001f6dc5.png)
使用 loc 从DataFrame中筛选数据
data.loc[, ]
ioc 用于以下两种场景:
- 使用 下标 查找
- 使用 条件 查找
使用 下标 查找
选择数据中的第一行。
![264c5e3f794accd6647190b0bbb31d09.png](https://img-blog.csdnimg.cn/img_convert/264c5e3f794accd6647190b0bbb31d09.png)
选择数据中的前二行。
![565a6e107091099808c4766c9a9082c7.png](https://img-blog.csdnimg.cn/img_convert/565a6e107091099808c4766c9a9082c7.png)
选择第1到3行的 READER、WRITER列。
![f607cab9d19701c984d136e72d75cbc9.png](https://img-blog.csdnimg.cn/img_convert/f607cab9d19701c984d136e72d75cbc9.png)
选择第1、2行的 DATA DESCRIPTION 到 WRITER列。
![0370dab9609318828ab3c12038370edd.png](https://img-blog.csdnimg.cn/img_convert/0370dab9609318828ab3c12038370edd.png)
需要注意 excel.loc[[1]] 不等价于 excel.iloc[[1]] ,前者是选择索引为1的行,而后者是选择第1行,DataFrame的索引可以是数字或者是字符串。
使用逻辑判断选择数据
选择WRITER列等于to_json的 DATA DESCRIPTION列到 WRITER列。
![49c3ff647694659fd384501f0127fedd.png](https://img-blog.csdnimg.cn/img_convert/49c3ff647694659fd384501f0127fedd.png)
同样,如果只选择了某一列,返回的数据是 Series 类型,若只选择了一行,但需要要返回 DataFrame 类型,可以传入一个单值列表,如[1]。
选择 READER的值中是以 "read" 开头的行的所有列。
![12dc272da8818e01e85548e6e429b8fd.png](https://img-blog.csdnimg.cn/img_convert/12dc272da8818e01e85548e6e429b8fd.png)
选择"WRITER" 等于['to_csv', 'to_json']值的行。
![ecffbf3fbbdf34c9008ac3d4b17fff9f.png](https://img-blog.csdnimg.cn/img_convert/ecffbf3fbbdf34c9008ac3d4b17fff9f.png)
选择READER = 'read_csv' 并且 READER 是以 "read"开头的行。
![60fc159576bb72b07d646b4bae113193.png](https://img-blog.csdnimg.cn/img_convert/60fc159576bb72b07d646b4bae113193.png)
利用apply的lambda函数判断符合条件的行,如下选择READER由“_”链接的行的所有列。
![443980147adf6b5365727472e7439387.png](https://img-blog.csdnimg.cn/img_convert/443980147adf6b5365727472e7439387.png)
利用apply的lambda函数判断符合条件的行的'DATA DESCRIPTION', 'READER' 列。
![b5395ba01ad9d6a6b2c13b2ddeedcaad.png](https://img-blog.csdnimg.cn/img_convert/b5395ba01ad9d6a6b2c13b2ddeedcaad.png)
Pandas中 apply、 applymap、 map 的区别
- map仅是Series中的函数 ,map将函数应用于Series中的每一个元素。
- apply和applymap是仅是DataFrame 中的函数。
- apply 将函数作用于DataFrame中的每一个行或者列。
- applymap将函数作用于DataFrame中的每一个元素。
![b873419261b718a05b5b531a5999d00a.gif](https://img-blog.csdnimg.cn/img_convert/b873419261b718a05b5b531a5999d00a.gif)