You need to enable JavaScript to run this app. 如何优化Python实现的Excel地址数据筛选函数的运行速度?
优惠活动
大模型
产品
解决方案
定价
更多

如何优化Python实现的Excel地址数据筛选函数的运行速度?

Excel地址筛选函数优化方案

原有代码性能瓶颈

  • 第二层筛选唯一用户数时采用for循环逐次过滤全量数据集,时间复杂度极高,是耗时最长的核心原因
  • 存在多处不必要的Python原生类型(字典、列表)与Pandas数据结构的转换,额外增加了性能开销
  • 原代码还存在笔误:循环中append(ip)的ip变量未定义,应该是当前循环变量ad

优化后代码

import pandas as pd

def main():
    path = input('请输入文件路径:')
    name = input('请输入文件名:')
    file = f"{path}/{name}.xlsx"
    address_history = pd.read_excel(file)
    
    times = int(input('请输入地址最低出现次数阈值:'))
    num = int(input('请输入地址最低关联用户数阈值:'))
    
    # 一次性聚合计算每个地址的出现次数和唯一用户数,仅需遍历一次数据集
    address_stats = address_history.groupby('address', as_index=False).agg(
        occurences=('address', 'count'),
        unique_users=('Username', 'nunique')
    )
    
    # 直接用布尔索引完成两层筛选,全程走Pandas向量化运算,效率极高
    df_final = address_stats[(address_stats['occurences'] >= times) & (address_stats['unique_users'] >= num)]
    
    with pd.option_context('display.max_rows', None, 'display.max_columns', None):
        print(df_final) # 如果你使用Jupyter环境可以替换为display(df_final)
    return address_history

优化效果说明

  • 数据量越大提升越明显,万级以上数据量通常能有几十到上百倍的性能提升
  • 代码逻辑更简洁,减少了中间变量和循环逻辑,可维护性更高

内容的提问来源于stack exchange,提问作者George Papadopoulos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:27:00