如何使用机器学习数据分析库pandas完成文件数据预处理操作

(此处已添加圈子卡片,请到今日头条客户端查看)

titanic_train.cvs中的数据为

如何使用机器学习数据分析库pandas完成文件数据预处理操作

其中passengerld为每一个人的id

Survived为标签值只有0和1

pclass为船舱的等级

SibSp为当前人兄弟姐妹的数量

Parch为老人和孩子的数量

Tickle为船票的编码

Fare为船票的价格是多少

Cabin为船舱的编号

Embarked为当前人在什么地点登船的


如何使用机器学习数据分析库pandas完成文件数据预处理操作

下面程序为挑选出Age列中缺失的数据(为空的数据):

如何使用机器学习数据分析库pandas完成文件数据预处理操作

如何使用机器学习数据分析库pandas完成文件数据预处理操作

如何使用机器学习数据分析库pandas完成文件数据预处理操作

如何使用机器学习数据分析库pandas完成文件数据预处理操作

titanic_train["Age"]为获取列名为Age的所有数据

age_is_null=pandas.isnull(age)判断这些数据中哪个为空,为空为ture,非空为fasle

age_null_true=titanic_train[age_is_null]将这些age对应的true或false作为索引进行传递,得到所有为空的

print(age_null_true["Age"])输出所有为空的age

print(len(age_null_true))输出为空的个数

在实际操作中需要把为空的给剔除掉,原因是:

如何使用机器学习数据分析库pandas完成文件数据预处理操作

可以看出这个程序因为没有将为空的给剔除掉,导致了结果为nan

如何使用机器学习数据分析库pandas完成文件数据预处理操作

这个程序就是去除所有age为空的那些人,去除他们之后求和sum,然后求出不为空的数量,进而求出平均值

程序详解:

pandas.isnull(age)的意思判断age列中是否为空,为空就是true,不为空就是false

titanic_train[age_is_null==False]["Age"]的意思是获取age不是空的age列

sum=sum(age_null_false)

len=len(age_null_false)

求和,求长度

上面的操作有一个方法已经封装好了:

如何使用机器学习数据分析库pandas完成文件数据预处理操作

问题:求出做在1,2,3等舱的船票的平均值?

遍历1到3,然后分别获取所有pclass=1,2,3的人的船票的价格,然后使用mean方法求出平均值

如何使用机器学习数据分析库pandas完成文件数据预处理操作

titantic_train["Pclass"]为获取Pclass列

以遍历到1来举例:titantic_train["Pclass"]==1为Pclass=1的为true,Pclass不等于0的为false,以这个为索引选出所有Pclass为1的行

plass_fare=plass_row["Fare"]为获取Pclass=1的Fare

plass_fare.mean()为求出Fare的平均值

使用这种方式虽然求出来了以pclass分组的平均值,但是太过于麻烦,可以使用下面的方式来求

如何使用机器学习数据分析库pandas完成文件数据预处理操作

这样一句代码就完成了,解释:

这个代码的意思是以Pclass为分组,求各组中Fare的平均值(np.mean),这样就求出了所有以Pclass为分组的Fare的平均值

aggfunc=np.mean不写这句代码也可以,因为默认就是求平均值,不写就是求每组的平均值

还可以一下子统计多列,以列表的形式

如何使用机器学习数据分析库pandas完成文件数据预处理操作

该程序可以看出来,一下子统计了Fare,Age两列的总值


有些数据是缺失的,可以把它给剔除掉,上面的mean会自动剔除掉缺失的,但是现在我们想要剔除掉缺失的,获取剩下的数据可以使用dropna方法来完成

如何使用机器学习数据分析库pandas完成文件数据预处理操作

从该程序可知,5的age为空被剔除掉了还有其它的为空的被去掉了,我们获取到了所有age不为空的数据

程序详解:

tutanic_train.dropna(axis=0,subset["Age"])这个代码的意思是从列的角度(axis=0)看Age列只要有空就去除那一行

tutanic_train.dropna(axis=0,subset["Age"])【“Age”】的意思是指获取已去除空值的数据Age列

注意:subset接收的值只能是列表

如何使用机器学习数据分析库pandas完成文件数据预处理操作

subset=["Age","Cabin"]表示只要age列和cabin列中有一列为空,那么那行就会被去除

如何使用机器学习数据分析库pandas完成文件数据预处理操作

axis=1就表示从行的角度来看,所以就不用使用subset来指定列了,从行的角度只要行的数据为空那么整个列都要去掉,所以如下图所示,age列和Cabin肯定会去掉,因为只要由一个空,那么整列就会被去掉

如何使用机器学习数据分析库pandas完成文件数据预处理操作

如何使用机器学习数据分析库pandas完成文件数据预处理操作

如何使用机器学习数据分析库pandas完成文件数据预处理操作

如何使用机器学习数据分析库pandas完成文件数据预处理操作

一个表格中的数据,可以通过行和列(列名)定位唯一的数据,上面程序是【83,”age“】就表示行是第84行,列为age列,所以唯一定位到了28.

这个列不用多说肯定是列名,行是从除列名的下一行开始算,那是第一行,索引为0

如何使用机器学习数据分析库pandas完成文件数据预处理操作

83就表示索引为83,所以就应该是84行,加上首行列名那么就是85行

如何使用机器学习数据分析库pandas完成文件数据预处理操作

这个程序是按age进行排序,按降序排列

如何使用机器学习数据分析库pandas完成文件数据预处理操作

但是排序之后的结果是我们原来的索引,而不是从0开始从新排序,这样不利于看,如何使索引从新编写?

使用reset_index(drop=True)表示重置索引,以前的索引删掉

如何使用机器学习数据分析库pandas完成文件数据预处理操作

可以看出索引从0开始排好序了

pandas自定义函数

pandas提供了很多函数,但是可能有的函数pandas并没有封装,实现一个功能需要多个函数,那么就可以把这些函数封成一个自定义函数

如何使用机器学习数据分析库pandas完成文件数据预处理操作

可以看出hundrend_row(c)就是封装的函数,功能显示第100行数据,该方法有一个参数c,可以任意名称,他表示整个数据。类似titanic_train,但是它和titanic_train还有一些不同,它是一列一列的数据

如何使用机器学习数据分析库pandas完成文件数据预处理操作

该函数是计算数据中每列为空的数量,因为c是一列一列的数据,所以可以计算出每列的数量

相关推荐