在python数据分析之pandas库基础用法(一)数据读取(read_csv)文章中我们已经学会了用pandas读取csv文件和索引取数的技巧,在这篇文章中我们来学习如何预处理数据及pandas自定义函数。
pandas数据预处理
先来看一下数据特征:
'PassengerId':乘客id
'Survived':生存情况,离散变量,0,1
'Pclass':船舱等级,1,2,3三个
'Name':乘客姓名
'Sex':乘客性别,male,famale
'Age':乘客年龄
'SibSp',兄弟姐妹数量
'Parch',携童及老人数量
'Ticket':船票编号
'Fare':船票价格
'Cabin',:船舱编号
'Embarked':登船码头
1、对数据进行排序df.sort_values()
#读取数据
titanic_survival=pd.read_csv(r"C:Userspythonwandata_minepython_pandas itanic_train.csv")#用sort_values()函数对指定列排序,默认升序排序,inplace=True表示在原来的df上排序titanic_survival.sort_values(("Age"),inplace=True)
2、缺失值判断及统计pandas.isnull()、pandas.isnull().any()
首先从全局看看哪些列有空值,使用pd.isnull.any()这个函数进行判断,
#pd.isnull(titanic_survival).any()这种写法与直接对DF判断效果一样titanic_survival.isnull().any()
从上面的结果中我们知道,age、cabin、embarked这三列有空值,那么进一步查看age列空值个数,进行空值统计。
空值统计方法一:df.isnull().sum():
#当不指定具体列时,统计整个df的缺失值个数titanic_survival['Age'].isnull().sum()
3、缺失值处理
在数据挖掘过程中,缺失值处理是非常重要的一个环节,因为任何业务数据都会存在缺失值,那么一般对缺失值是如何处理的呢?
处理缺失值可以分为两类:删除缺失值和缺失值插补。而缺失值插补又分为以下几种:
均值/中位数/众数插补使用固定值(将缺失值的属性用一个常量代替)最近邻插补(在记录中找到与缺失值样本最接近的样本的该属性插补)回归方法(对带有缺失值的变量,根据已有数据和与其有关的其他变量建立拟合模型来预测缺失值)插值法(利用已知点建立合适的插值函数f(x),未知值由对应点xi求出来近似代替)下面,我们主要讨论删除缺失值,学习一些pandas缺失值删除的操作。
1)df.dropna(),舍弃含有任意缺失值的行
#等价于titanic_survival.dropna(axis=0)axis=0表示删除行,axis=1表示删除列dropall=titanic_survival.dropna()
2)df.dropna()函数删除某个列中含有空值的行
现在这个数据中age、cabin、embarked都有缺失值,如果我们直接使用df.dropna()会删除掉这三列中都有空值的所有行,但是我们希望只删除age列中有空值的数据,那该如何处理呢?
直接使用df.dropna(subset=['column_list'])
drop_age_null=titanic_survival.dropna(subset=["Age"])
pandas自定义函数
之前我们已经计算了某一列中含有空值的数量,如果我要列出该表每一列中究竟有多少个空值呢,就可以使用apply(function)函数,该函数会将自定义的function函数应用在每一列中,并且把运行的结果保存在一个新的Series中,如下:
importpandasaspd#这个函数返回一列中的空值数量#首先用isnull函数判断该列中每个数值是否为空,生成一个只有True或者False的向量(列表)defnull_count(column):#把空值的那些数据提取出来,放在一个向量中column_null=pd.isnull(column)null=column[column_null==True]#返回该向量的长度即可returnlen(null)#对所有的列都运行该函数column_null_count=titanic_survival.apply(null_count)
好了,对于pandas数据空值处理,暂时掌握这些即可,后续还会在此基础上对pandas做一些补充。
领取专属 10元无门槛券
私享最新 技术干货