分析数据时如何避免重复表达?

How to avoid repeating expressions when analysing data?

我是编程新手,被要求编写一些代码来分析 NoSQL 数据库并制作仪表板。该任务涉及生成满足特定条件的行数。

我决定扫描我的数据库,将其放入 pandas 数据框和 运行 .query() 以提高可读性。我还在 pandas 中听说过关于速度的好消息。但是,我需要多次重复我的代码才能获得所需的所有字段,例如:

data1=df.query("a > 0").shape[0]  
data2=df.query("a > 0 & d=='yes'").shape[0]  
data3=df.query("a > 0 & d=='no'").shape[0]

如果使用 if 语句,情况会变得更糟。有没有一种重复性更低、更干的方式来做到这一点?我想出的一件事是下面的伪代码“table 表达式”。在 python 中有没有办法做类似的事情?或者更好的东西?

                where a > 0    where b > 0     where c == 1
all results        3                7              5
where d=='yes'     1                3              4
where d=='no'      2                4              1

我建议将重复的部分提取到一个函数中:

def get_result_size(cond1, cond2):
    return df.query(f"{cond1} & {cond2}").shape[0]

然后您可以将您的第一个示例重写为

data1=get_result_size("a > 0", 'True')
data2=get_result_size("a > 0", "d=='yes'")
data3=get_result_size("a > 0", "d=='no'")

要产生 table 个结果,您可以编写两个循环,一个在另一个循环中。外循环遍历你的行。内部循环遍历列。

请注意,像这样使用 query() 效率不高 - Pandas 会多次重新计算同一件事。例如,上面的代码对整个数据帧计算 a > 0 3 次,尽管它只需要执行一次。不过,这对您的应用程序来说可能没问题。