重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要讲解了“去重计数有哪些实现方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“去重计数有哪些实现方式”吧!
创新互联建站主要业务有网站营销策划、网站设计、成都网站设计、微信公众号开发、成都小程序开发、HTML5、程序开发等业务。一次合作终身朋友,是我们奉行的宗旨;我们不仅仅把客户当客户,还把客户视为我们的合作伙伴,在开展业务的过程中,公司还积累了丰富的行业经验、网络营销推广资源和合作伙伴关系资源,并逐渐建立起规范的客户服务和保障体系。
这是一个关于 pandas 从基础到进阶的练习题系列,来源于 github 上的 guipsamora/pandas_exercises 。这个项目从基础到进阶,可以检验你有多么了解 pandas。
我会挑选一些题目,并且提供比原题库更多的解决方法以及更详尽的解析。
如下数据:
数据描述:
此数据是订单明细表。一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项
order_id 列存在重复
quantity 是明细项数量
需求:数据中共有多少个订单?
下面是答案了
因为 order_id 列是存在重复的,那么一种比较直观的方式就是去重+计数:
len(df.order_id.drop_duplicates()) 1834
Series.drop_duplicates() 返回的仍然是一个 Series
len 函数可以计算 Series 值数量
但是你可能不知道的是,这个方式是不准确的!
之所以说上一种方式是不准确,是因为没有考虑到空值的问题。
len 函数不会忽略空值(nan) ,因此如果列中有空值,那么就比正确结果数量多。
正确的做法是:
len(df.order_id.drop_duplicates().dropna())
使用 Series.dropna() 方法可以去掉 nan 值
提示:
即使列中有多个 nan ,经过去重后只会保留一个 nan 值
实际上,pandas 本身有提供一个忽略 nan 的计数方法:
df.order_id.drop_duplicates().count()
点评:
这种方式个人认为最合适
pandas 为列(Series)提供了一个快速汇总计数方法:
df.order_id.value_counts()
Series.value_counts() 相当于 根据 order id 分组,统计数量。并且排除 nan
这相当于实现了去重,因此:
df.order_id.value_counts().count()
感谢各位的阅读,以上就是“去重计数有哪些实现方式”的内容了,经过本文的学习后,相信大家对去重计数有哪些实现方式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!