首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

上期文章:pandas每天一题-题目7:批量列计算 后台回复"数据",可以下载本题数据集 如下数据: 数据描述: 此数据是订单明细表。...一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项 order_id 列存在重复 quantity 是明细项数量 需求:数据中共有多少个订单?...---- 方式2 之所以说上一种方式是不准确,是因为没有考虑到值的问题。 len 函数不会忽略值(nan) ,因此如果列中有空值,那么就比正确结果数量多。...本身有提供一个忽略 nan 的计数方法: df.order_id.drop_duplicates().count() 点评: 这种方式个人认为最合适 ---- 方式4 pandas 列(Series...)提供了一个快速汇总计数方法: df.order_id.value_counts() Series.value_counts() 相当于 根据 order id 分组,统计数量。

2.6K21
您找到你想要的搜索结果了吗?
是的
没有找到

9个value_counts()的小技巧,提高Pandas 数据分析效率

当谈到数据分析和理解数据结构时,Pandas value_counts() 是最受欢迎的函数之一。该函数返回一个包含唯一值计数的系列。...1、默认参数 2、按升序对结果进行排序 3、按字母顺序排列结果 4、结果中包含值 5、 以百分比计数显示结果 6、将连续数据分入离散区间 7、分组并调用 value_counts() 8、将结果系列转换为...例如,让我们从 Titanic 数据集中获取“Embarked”列的计数。...Pandas value_counts() 可用于使用 bin 参数将连续数据分入离散区间。...一个常见的用例是按某个列分组,然后获取另一列的唯一值的计数。例如,让我们按“Embarked”列分组并获取不同“Sex”值的计数

2.4K20

一场pandas与SQL的巅峰大战

数据可以在公众号后台回复“对比”获取,你将得到本文所有的excel数据和SQL脚本数据以及本文的清晰PDF版本,便于实操和查看。...例如我们查询uid10003或者金额大于50的记录。(点击图片可以查看大图) ? 这里需要特别说明的是有一种情况是需要判断某字段是否值。...pandas值用nan表示,其判断条件需要写成isna(),或者notna()。...例如 #查找uid不为的记录 order_data[order_data['uid'].notna()] #查找uid的记录 order_data[order_data['uid'].isna(...前面提到的count是一种聚合函数,表示计数,除此外还有sum表示求和,max,min表示最大最小值等。pandas和SQL都支持聚合操作。例如我们求每个uid有多少订单量。

2.2K20

一场pandas与SQL的巅峰大战(二)

上一篇文章一场pandas与SQL的巅峰大战中,我们对比了pandas与SQL常见的一些操作,我们的例子虽然是以MySQL基础的,但换作其他的数据库软件,也一样适用。...}-\\d{2}-\\d{2}).*', 1) as dt3 from t_order; #我们的目标同样是在小括号里,1表示取第一个匹配的结果 3.假设我们要去掉ts中的横杠,即替换ts中的“-”...实际中,经常会遇到二者嵌套的情况,例如,我们想统计:ts中含有‘2019-08-01’的不重复订单有多少,ts中含有‘2019-08-02’的不重复订单有多少,这在Hive SQL中比较容易,代码和得到的结果...四、窗口函数 row_number hive中的row_number函数通常用来分组计数,每组内的序号从1开始增加,且没有重复值。比如我们对每个uid的订单按照订单时间倒序排列,获取其排序的序号。...for _ , row in order_group.iterrows()]).reset_index() order_group1 这样的结果中会有一个空行,这是因为用逗号分隔的时候,最后一个元素

2.3K20

一场pandas与SQL的巅峰大战

数据可以在公众号后台回复“对比”获取,你将得到本文所有的excel数据和SQL脚本数据以及本文的清晰PDF版本,便于实操和查看。...例如我们查询uid10003或者金额大于50的记录。(点击图片可以查看大图) ? 这里需要特别说明的是有一种情况是需要判断某字段是否值。...pandas值用nan表示,其判断条件需要写成isna(),或者notna()。...例如 #查找uid不为的记录 order_data[order_data['uid'].notna()] #查找uid的记录 order_data[order_data['uid'].isna(...前面提到的count是一种聚合函数,表示计数,除此外还有sum表示求和,max,min表示最大最小值等。pandas和SQL都支持聚合操作。例如我们求每个uid有多少订单量。

1.6K40

一场pandas与SQL的巅峰大战

数据可以在公众号后台回复“对比”获取,你将得到本文所有的excel数据和SQL脚本数据以及本文的清晰PDF版本,便于实操和查看。...例如我们查询uid10003或者金额大于50的记录。(点击图片可以查看大图) ? 这里需要特别说明的是有一种情况是需要判断某字段是否值。...pandas值用nan表示,其判断条件需要写成isna(),或者notna()。...例如 #查找uid不为的记录 order_data[order_data['uid'].notna()] #查找uid的记录 order_data[order_data['uid'].isna(...前面提到的count是一种聚合函数,表示计数,除此外还有sum表示求和,max,min表示最大最小值等。pandas和SQL都支持聚合操作。例如我们求每个uid有多少订单量。

1.6K10

一场pandas与SQL的巅峰大战(四)

数据准备 SQL计算同比和日环比 pandas计算同比和日环比 在之前的三篇系列文章中,我们对比了pandas和SQL在数据方面的多项操作。...具体来讲,第一篇文章一场pandas与SQL的巅峰大战涉及到数据查看,去重计数,条件选择,合并连接,分组排序等操作。...第三篇文章一场pandas与SQL的巅峰大战(三)围绕日期操作展开,主要讨论了日期获取,日期转换,日期计算等内容。 本篇文章一起来学习常见的应用实例:如何在SQL和pandas中计算同环比。...同比是指和上个周期内同期数据的对比,可以是年同比,月同比,同比等。环比是指连续两个统计周期内数据的对比,可以是日环比,环比,月环比等。工作中常见的是同比和日环比。...以上面的代码基础,稍加修改,增加计算百分比的代码,就可以分别得到同比和日环比。

1.9K10

这个烂大街的用户消费分析案例,我用了点不一样的pandas技巧

你可以网上搜索"用户消费分析 pandas" 查阅其他同类文章作为对比学习 ---- 数据背景 案例数据 CDNow 平台上某段时间的订单数据,定义加载数据的函数: 行3:数据源是文本文件,每列数据由多个空格分隔...,能看出一些基本信息与问题 订单时间范围从1997年1月到1998年6月 金额最小值0,这是赠品?...这里不再展开 ---- 再看看订单金额0的情况: 共80笔消费金额0的记录 ---- 啰嗦的汇总代码 数据分析中的数据处理操作,大部分集中在分组统计中,因为需要变换数据颗粒做统计运算。..."那么每个月的消费人数走势如何呢": 注意数据颗粒是订单,统计人数时是不能直接对记录计数,如果同一个人在分组范围内出现多笔,应该视为一笔,因此需要对 user id 去重后再计数。..."每月的销售额": "每月消费人数": "每月客单价": 行3:多个度量,只需要分别传入即可 "每月平均订单单价": 本次涉及的并非一些 pandas 的方法,而是使用 pandas 的一种模式

1.6K50

pandas每天一题-题目6:文本转数值

这是一个关于 pandas 从基础到进阶的练习题系列,来源于 github 上的 guipsamora/pandas_exercises 。...上期文章:pandas每天一题-题目5:统计值数量也有多种实现方式 后台回复"数据",可以下载本题数据集 如下数据: 数据描述: 此数据是订单明细表。...一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项 order_id 列存在重复 quantity 是明细项数量 需求:将价格列转成数值 下面是答案了 ---- 方式1 这是源项目的解决方式...x[1:-1] 是 python 的切片,从第二个字符取到最后,实际作用就是去掉 $ 符号 用 float 函数转成数值 点评: 这种方式不是 pandas 的风格 ---- 方式2 pandas 文本列提供了切片方式...此时该列的每个值都被传入函数中处理 点评: 有时候我们必须在数据转成 DataFrame 之前做正确的处理,比如身份证号码,如果加载后已经变成科学计数法,那么你是没有机会转回正确的文本。

68930

Python数据处理,pandas 统计连续停车时长

定期找些简单练习作为 pandas 专栏的练习题 知识点 DataFrame.apply 以及 axis 的理解 分组计数 DataFrame.iloc 切片 如下一份停车场数据: 每行表示某时间段...1 同理,"连续停车2小时"结果是2(分别是"AA"与"FF") ---- 导入库与加载数据: ---- 需求1 按理解,可以描述"不同车牌数量",相当于去重复后的车牌数。...() 做到一样的效果 基于这个结果,统计每一种次数的计数即可: 行3:按之前的处理,统计次数 注意此时结果是一个 Series,index(上图红框) 是"连续n小时停车"。...value(上图蓝框) 是连续n小时停车出现的次数 把这个过程定义一个函数: 行6:选出一列执行看看效果 最后,通过 apply 就能处理所有的列: 注意 行索引(蓝框) 是"连续n小时停车" 但是...reindex 就是为了这种场景而设计: 行4:顺手把值填成 0 结果: 之后只是合并2个需求结果输出 Excel 即可,具体看源码 但是,结果真的对吗?!!!

1.3K50

Day05| 第四期-电商数据分析

今天的案例是电商的订单记录分析,挖掘出订单量和产品种类,价格,以及下单时间的特点。...获取数据, 公号回复:DT18 02 数据观察 可以用文本编辑器,打开数据观察一下。...index=df[df.createTime > df.payTime].index, inplace=True) # 处理16年之后的数据 df[df.createTime > endTime] # ...# 看下支付时间有没有16年以前的 df[df.payTime < startTime] # # 看下支付时间在16年以后的,,支付时间不用处理 df[df.payTime > endTime...清洗的一个技巧是“重复数据后删除”,如果前几列的数据出现几十上百行重复或者有多行值0,值,这可能并不是真的重复或异常,而是有一行数据前几列重复后几列不同,因而不要盲目的将重复的数据删除,所有列都清洗后

1.8K20

30道经典SQL面试题讲解(11-20)

最后运行结果如下: score_bin stu_cnt 60分以下 3 80-100分 3 60-80分 3 14 计数获取 现在我们有一个订单明细表order_table,这张表中存储了order_id...那该怎么把本周的订单明细筛选出来呢?让订单日期所属的与程序运行当日所属的是一个,且所属的年是同一年。后面这个条件一定要注意,因为周数在不同年份是会重复的,但是在同一年内是不重复的。...最后运行结果如下: cur_date order_cnt 2020-01-12 5 15 环比数据获取 我们现在需要根据订单明细表order_table,获取当日的订单数;当日的环比订单数,即昨天的数据...,主要是环比数据的获取,当订单日期等于当日日期向前偏移1天的日期时,对order_id进行计数就是昨日的订单数。...所以我们就可以利用table2的id是否来判断该同学有没有获奖,进而把我们想要的信息通过where条件筛选出来。

73710

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

上期文章:pandas每天一题-题目9:计算平均收入的多种方式 后台回复"数据",可以下载本题数据集 如下数据: 数据描述: 此数据是订单明细表。...一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项 order_id 列存在重复 quantity 是明细项数量 需求:列出共有多少个不同的 item_name?...重点回顾:pandas每天一题-题目8:去重计数的多种实现方式 下面是答案了 ---- 方式1 如果只是针对一列的去重计数pandas 为此提供了方法: df['item_name'].nunique...---- 方式2 本质上,pandas 列(Series) 提供了去重操作,得到结果是一个 numpy 数组: df['item_name'].unique() 得到一个去重后的结果数组 提示: 之前我们讲解过....drop_duplicates 方法,他们的区别是 .drop_duplicates 返回列(pandas.Series) ,.unique() 返回数组(numpy.array) 有了去重数组,统计数量是

76320

30道经典SQL面试题讲解(11-20)

最后运行结果如下: score_bin stu_cnt 60分以下 3 80-100分 3 60-80分 3 14 计数获取 现在我们有一个订单明细表order_table,这张表中存储了order_id...那该怎么把本周的订单明细筛选出来呢?让订单日期所属的与程序运行当日所属的是一个,且所属的年是同一年。后面这个条件一定要注意,因为周数在不同年份是会重复的,但是在同一年内是不重复的。...最后运行结果如下: cur_date order_cnt 2020-01-12 5 15 环比数据获取 我们现在需要根据订单明细表order_table,获取当日的订单数;当日的环比订单数,即昨天的数据...,主要是环比数据的获取,当订单日期等于当日日期向前偏移1天的日期时,对order_id进行计数就是昨日的订单数。...所以我们就可以利用table2的id是否来判断该同学有没有获奖,进而把我们想要的信息通过where条件筛选出来。

24520

Python数据分析笔记——Numpy、Pandas

一维数组的索引 多维数组的索引 (2)切片索引 一维数组的切片索引(与Python列表的切片索引一样) 多维数组的切片索引 (3)花式索引 元素索引和切片索引都是仅局限于连续区域的值,而花式索引可以选取特定区域的值...当我们没有为数据指定索引时,Series会自动创建一个0到N-1(N数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组的值和对应的属性。...也可以在创建Series的时候值直接创建索引。 b、通过字典的形式来创建Series。 (3)获取Series中的值 通过索引的方式选取Series中的单个或一组值。...3、算数运算和数据对齐 (1)Series 与Series之间的运算 将不同索引的对象进行算数运算,在将对象进行相加时,如果存在时,则结果的索引就是该索引的并集,而结果的对象。...7、唯一值的获取 此方法可以用于显示去重后的数据。 8、值计数 用于计算一个Series中各值出现的次数。

6.4K80

对比Excel,学习Python窗口函数

我们先来看个例子,下面是某平台一段时间内分天的销量情况表,熟悉业务的同学应该都有一个常识,就是天与天之间的数据很多时候是不可以直接比的,比如电商平台周一和周日订单量。...天与天之间不可比,但是之间大部分情况是可比的,因为一7天基本覆盖了全部业务情况。...之间比较久涉及到应该怎么算,如果是按照自然去算的话,一年大约也就52,这对于号称大数据时代来说,数据肯定是有点少,那怎么办才能既覆盖到比较全的业务场景,又能够增加数据点呢?...具体实现代码如下: import pandas as pd df = pd.read_csv(r''python_rolling.csv') df.rolling(window = 7).sum()...对df进行rolling以后除了求和以外还可以进行其他运算,比较常用的运算有: 计数:count() 求均值:men() 求最值:min()、max() 求方差:var() 求标准差:std() 除了常用的这些汇总运算以外

1.1K30

数据科学家私藏pandas高阶用法大全 ⛵

的一列的计数统计,可以使用groupby和count组合,如果要获取2列或更多列组成的分组的计数,可以使用groupby和size组合。...大家都知道,我们可以使用value_counts获取列里的取值计数,但是,如果要获取列中某个值的百分比,我们可以添加normalize=True至value_counts参数设置来完成: import...) 我们知道可以通过value_counts很方便进行字段取值计数,但是pandas.value_counts()自动忽略缺失值,如果要对缺失值进行计数,要设置参数dropna=False。...如果调用combine_first()方法的 df1 中数据非,则结果保留 df1 中的数据,如果 df1 中的数据值且传入combine_first()方法的 df2 中数据非,则结果取 df2...中的数据,如果 df1 和 df2 中的数据都为值,则结果保留 df1 中的值(值有三种:np.nan、None 和 pd.NaT)。

6K30
领券