Python学习 | 数据清洗和准备

1 处理缺失数据

在pandas中,采用了R语言中的惯用法,即将缺失值表示为NA,它表示不可用not available;使用浮点值NaN(Not a Number) 表示缺失数据。
1.1滤除缺失数据

Python学习 | 数据清洗和准备_第1张图片

1)dropna方法

Python学习 | 数据清洗和准备_第2张图片

drona方法会丢弃任何含有缺失值的行,如果想丢弃全NA的行或列,传入how='all'参数。

传入thresh参数,来滤出含有n个NaN的行或者列
Python学习 | 数据清洗和准备_第3张图片

2)pandas.notnull、布尔索引
Python学习 | 数据清洗和准备_第4张图片

1.2填充缺失数据
fillna方法
Python学习 | 数据清洗和准备_第5张图片

注:method有两种方式,ffill是后面的缺失值填充前面出现的数值,bfill是前面的缺失值,填充后面出现的数值

Python学习 | 数据清洗和准备_第6张图片

2 数据转换

2.1移除重复数据

 duplicated方法返回一个布尔型Series,判断是否有重复项

drop_duplicates方法删除重复行
以上两个方法默认会判断全部列,可以指定部分列进行重复项判断,默认保留的是第一个出现的值组合,传入keep='last'则
保留最后一个。

Python学习 | 数据清洗和准备_第7张图片

Python学习 | 数据清洗和准备_第8张图片

2.2利用函数或映射进行数据转换
Series的map方法可以接受一个函数或含有映射关系的字典型对象,str.lower方法,将各个值转换为小写
Python学习 | 数据清洗和准备_第9张图片

也可以传入一个能够完成全部这些工作的函数:
Python学习 | 数据清洗和准备_第10张图片

2.3替换值

replace方法

Python学习 | 数据清洗和准备_第11张图片

也可以一次性替换多个值:

传入的参数也可以是字典:

2.4重命名轴索引
先定义一个函数,可以将其赋值给index,这样就可以对DataFrame进行就地修改

Python学习 | 数据清洗和准备_第12张图片

Python学习 | 数据清洗和准备_第13张图片

如果是创建data的副本,而不是修改原始数据,则使用rename

Python学习 | 数据清洗和准备_第14张图片

ename可以结合字典型对象实现对部分轴标签的更新:
Python学习 | 数据清洗和准备_第15张图片

2.5离散化和面元划分
连续数据常常被离散化或拆分为“面元”(bin)
Python学习 | 数据清洗和准备_第16张图片

Python学习 | 数据清洗和准备_第17张图片

2.6检测和过滤异常值
找出某列中绝对值大小超过3的值:

Python学习 | 数据清洗和准备_第18张图片

根据这些条件,就可以对值进行设置。下面的代码可以将值限制在区间-3到3以内:
Python学习 | 数据清洗和准备_第19张图片

注:np.sign(data)可以生成1和-1

2.7排列和随机采样
 

利用numpy.random.permutation函数可以轻松实现对Series或DataFrame的列的排列工作(permuting,随机重排序)
Python学习 | 数据清洗和准备_第20张图片

Python学习 | 数据清洗和准备_第21张图片

随机选择子集并不替换原来数据,可在Series和DataFrame上使用sample方法

Python学习 | 数据清洗和准备_第22张图片

2.8计算指标/哑变量

另一种常用于统计建模或机器学习的转换方式是:将分类变量(categorical variable) 转换为“哑变量”或“指标矩阵.
如果DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame(其值全为1和0),pandas有一个get_dummies函数可以实现该功能
Python学习 | 数据清洗和准备_第23张图片

3 字符串操作
Python学习 | 数据清洗和准备_第24张图片

Python学习 | 数据清洗和准备_第25张图片

以逗号分隔的字符串可以用split拆分成数段:

split常常与strip一起使用,以去除空白符(包括换行符):
Python学习 | 数据清洗和准备_第26张图片

向字符串"::"的join方法传入一个列表或元组,可以将子字符串以双冒号分隔符的形式连接起来

3.1正则表达式

Python学习 | 数据清洗和准备_第27张图片

正则表达式常称作regex, 提供了一种灵活的在文本中搜索或匹配(通常比前者复杂) 字符串模式的方式,Python内置的re模块负责对字符串应用正则表达式
拆分一个字符串,分隔符为数量不定的一组空白符\制表符、空格、换行符等:

Python学习 | 数据清洗和准备_第28张图片

如果对许多字符串使用同一条正则表达式,可以用re.compile创建regex对象。这样将可以节省大量的CPU时间。

Python学习 | 数据清洗和准备_第29张图片

3.2 pandas的矢量化字符串函数
Python学习 | 数据清洗和准备_第30张图片

Python学习 | 数据清洗和准备_第31张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Python学习)