簡體   English   中英

分析數據時如何避免重復表達式?

[英]How to avoid repeating expressions when analysing data?

我是編程新手,被要求編寫一些代碼來分析 NoSQL 數據庫並制作儀表板。 該任務涉及生成滿足特定條件的行數。

我決定掃描我的數據庫,將其放入 Pandas 數據框中並在其上運行 .query() 以提高可讀性。 我也聽說過關於熊貓速度的好消息。 但是,我需要大量重復我的代碼才能獲得所需的所有字段,例如:

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 語句,情況會更糟。 是否有一種更少重復、更干燥的方式來做到這一點? 我想出的一件事是一個“表達式表”,下面是偽代碼。 有沒有辦法在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'")

要生成結果表,您可以編寫兩個循環,一個在另一個循環中。 外循環在您的行中循環。 內循環跨越列循環。

請注意,像這樣使用 query() 效率不高 - Pandas 會多次重新計算相同的內容。 例如,上面的代碼針對整個數據幀評估a > 0 3 次a > 0 ,即使它只需要執行一次。 不過,這對您的應用程序來說可能沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM