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

pandas在group of后对每个组中的值进行排序,并在使用cumsum后获得值的百分比

pandas是一个开源的数据分析和数据处理工具,它提供了丰富的数据结构和数据分析函数,可以方便地进行数据清洗、转换、分析和可视化等操作。

在pandas中,可以使用groupby函数对数据进行分组操作。groupby函数将数据按照指定的列或条件进行分组,并返回一个GroupBy对象。在GroupBy对象上,可以使用apply函数对每个组进行操作。

如果要在groupby后对每个组中的值进行排序,可以使用sort_values函数。sort_values函数可以按照指定的列或条件对数据进行排序,并返回排序后的结果。

在排序完成后,可以使用cumsum函数计算每个组中值的累计和,并使用div函数将累计和除以总和,从而获得值的百分比。

以下是一个示例代码:

代码语言:txt
复制
import pandas as pd

# 创建一个DataFrame对象
data = {'group': ['A', 'A', 'B', 'B', 'B', 'C'],
        'value': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)

# 对group列进行分组,并对每个组中的value列进行排序
df_sorted = df.groupby('group').apply(lambda x: x.sort_values('value'))

# 计算每个组中值的累计和,并计算百分比
df_sorted['cumulative_sum'] = df_sorted.groupby('group')['value'].cumsum()
df_sorted['percentage'] = df_sorted['cumulative_sum'].div(df_sorted.groupby('group')['value'].transform('sum'))

# 打印结果
print(df_sorted)

这段代码首先创建了一个包含group和value两列的DataFrame对象。然后,使用groupby函数按照group列进行分组,并使用apply函数对每个组中的value列进行排序。接着,使用cumsum函数计算每个组中值的累计和,并使用div函数将累计和除以总和,得到值的百分比。最后,打印排序和计算结果。

腾讯云提供了云计算相关的产品和服务,例如云服务器、云数据库、云存储等。具体推荐的产品和产品介绍链接地址可以参考腾讯云官方网站。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

七步搞定一个综合案例,掌握pandas进阶用法!

3.分组排序 由于我们最终需要取排序Top3(或top50%)产品,因此需要在各组内先按照销售量降序排列,再计算百分比,最后求累计百分比。也可以先计算每个产品各自占比,再排序之后求累计百分比。...第二种是排序之后,改变数据实际顺序。我们使用lambda函数实现:每个分组按照上一步生成rank,升序排列。...注意同样是每组内进行,需要用cumsum函数求累计和。...= num break return res 调用该函数之后,每个能得到符合条件目标group_rank,如下面代码和图片所示: data_target_rank...result.to_excel('result.xlsx', index=None) 小结 本文使用pandas,通过7个步骤实现了一个综合案例:筛选出每个城市每个子类别销量占比top 50%至多3

2.4K40

一场pandas与SQL巅峰大战(五)

1.不分组情况 最直观思路是,每一行金额,都累加从第一行到当前行金额。MySQL,可以考虑自连接方式,但需要使用不等值连接。...pandas计算累计百分比 pandas,提供了专门函数来计算累计,分别是cumsum函数,expanding函数,rolling函数。...我们一起来看一下使用三种函数计算分组和不分组累计百分比方法。 ? 1.不分组情况 cumsum函数 cumsumpandas中专门用于计算累计和函数。...直接amt列使用cumsum函数即可计算累计,结果和用SQL计算得到一致。 计算累计百分比也很容易。...参数min_periods表示最小观测窗口,默认为1,可以设置为其他,但如果窗口内记录数不足该,则会显示NA。 有了累计,计算累计百分比,可以按照cumsum方法进行,此处省略。

2.6K10

25个例子学会Pandas Groupby 操作(附代码)

它用于根据给定列不同对数据点(即行)进行分组,分组数据可以计算生成组聚合。 如果我们有一个包含汽车品牌和价格信息数据集,那么可以使用groupby功能来计算每个品牌平均价格。...9、排序输出 可以使用sort_values函数根据聚合列输出进行排序。...由于行是根据上个月销售排序,所以我们将获得上个月销售额排名第五行。 13、第n个,倒排序 也可以用负第n项。例如," nth(-2) "返回从末尾开始第二行。...sales.groupby(["store", "product_group"]).ngroups 18 商店和产品列中有18种不同不同组合。...我们可以使用rank和groupby函数分别对每个进行排序

3K20

20个能够有效提高 Pandas数据分析效率常用函数,附带解释和例子

Pandas提供了一个易于使用函数来计算加和,即cumsum。 如果我们只是简单使用cumsum函数,(A,B,C)组别将被忽略。...df['cumsum_2'] = df[['value_2','group'].groupby('group').cumsum()] df ? 4....Pct_change 此函数用于计算一系列变化百分比。假设我们有一个包含[2,3,6]序列。如果我们这个序列应用pct_change,则返回序列将是[NaN,0.5,1.0]。...Pct_change函数用于比较元素时间序列变化百分比。 df.value_1.pct_change() ? 9. Rank Rank函数实现对数据进行排序。...我们有三个不同城市,不同日子进行测量。我们决定将这些日子表示为列行。还将有一列显示测量值。

5.5K30

Pandas 秘籍:6~11

完成此操作,将对每一行进行独立排序。 列名现在已无意义。 我们在下一步列名称进行重命名,然后执行与步骤 2 相同分组和汇总。这次,亚特兰大和休斯顿之间所有航班都属于同一标签。...我认为,这样可以使计算从左到右过程更加简洁。 您当然可以将它们替换为实际运算符。 理想情况下,我们希望告诉 Pandas 每个条纹开始时都应用cumsum方法,并在每个条纹结束重新设置自身。...步骤 4 swaplevel方法接受要交换级别的名称或位置作为前两个参数。sort_index方法被调用两次,并每个级别的实际进行排序。...我们使用部分日期字符串直至 2017 年 8 月所有犯罪进行分割,第 4 步,我们统计每月每个犯罪类别的所有犯罪,第 5 步,我们按此总数进行排序,这对于merge_asof是必需。...第 5 步,通过将每个除以其行总数,可以找到每个在所有占总数百分比。 默认情况下,Pandas 会自动按对象列对齐对象,因此我们不能使用除法运算符。

33.8K10

Pandas 50题练习

计算df每个种类animal数量 df['animal'].value_counts() 先按age降序排列,按visits升序排列 df.sort_values(by=['age', 'visits..., 'python') df 每种animal每种不同数量visits,计算平均age,即,返回一个表格,行是aniaml种类,列是visits数量,表格是行动物种类列访客数量平均年龄 df.pivot_table...idxmin() 给定DataFrame,求A列每个前3B和 df = pd.DataFrame({'A': list('aaabbcaabcccbbc'),...s[s.index.weekday == 2].sum() 求每个自然月平均数 s.resample('M').mean() 每连续4个月为一,求最大所在日期 s.groupby(pd.Grouper...3]] s进行切片操作,取一级索引至B,二级索引从2开始到最后 s.loc[pd.IndexSlice[:'B', 2:]] # 方法二 # s.loc[slice(None, 'B'), slice

2.9K20

模型评价指标—KS

对于分类模型,在建立好模型,我们想模型进行评价,常见指标有混淆矩阵、KS曲线、ROC曲线、AUC面积等。也可以自己定义函数,把模型结果分割成n(100)份,计算top1准确率、覆盖率。...step3:把样本均分成10/20等(最多每个样本是一,分成两百)。 step4:统计每个组别逾期客户数量/正常客户数量。...每一KSi为逾期客户累计占比和正常客户累计占比差值绝对,最大0.52即为该模型KSpop=0.4处取得。...但是,KS过高,需核验模型是否使用未来变量,要谨慎使用。 具体KS对应模型区别能力见下表: ? 跟大家分享一个我实际建模实例: 有一个模型训练集上KS0.85左右。...根据之前看资料,我很担心模型KS过高,实际应用时效果会比较差。 但在实际上线,模型效果表现很好。大数据建模,从海量商户捞风险商户,prob>0.9商户准确率可以高于90%。

5.4K21

一文完全理解模型ks指标含义并画出ks曲线(包含代码和详细解释)「建议收藏」

df 是pandasDataFrame表,表必须包含两列:预测和真实。...y_true是真实df表列名,此处为“label”; y_pre是预测df表列名,此处为“score”; num是需要分组数量,具体含义后面会说; good和bad是真实0和...下面按照代码注释分步讲解。 先将df按照score列从小到大进行排序排序完成,如果num=10,则将所有的样本划分为10个区间,新增rank列,此列每个区间从上到下使用1~10个数字标记。...为了方便之后求和统计,新增set_1列,此列所有均为1; score列进行统计,group_sum为每个区间个数,相应max、min、mean为区间最大、最小和平均值; 最后新增一行total...,进行整列数据统计; 好用户统计,good_sum列中计算了每个区间好用户数量,good_percent列则是每个区间好用户数占全部好用户数比例。

4K10

Python 数据分析(PYDA)第三版(六)

12.1 pandas 与模型代码之间接口 模型开发常见工作流程是使用 pandas 进行数据加载和清理,然后切换到建模库来构建模型本身。模型开发过程一个重要部分被称为特征工程,机器学习。...使用agg_counts.sum("columns")计算行计数,我可以调用argsort()来获得一个可以用于升序排序索引数组: In [53]: indexer = agg_counts.sum...较小,很难看出 Windows 用户相对百分比,因此让我们将百分比归一化为 1: def norm_total(group): group["normed_total"] = group.../性别组合,这些字段进行groupby,并apply一个返回每个计数函数: def get_quantile_count(group, q=0.5): group = group.sort_values...您还可以对捐款金额进行求和,并在桶内进行归一化,以可视化每个候选人每个大小总捐款百分比每个捐款大小收到候选人总捐款百分比显示了结果图): In [231]: bucket_sums = grouped

22400

数据分析之Pandas分组操作总结

之前介绍过索引操作,现在接着Pandas分组操作进行介绍:主要包含SAC含义、groupby函数、聚合、过滤和变换、apply函数。...其中split指基于某一些规则,将数据拆成若干;apply是指每一独立地使用函数;combine指将每一结果组合成某一类数据结构。...2. apply过程 apply过程,我们实际往往会遇到四类问题: 整合(Aggregation):即分组计算统计量(如求均值、求每组元素个数); 变换(Transformation):即分组每个单元数据进行操作...变换(Transformation):即分组每个单元数据进行操作(如元素标准化):输入是每组数据,输出是每组数据经过某种规则变换数据,不改变数据维度。...以重量分组(0-0.5,0.5-1,1-1.5,1.5-2,2+),按递增深度为索引排序,求每组连续严格递增价格序列长度最大

7.5K41

Python分析成长之路9

1.pandas数据结构     pandas,有两个常用数据结构:Series和Dataframe  为大多数应用提供了一个有效、易用基础。     ...= df['data1'].groupby(df['key1']) #data1列进行分组,获得一个group对象 8 # group= df.groupby(df['key1'])['data1...(group.median()) #返回每组中位数 15 print(group.cumcount()) #每个分组成员进行标记 16 print(group.size()) #返回每个分组大小...(group.median()) #返回每组中位数 14 print(group.cumcount()) #每个分组成员进行标记 15 print(group.size()) #返回每个分组大小...返回每组中位数 print(group.cumcount()) #每个分组成员进行标记 print(group.size()) #返回每个分组大小 print(group.min())

2.1K11
领券