python数据分析之pandas二

在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做一些补充。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181124A0XL3Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券