前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas每天一题-题目17:缺失值处理的多种方式

pandas每天一题-题目17:缺失值处理的多种方式

作者头像
咋咋
发布2021-09-01 14:19:13
7110
发布2021-09-01 14:19:13
举报
文章被收录于专栏:数据大宇宙

这是一个关于 pandas 从基础到进阶的练习题系列,来源于 github 上的 guipsamora/pandas_exercises 。这个项目从基础到进阶,可以检验你有多么了解 pandas。

我会挑选一些题目,并且提供比原题库更多的解决方法以及更详尽的解析

计划每天更新一期,希望各位小伙伴先自行思考,再查看答案。如果对你有帮助,记得转发推荐给你的好友!

上期文章:pandas每天一题-题目16:条件赋值的多种方式

后台回复"数据",可以下载本题数据集

如下数据:

代码语言:javascript
复制
import pandas as pd
import numpy as np

df = pd.read_csv('chipotle.tsv',
                 sep='\t',
                 converters={'item_price': lambda x: float(x[1:-1])})

数据描述:

  • 此数据是订单明细表。一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项
  • order_id 列存在重复
  • item_name 是明细项物品名称
  • quantity 是明细项数量
  • item_price 是该明细项的总价钱
  • choice_description 是每一项更详尽的描述

例如:某个单子中,客人要 1瓶可乐 和 1瓶雪碧 ,那么这个订单的 order_id 为:'xx',有2个行记录(样本),2行的item_name 都是 "Canned Soda"(苏打水,视为罐装饮料) ,quantity 都是1。

第一行的 choice_description 是 "Diet Coke"(可乐) ,第二行是 "Sprite"(雪碧)

前面章节讲解过的知识点,本文不再讲解!

需求:对数据中的缺失值做合适处理

下面是答案了


哪些列有缺失?

之前的文章已经有讲解过:

代码语言:javascript
复制
df.apply(
    lambda col: col.isna().sum(), 
    axis=0)
  • 只有 choice_description 列有缺失

不同的填充方式

最简单的方式,把 nan 都填充一个固定的值:

代码语言:javascript
复制
df['choice_description'].fillna('无')

显然,这只是返回填充后的列,因此我们把新值赋值回去:

代码语言:javascript
复制
df['choice_description'] = df['choice_description'].fillna('无')
df

除此之外,还可以使用空值上一行或下一行的值来填充:

代码语言:javascript
复制
df = pd.read_csv('chipotle.tsv',
                 sep='\t',
                 converters={'item_price': lambda x: float(x[1:-1])})
df['choice_description'].fillna(method='ffill')
  • 行4:参数 method 可以是 'ffill' 前向参考,'bfill' 后向参考。
  • 这里使用前向参考,因此第一行记录前面没有记录可参考,无法填充。第4行记录使用第3行的值填充

显然,直接前向或后向填充,通常没有意义。

篇幅关系,我把分组填充缺失值放到下一节


推荐阅读:

  1. 懂Excel就能轻松入门Python数据分析包pandas(七):分列
  2. Python入门必备教程,高手都是这样用Pycharm写Python,效率提示10倍
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 哪些列有缺失?
  • 不同的填充方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档