处理的是.csv文件,首先要做的是读取.csv文件中的表格数据,使用的是pandas中的read_csv函数。
那么问题来了,这样读取文件返回值是什么呢?
我们来输出一下:
![](https://i-blog.csdnimg.cn/blog_migrate/e91cec6390a4f6f976f60da90524ffb6.png)
发现是DataFrame类型的数据,那么这个数据类型到底是什么呢?
经过查找资料,菜鸟教程上是这么解释的:DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。
Pandas 数据结构 – DataFrame | 菜鸟教程 (runoob.com)
那么问题来了,我也不是很记得Series和字典这两种数据结构,继续学习。
数据结构 - Series:
Pandas 数据结构 – Series | 菜鸟教程 (runoob.com)
数据结构 - 字典:花括号
Python 字典(Dictionary) | 菜鸟教程 (runoob.com)
接下来要将表格根据标签将数据分开,因为有的标签数据太少了,需要扩充标签数据。
由于数据集的标签数据在最后一列,所以用numpy中的shape[1]来读取列数,shape[0]读取的是行数,对于二维数据来说。shape[1]-1就是列索引号,因为索引号从0开始。
需要将标签提取成一个无序不重复元素集,先使用iloc函数将标签列全部提取出,values去掉索引,ravel将多维数组转化为一维数组,然后使用set函数创建一个无序不重复元素集。
![](https://i-blog.csdnimg.cn/blog_migrate/d6c2320cc333fda52b252c4f5644b99e.png)
把数据按标签分开就是:
标签数据组的索引为索引,在新的数组中把该标签的数据全部添加进去,然后把新的数据按照标签号以DataFrame数据类型重新保存成.csv文件。
![](https://i-blog.csdnimg.cn/blog_migrate/000a79130dfac35f60ec01a8c934f5cd.png)
![](https://i-blog.csdnimg.cn/blog_migrate/9fe32d22963befcde069eb3211211527.png)