
文章插图
如果想要保留重复的最后一行 , 那么需要指定 keep 参数 。
# 按某一列排除重复 , 并保留最后一行df.drop_duplicates(['花色'], keep='last')
文章插图
从上面两个返回结果的编号可以看出 , 不同方法的差异情况 。
3. 如何删除缺失?
使用 dropna() 函数 , 默认删除包含缺失的行 。为了更加简单易懂 , 我们用扑克牌中不重复的花色作为示例 。
# 不重复的花色color = df.drop_duplicates(['花色'])color
文章插图
# 删除包含缺失值的行color.dropna()
文章插图
如果想要删除整行全部为空的行 , 那么需要指定 how 参数 。
# 删除全部为空的行color.dropna(how='all')
文章插图
如果想要删除包含缺失值的列 , 那么需要指定 axis 参数 。
# 删除包含缺失值的列color.dropna(axis=1)
文章插图
可以看到 , 包含缺失值的「花色」这一列被删除了 。
4. 如何补全缺失?
使用 fillna() 函数 , 可以将缺失值填充为我们指定的值 。
# 补全缺失值color.fillna('Joker')
文章插图
可以看到 , 原来的 NaN 被填充为 Joker , 在实际工作的应用中 , 通常填充为 0 , 也就是说 , fillna(0) 是比较常见的用法 。
如果想要使用临近的值来填充 , 那么需要指定 method 参数 , 例如:
# 用后面的值填充color.fillna(method='bfill')
文章插图
可以看到 , 原来第一行的 NaN 替换成了第二行的「黑桃:spades:」 。
其中 method 还有一些其他的可选参数 , 详情可以查看相关的帮助文档 。
还有一种按字典填充的方法 。为了让下面的演示更加直观易懂 , 我们先把索引为 2 的牌面设置为缺失值:
# 为了演示 , 先指定一个缺失值color.loc[2, '牌面'] = np.nancolor
文章插图
# 按列自定义补全缺失值color.fillna({'花色': 0, '牌面': 1})
文章插图
可以看出 , 不同列的缺失值 , 可以填充为不同的值 , 花色这一列填充为 0 , 牌面这一列填充为 1 , 我在图中分别用红色的方框标记出来了 。
5. 应用案例
下面 我们用 Python 代码 , 把这幅待清洗的扑克牌数据集 , 变成一副正常的扑克牌数据 。
import numpy as npimport pandas as pd# 设置最多显示 10 行pd.set_option('max_rows', 10)# 从 Excel 文件中读取原始数据df = pd.read_excel('待清洗的扑克牌数据集.xlsx')# 补全缺失值df = df.fillna('Joker')# 排除重复值df = df.drop_duplicates()# 修改异常值df.loc[4, '牌面'] = 3# 增加一张缺少的牌df = df.Append({'编号': 4,'花色': '黑桃♠','牌面': 2},ignore_index=True)# 按编号排序df = df.sort_values('编号')# 重置索引df = df.reset_index()# 删除多余的列df = df.drop(['index'], axis=1)# 把清洗好的数据保存到 Excel 文件df.to_excel('完成清洗的扑克牌数据.xlsx',index=False)df返回结果如下:可以看到 , 我们已经成功地把它变成了一副正常的扑克牌数据 。
6. 小结
我们简单回顾一下本文的主要内容 , 首先 , 我们从宏观层面介绍了数据分析的 8 个步骤 , 然后用一副待清洗的扑克牌数据集作为示例 , 从读取数据 , 到查找异常 , 再到排除重复、删除缺失和补全缺失 , 最后 , 我们用一个案例 , 完整 演示了清洗数据的过程 。
推荐阅读
- SEM账户遇突发情况该如何排查?
- 如何新建店铺的定位 淘宝店铺怎么定位
- 淘宝首页怎么设计 手机如何制作淘宝详情页
- 茶树是如何发现的,中国茶树的起源
- ps如何做淘宝详情页长图 淘宝怎么批量修改详情页
- 蝴蝶|生命里最难熬的日子,该如何度过?
- 茶叶蛋如何存放呢,煮茶叶蛋用什么茶呢
- 如何在淘宝上价格低到高出现 淘宝商品价格过低正常吗
- 杜仲茶是怎么降血压的,杜仲茶的春茶和秋茶如何选择
- 大红袍等级如何划分,普洱茶的樟香和等级划分
