Pandas(数据清洗)
在数据分析和建模的过程中,相当多的时间要用在数据准备上:加载、清理、转换以及重塑。 这工作会占到分析师时间的80%或更多。
pandas和内置的Python标准库提供了一组高级的、灵活的、快速的工具,可以让你轻松地将数据规整为想要的格式。
处理缺失数据
检测缺失数据
![](https://img.haomeiwen.com/i13183583/b8c526e5ce6032da.png)
在统计应用中,NA数据可能是不存在的数据或者虽然存在,但是没有观察到(例如,数据采集中发生了问题)。当进行数据清洗以进行分析时,好直接对缺失数据进行分析,以判断数据采集的问题或缺失数据可能导致的偏差。
Python内置的None值在对象数组中也可以作为NA:
![](https://img.haomeiwen.com/i13183583/cd7e9aa382717355.png)
滤除缺失数据
![](https://img.haomeiwen.com/i13183583/1f73ca60dd680e04.png)
DataFrame对象,dropna默认丢弃任何含有缺失值的行
![](https://img.haomeiwen.com/i13183583/10d53d3fa0a02133.png)
传入how=‘all’将只丢弃全为NA的行
![](https://img.haomeiwen.com/i13183583/82e8687d4654c117.png)
将特殊值置为NA之后进行相关操作
![](https://img.haomeiwen.com/i13183583/5933893ea8a133bc.png)
填充缺失数据
fillna方法是主要的函数。通过一个常数调用fillna就会将缺失值替换为那个常数值。
![](https://img.haomeiwen.com/i13183583/61d761f303c80ac8.png)
通过一个字典调用fillna,就可以实现对不同的列填充不同的值。
![](https://img.haomeiwen.com/i13183583/48a6a3383e18b50a.png)
fillna默认会返回新对象,但也可以对现有对象进行就地修改。
![](https://img.haomeiwen.com/i13183583/3ef5a28d14965c19.png)
对reindexing有效的那些插值方法也可用于fillna
![](https://img.haomeiwen.com/i13183583/6de50c6d621e8ae5.png)
传入Series的平均值或中位数
![](https://img.haomeiwen.com/i13183583/fb7740ae838d0d1d.png)
数据转换
移除重复数据
![](https://img.haomeiwen.com/i13183583/7fe50b08cd5d35f8.png)
DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行
![](https://img.haomeiwen.com/i13183583/45d17e7a676f0825.png)
drop_duplicates方法,它会返回一个DataFrame,重复的数组会标为False
![](https://img.haomeiwen.com/i13183583/046daafcf66d48ab.png)
只希望根据k1列过滤重复项
![](https://img.haomeiwen.com/i13183583/099eecc6171eee0e.png)
duplicated和drop_duplicates默认保留的是第一个出现的值组合。传入keep=‘last’则保留最后一个
![](https://img.haomeiwen.com/i13183583/7deedcc2a80941ec.png)
利用函数或映射进行数据转换
根据数组、Series或DataFrame列中的值来实现转换工作
![](https://img.haomeiwen.com/i13183583/e95ad2ea021da2c5.png)
添加一列表示该肉类食物来源的动物类型。我们先编写一个不同肉类到动物的映射
![](https://img.haomeiwen.com/i13183583/cb495f5d059a5db7.png)
使用Series的str.lower方法,将各个值转换为小写
![](https://img.haomeiwen.com/i13183583/4b3e3344544cf8de.png)
也可以传入一个能够完成全部这些工作的函数
![](https://img.haomeiwen.com/i13183583/e435180f108fa876.png)
替换值
![](https://img.haomeiwen.com/i13183583/bbe5cb55680cbb13.png)
-999这个值可能是一个表示缺失数据的标记值。要将其替换为pandas能够理解的NA值
![](https://img.haomeiwen.com/i13183583/42b5b337fb40811e.png)
一次性替换多个值
![](https://img.haomeiwen.com/i13183583/a84719d4ef88868f.png)
让每个值有不同的替换值,可以传递一个替换列表
![](https://img.haomeiwen.com/i13183583/19cbe5950aa839c2.png)