You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas:按Top3畅销车型计算厂商总销量最大值问题

解决大规模数据集下厂商Top3车型总销量对比问题

嘿,刚上手Python、Pandas和NumPy的话,这个问题用Pandas的内置方法就能高效解决,完全适配大规模数据集,不用写复杂循环~下面一步步来拆解:

核心思路

  1. 按汽车厂商分组,每组内筛选出销量Top3的车型
  2. 对每个厂商的Top3车型销量求和
  3. 找出总销量最高的厂商

完整代码示例

首先导入Pandas(处理结构化数据集它比NumPy更顺手):

import pandas as pd

假设你的数据集已经加载成DataFrame df,先把示例数据模拟出来:

data = {
    'CarManufacturer': ['Volkswagen', 'Volkswagen', 'Honda', 'Honda'],
    'Car': ['Polo', 'Golf', 'Jazz', 'Civic'],
    'TotalCarSales': [100, 50, 40, 100]
}
df = pd.DataFrame(data)

接下来执行核心操作:

# 1. 按厂商分组,取出每组销量Top3的车型(不足3个则取全部现有车型)
top3_per_manufacturer = df.groupby('CarManufacturer').apply(
    lambda group: group.nlargest(3, 'TotalCarSales')
).reset_index(drop=True)

# 2. 计算每个厂商Top3车型的总销量
manufacturer_total = top3_per_manufacturer.groupby('CarManufacturer')['TotalCarSales'].sum()

# 3. 找出总销量最高的厂商及其销量
top_manufacturer = manufacturer_total.idxmax()
top_total_sales = manufacturer_total.max()

print(f"总销量最高的厂商是:{top_manufacturer},Top3车型总销量为:{top_total_sales}")

代码细节解释

  • groupby('CarManufacturer'):把数据集按厂商拆分成独立子集合,方便单独处理每个厂商的车型数据
  • nlargest(3, 'TotalCarSales'):这是Pandas专门优化过的取前N大值方法,比先排序再取head(3)性能好很多,尤其适合百万级以上的大规模数据
  • groupby(...).sum():对每个厂商的Top3车型销量求和,得到该厂商的核心销量贡献
  • idxmax()/max():快速定位总销量最高的厂商名称和对应的销量数值

大规模数据集优化提示

如果你的数据量特别大(比如千万级行),可以去掉apply改用更高效的分组排序+筛选逻辑:

# 更高效的写法,避免apply的额外开销
df['rank'] = df.groupby('CarManufacturer')['TotalCarSales'].rank(ascending=False, method='first')
top3_per_manufacturer = df[df['rank'] <= 3].drop('rank', axis=1)

这个方法利用Pandas的向量化运算,性能会比apply更优。

内容的提问来源于stack exchange,提问作者Wanda Stransky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:51:32