利用Pandas函数数据预处理

通常我们拿到数据时往往不能直接拿来分析,而是先要对数据进行预处理。

1.缺失值处理
(1)缺失值删除
缺失值分为两种,一种是一行中某个或多个字段缺失;另一种是一行完全缺失值。我们可以在Python中利用dropna()方法,dropna()的默认删除方式是how=any,即默认删除含有缺失值的行,哪怕这一行只有一个字段有缺失值。

df.dropna()

如果只是想删除空白行,只要给dropna()传入参数how=all即可,这样只删除全为空值的行,不全为空值的行不会被删除。

df.dropna(how="all")

(2)缺失值填充
在实际业务场景中处理缺失值,我们更多的是选择填充,而非删除。填充有用指定值填充、平均值填充等,还有向前填充(也就是用缺失值的前一个非缺失值填充,类似于Excel中ctrl+enter快速填充)、向后填充等方式。

df.fillna(0)   #使用数字0填充
df['item_price'].fillna(df['item_price'].mean())   #使用item_price均值对NA进行填充
df.fillna({"item_price":0})  #对item_price列用0值填充

2.重复值处理
Python中可以利用drop_duplicates()方法进行重复值处理,默认保留第一个,也可以设置保留最后一个,或者全部不保留。这里要通过参数keep进行设置,参数keep默认值是first,即保留第一个值;也可以是last,保留最后一个值;或者是False,代表把重复值全部删除。

我们还可以利用参数subset进行单列或多列去重,例如我们对order_id,item_price去重并把重复值全部删除。

df.drop_duplicates(subset=["order_id","item_price"],keep=False)

3.异常值的修改及替换
Python中使用replace函数实现数据替换。

df['item_name'].replace('wh','wuhan')

4.数据类型转换
在Python中,不仅可以用info()获取所有列的数据类型,还可以用dtype方法来获取某一列的数据类型。

df['order_id'].dtype      #返回dtype('int64')

我们也可以利用astype()方法对数据类型进行转换,astype后面的括号里注明要转换的类型即可。

df['order_id'].astype("float64")   #将int64转换为float64

5.清理字符串中的空格
在数据预处理中,字符串空格的清理也是常用的功能。

df['order_id']=df['order_id'].map(str.strip)

6.大小写转换

df['item_name']=df['item_name'].str.lower()

7.索引设置
Pandas中不管是Series还是DataFrame数据结构,都是通过索引来操作数据的,操作索引即操作数据。
(1)为无索引表添加索引
在Python中如果表没有索引,会默认用从0开始的整数做索引。我们也可以给表的index参数传入行索引值或者给columns传入列索引值。

df.index=['1','2','3','4','5']
df.columns=['order_id','quantity','item_name','item_price']

(2)重新设置索引
在Python中可以利用set_index()方法重新设置索引列,在set_index()中指明要用作行索引的列的名称即可。
在重新设置索引时,还可以给set_index()方法传入两个或多个列名,我们把这种一个表中用多列来做索引的方法称为层次化索引,层次化索引一般用在某一列中含有多个重复值的情况下。
(3)重命名索引
重命名索引就是修改索引对应的值,比如:

df.rename(columns={"order_id":"new_order_id"},index={1:"一"})

(4)重置索引
重置索引常用于数据分析、数据透视表中。在Python中利用的是reset_index()方法。

reset_index(level=None,drop=False,inplace=False)
  • level参数用来指定要将层次化索引的第几级别转化为columns,默认情况下是把索引全部转化为columns。
  • drop参数用来指定是否将原索引删除,默认为False,即不删除原索引。
  • inplace参数用来指定是否修改原数据表。
  • 8.数据表合并
    可以使用merge函数对两个数据表进行合并,合并的方式为inner,将两个数据表中共有的数据匹配到一起生成新的数据表,默认合并方式为inner方式,除此以外还有left,right和outer方式。
    详见:利用Pandas的merge函数合并数据