分析数据时如何避免重复表达?
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 次,尽管它只需要执行一次。不过,这对您的应用程序来说可能没问题。
我是编程新手,被要求编写一些代码来分析 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 次,尽管它只需要执行一次。不过,这对您的应用程序来说可能没问题。