前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas每天一题-题目10:去重计数的额外方式

pandas每天一题-题目10:去重计数的额外方式

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

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

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

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

上期文章:pandas每天一题-题目9:计算平均收入的多种方式

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

如下数据:

数据描述:

  • 此数据是订单明细表。一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项
  • order_id 列存在重复
  • quantity 是明细项数量

需求:列出共有多少个不同的 item_name?

在前面的练习中,其实我们已经讲解过相关的方式,今天作为补充,因此前面讲解过的方式这里不再列出。

重点回顾:pandas每天一题-题目8:去重计数的多种实现方式

下面是答案了


方式1

如果只是针对一列的去重计数,pandas 为此提供了方法:

代码语言:javascript
复制
df['item_name'].nunique()

如果只是简单列出方法,这不是我的文章风格。

我们尝试稍微深入一些了解这个方法,从而得到更多的解决方式!


方式2

本质上,pandas 为列(Series) 提供了去重操作,得到结果是一个 numpy 数组:

代码语言:javascript
复制
df['item_name'].unique()
  • 得到一个去重后的结果数组

提示:

之前我们讲解过 .drop_duplicates 方法,他们的区别是 .drop_duplicates 返回列(pandas.Series) ,.unique() 返回数组(numpy.array)

有了去重数组,统计数量是 python 的基本操作:

代码语言:javascript
复制
len(df['item_name'].unique())

这就是方法1 中的.nunique 的实现(它内部会考虑 nan 的情况)

最后,介绍一种纯粹 python 的方式


方式3

在 python 基本数据结构中,有一种去重的结构—— set :

代码语言:javascript
复制
set(df['item_name'])
  • 效果与 Series.unique 类似,区别是,其返回的是 python 的 set 对象

同理,统计数量即可:

代码语言:javascript
复制
len(set(df['item_name']))

  1. 推荐阅读:
  2. 懂Excel轻松入门Python数据分析包pandas(十八):pandas 中的 vlookup
  3. 懂Excel也能轻松入门Python数据分析包pandas(二):高级筛选(下)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方式1
  • 方式2
  • 方式3
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档