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

如何用Python按特征条件快速统计Excel记录数量?

实现Excel批量筛选统计的Python技术方案

核心必学技术点

  • Pandas 核心数据操作:这是搞定这类表格任务的核心,重点掌握:
    • 表格读写:用pd.read_excel()读取待统计记录和条件列表,转成DataFrame格式;用pd.to_excel()输出最终计数结果。
    • 字符串列布尔索引:针对字符串列直接用df['列名'] == '目标值'生成布尔筛选数组,多条件组合用&(逻辑与)、|(逻辑或),注意用括号给条件分组。
    • 批量条件遍历:把条件列表解析为字典列表(每个字典对应一组筛选规则,键是列名,值是目标值),循环遍历每组条件动态构建筛选逻辑。
    • 计数统计:通过df[筛选条件].shape[0]或df[筛选条件].count()快速获取符合条件的记录数。
  • 条件解析与格式统一:
    • 提前对原始记录的字符串列做清洗:用str.strip()去空格、str.lower()统一大小写,避免因格式差异导致筛选漏判。
    • 若条件列表是结构化Excel,直接按行读取并转换为{'列名': '筛选值'}的字典格式,方便后续批量处理。
  • 性能优化小技巧:
    • 读取文件时用usecols参数指定仅需处理的列,减少内存占用、提升速度。
    • 当条件数量较多时,改用df.query()方法,将筛选条件转为字符串表达式(如df.query("blooded == 'cold' and arms/legs == 'none'")),执行效率更高。

实操示例流程

1. 读取数据文件

import pandas as pd

# 读取10万条记录的Excel文件
records_df = pd.read_excel('animal_records.xlsx')
# 读取筛选条件列表(假设表格含:编号、特征1、值1、特征2、值2、标注列)
conditions_df = pd.read_excel('filter_rules.xlsx')

2. 单组条件筛选统计示例

# 对应蛇类的筛选条件字典
snake_condition = {
    'blooded': 'cold',
    'arms/legs': 'none',
    'breathing-mechanism': 'lungs'
}

# 构建筛选掩码
filter_mask = pd.Series([True] * len(records_df))
for col, target_val in snake_condition.items():
    # 逐步叠加条件
    filter_mask &= (records_df[col] == target_val)

# 统计符合条件的记录数
snake_count = records_df[filter_mask].shape[0]

3. 批量处理所有筛选条件

result_list = []

# 遍历每一组筛选条件
for _, cond_row in conditions_df.iterrows():
    # 解析当前行的筛选规则
    current_cond = {}
    # 假设从第2列开始,奇数列是特征名,偶数列是对应值
    for i in range(1, len(cond_row), 2):
        feature = cond_row[i]
        val = cond_row[i+1]
        # 跳过空值条件
        if pd.notna(feature) and pd.notna(val):
            current_cond[feature] = val
    
    # 构建筛选掩码
    mask = pd.Series([True] * len(records_df))
    for col, val in current_cond.items():
        mask &= (records_df[col] == val)
    
    # 记录结果:编号、计数、标注
    result_list.append({
        '编号': cond_row['编号'],
        '计数': records_df[mask].shape[0],
        '标注': cond_row.get('标注', '')
    })

# 将结果转为DataFrame并输出到Excel
result_df = pd.DataFrame(result_list)
result_df.to_excel('count_results.xlsx', index=False)

内容的提问来源于stack exchange,提问作者Nicholas White

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:45:30