13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

聊一下关于去重计数的多种实现方式

本文转载自微信公众号「数据大宇宙」,作者卡门的儿子。转载本文请联系数据大宇宙公众号。

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

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

如下数据:

数据描述:

需求:数据中共有多少个订单?

下面是答案了

方式1

因为 order_id 列是存在重复的,那么一种比较直观的方式就是去重+计数:

 
 
 
 
  1. len(df.order_id.drop_duplicates()) 
  2. 1834 

但是你可能不知道的是,这个方式是不准确的!

方式2

之所以说上一种方式是不准确,是因为没有考虑到空值的问题。

len 函数不会忽略空值(nan) ,因此如果列中有空值,那么就比正确结果数量多。

正确的做法是:

 
 
 
 
  1. len(df.order_id.drop_duplicates().dropna()) 

提示:

即使列中有多个 nan ,经过去重后只会保留一个 nan 值

方式3

实际上,pandas 本身有提供一个忽略 nan 的计数方法:

 
 
 
 
  1. df.order_id.drop_duplicates().count() 

点评:

这种方式个人认为最合适

方式4

pandas 为列(Series)提供了一个快速汇总计数方法:

 
 
 
 
  1. df.order_id.value_counts() 

这相当于实现了去重,因此:

 
 
 
 
  1. df.order_id.value_counts().count() 

点评:

不过我自制了一个方法查询器,这样子不至于记错方法:


新闻名称:聊一下关于去重计数的多种实现方式
标题路径:http://cdbrznjsb.com/article/cdshgjd.html

其他资讯

让你的专属顾问为你服务