簡體   English   中英

如何找出熊貓數據框中的錯誤百分比?

[英]How to find out error percentage in pandas dataframe?

我有樣本工作歷史數據數據,其中記錄了通過系統移動的工作歷史。 為此,我根據以“1”結尾的錯誤狀態選擇了行。 現在,我試圖從中找到錯誤百分比,但輸出對我來說沒有意義。

從本質上講,我想要做的是,我想至少回答兩次這樣的問題,例如此數據集中有多少部分最終處於錯誤狀態(錯誤狀態是以數字 1 結尾的狀態)。 任何人都可以提出在熊貓中找到錯誤百分比的可能方法嗎? 謝謝

我目前的嘗試

import pandas

url = "https://gist.githubusercontent.com/adamFlyn/35def5060276a88ec5be30fe58f951c2/raw/e12b2b3b4da9988ae6c192e71546db58679d1f6a/work_flow_data.csv"
df = pd.read_csv(url)


err_status = [col for col in df['status'] if col[-1] in '1']
dff  = df.loc[df['status'].isin(err_status)]

P = q4_df.groupby('piece_id')['status'].size().reset_index()
P['Percentage'] = 100 * P['status']  / P['status'].sum()

上面的嘗試沒有給我正確的答案,因為我想知道至少兩次處於錯誤狀態的作品的百分比。 我應該如何糾正我的上述嘗試? 任何的想法?

行。 如果我的解釋正確,所有以 1 結尾的status都是錯誤。 所以,這里有一種方法可以做到這一點。 也許不是最美麗的,但它確實有效。

步驟 1 是創建一個包含status編號最后一位數字的列:

df['error'] = df['status'].astype(str).str[-1:]

返回

 Unnamed: 0         id  piece_id  status      user_id  start_time  \
0             0  333831567  25395616   10800        911.0  1490989764   
1             1  333883698  25390812   10451   88738562.0  1491004450   
2             2  331993562  25265523   10450   88738561.0  1490021514   
3             3  327905898  24977108    8950        393.0  1487347396   
4             4  333065305  25353017   10451   88738560.0  1490647115   
..          ...        ...       ...     ...          ...         ...   
197         197  328106609  25008172    8601        169.0  1487625223   
198         198  326715370  24855982      21        393.0  1486156797   
199         199  330982999  25210529    9000        911.0  1489381774   
200         200  327005451  24877265    9000        911.0  1486513127   
201         201  334605362  25448390    1220  173935616.0  1491494567   

         end_time error  
0    1.491001e+09     0  
1    1.491005e+09     1  
2    1.490022e+09     0  
3             NaN     0  
4    1.490647e+09     1  
..            ...   ...  
197  1.487625e+09     1  
198  1.486157e+09     1  
199           NaN     0  
200           NaN     0  
201  1.491495e+09     0  

[202 rows x 8 columns]

接下來,按piece_id並計算錯誤。

df2 = pd.DataFrame(df.groupby(['piece_id'])['error'].count()).reset_index()
df2 = df2.rename(columns={'error':'count errors'})
print(df2)

 piece_id  count errors
0    23681286             1
1    24037563             1
2    24039587             1
3    24044889             1
4    24065879             1
..        ...           ...
141  25395616             1
142  25419247             2
143  25445965             1
144  25447364             1
145  25448390             2

[146 rows x 2 columns]

最后,提取所有大於 1 的錯誤計數(嚴格來說)以獲取所有piece_ids並取百分比:

dff  = df2.loc[df2['count errors']>=2]
percentage = len(dff)/len(df)*100

這是13.861386138613863

暫無
暫無

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

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