pandas 排序和排名
612 字
3 分钟
pandas 排序和排名
pandas 排序和排名
排序和排名经常用于找 Top N、生成榜单、筛选异常值。看起来简单,但升降序、并列名次和分组排名都需要明确规则。
如果规则没说清楚,同一份数据可能排出不同结果。
基础排序
top = df.sort_values( by=["score", "created_at"], ascending=[False, True],)print(top.head(10))多字段排序时,要明确每个字段的升降序。比如分数越高越靠前,时间越早越靠前。
排名方法
df["rank_min"] = df["score"].rank(method="min", ascending=False)df["rank_dense"] = df["score"].rank(method="dense", ascending=False)df["rank_first"] = df["score"].rank(method="first", ascending=False)min 会让并列项占用名次,dense 不跳号,first 按出现顺序打破并列。榜单规则不同,选择也不同。
分组内排名
df["rank_in_class"] = ( df.groupby("class")["score"] .rank(method="dense", ascending=False))top3 = df[df["rank_in_class"] <= 3]容易出错的点
-
数值列被读成字符串,
100可能排在20前后不符合预期。 -
没有说明并列分数怎么处理。
-
排序后忘记重置索引,展示时看起来顺序混乱。
-
Top N 是全局 Top N,还是每组 Top N,没有定义清楚。
实战复盘
复用《pandas 排序和排名》时,不要只复制代码块。先把自己的字段名、数据口径和异常规则写出来,再替换示例里的列名。pandas 的函数很通用,但业务字段的含义不能自动迁移。
每次处理完成后,我会抽样看几条原始记录和处理后记录。尤其是日期、金额、分类字段,机器统计和肉眼抽查要一起做,才能发现格式看似正常但含义错位的问题。
这类文章后续可以继续补充真实小表格作为输入示例。输入、处理、输出三者都出现,教程才不会变成只解释 API。
最小验收样例
验收《pandas 排序和排名》时,我会手写一个三到五行的小 DataFrame:一行正常数据,一行缺失或异常数据,一行边界数据。先让示例在小表上跑通,再换成完整数据集。
小表的好处是结果可以人工计算。只要人工结果和 pandas 输出对不上,就说明代码逻辑或字段口径还没想清楚。这个过程比直接在大表上调试更可靠。
小结
排序和排名要先写清规则,再写代码。特别是并列名次和分组排名,不能靠默认参数碰运气。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
pandas 缺失值处理
数据分析记录 pandas 中缺失值检查、删除、填充和简单统计的常用写法。
2
pandas 分析报告流程
数据分析整理从原始数据到 pandas 分析报告的完整流程,强调可复查和可交付。
3
pandas 交叉表统计
数据分析记录 pandas crosstab 交叉表的用法,用于分析两个分类变量之间的关系。
4
pandas 抽样检查数据
数据分析说明如何用 pandas 抽样检查数据,避免只看 head 带来的偏差。
5
pandas 导出 Excel 笔记
数据分析记录 pandas 导出 Excel 时多 sheet、索引、列宽和结果复核的常用做法。
随机文章随机推荐













