Pandas 数据筛选:条件查询与数据过滤技巧-CSDN博客

6 阅读4分钟

一转眼咱们已经到了第 13 天。前两天咱们又是排毒(清洗缺失值),又是瘦身(处理重复值),终于把那叠从 电科金仓 KingbaseES (KES) 搬出来的原始数据理顺了。

今天我们要聊的是**“大海捞针”的艺术。在架构师的词典里,这叫精细化路由**;在数据科学里,这叫数据过滤。面对成千上万行数据,你不能眉毛胡子一把抓,得学会用手术刀级别的精准度,把真正对 AI 模型有价值的样本给“挑”出来。


壹:过滤的哲学——从 SQL 到 Pandas

我们在操作 电科金仓 KES 时,习惯了 WHERE 子句。比如: SELECT * FROM user_stats WHERE age > 25 AND region = '华东';

到了 Pandas 里,这种逻辑依然存在,但它变得更加灵活,甚至带点“人文辩证”的味道。你不仅是在过滤数值,你是在根据业务逻辑去定义什么是“有效样本”。一个好的架构师,在写过滤条件时,脑子里浮现的是业务场景,而不是冰冷的布尔值。


贰:实战:Conda 里的过滤初探

咱们在 KES_AI_Lab 环境里先热热身。很多兄弟问,驱动装好了没?电科金仓驱动下载链接在此,没弄好的赶紧补上。

90]', displaying a filtered output of high-performing records]


叁:核心代码:基于 KES 业务场景的高级筛选

咱们模拟一个 AI 预测场景:我们要从 电科金仓 KES 加载的用户数据中,筛选出“活跃且有潜质”的样本。

这里我会演示三种最实用的过滤技巧:布尔索引、query 表达式、以及多条件组合。

import ksycopg2
import pandas as pd

def advanced_filtering_lab():
    print("--- [电科金仓] 数据精准筛选实战 ---")
    
    conn_params = "dbname=test user=username password=123456 host=127.0.0.1 port=54321"
    
    try:
        conn = ksycopg2.connect(conn_params)
        
        query = "SELECT num as user_id, bcb as username, vcb as region FROM test_newtype"
        df = pd.read_sql(query, conn)
        
        
        import numpy as np
        df['active_score'] = np.random.randint(0, 100, size=len(df))

        
        
        
        mask = (df['active_score'] > 60) & (df['region'].str.contains('中文'))
        filtered_df_1 = df[mask]
        print(f"\n[布尔筛选] 命中记录数: {len(filtered_df_1)}")

        
        
        threshold = 80
        filtered_df_2 = df.query("active_score > @threshold")
        print(f"[Query筛选] 极高分活跃用户数: {len(filtered_df_2)}")

        
        
        target_regions = ['中文测试数据', 'varcharbyte_30']
        filtered_df_3 = df[df['region'].isin(target_regions)]
        print(f"[isin筛选] 特定地区样本数: {len(filtered_df_3)}")

        conn.close()
        return filtered_df_1

    except Exception as e:
        print(f"筛选逻辑执行偏差: {e}")

if __name__ == "__main__":
    result = advanced_filtering_lab()

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647

肆:架构师的碎碎念:减法比加法更难

在深耕人工智能这些年里,我发现初学者最容易犯的错误就是“不忍心扔数据”。

他们觉得每一条从 电科金仓 KES 读出来的数据都是宝贝。但实际上,AI 模型的训练质量,往往取决于你删掉了哪些垃圾。 过滤掉那些由于系统故障、人为误操作产生的噪点数据,就是在保护模型的“认知纯度”。

这种在海量中做减法的定力,就是技术与人文同源共生的体现——去繁就简,方得真理。


结语

今天咱们学会了怎么精准地提取数据。但数据还是散沙,我们需要根据某些维度把它们聚拢起来看。

明天第 14 天,我们要聊聊:Pandas 分组与聚合:Groupby 及其在 AI 特征工程中的应用。我们要看看如何把散乱的用户行为,聚合成一个清晰的群体画像。

老路在砚边等你,咱们第 14 天见。

既然聊到筛选,需要我帮你写一个基于“滑动窗口”的过滤逻辑吗?这在处理 KES 中的时序特征(比如近 7 天用户行为趋势)时非常管用。