2015-05-12 60 views
0

如果文件中存在非唯一數據,那麼人們應該怎麼做呢?處理不完全獨特的數據?

我的例子是用於客戶數據。一個文件將跟蹤交互的開始以及從系統角度花費多長時間。另一個文件將記錄員工登錄時的交互 - 通常在交互結束時完成,但可能會有延遲。因此,無法匹配文件1和文件2之間的時間戳。我想要確定3個文件中特定問題類型的持續時間和評級。

我通常會創建一個索引(在pandas中),這個索引是Date | CustomerID | EmployeeID,它在大多數時間內(該客戶在該日期與該員工進行了交互)時體面地工作。但是有時同一個客戶在同一天與同一個客戶進行交互,所以我有一個重複的價值。直到我注意到我的連接(pd.merge)導致了重複的數據,並且偶然發生異常值的交互被重複,這導致了一些分析,這並沒有打擾我。

我應該完全放棄與重複的任何交互?我應該根據某種類型的時間間隔創建一個更獨特的ID(例如,如果EndDatetime距離另一個文件上的日期時間X分鐘內(接近正常交互的末尾)?

文件1:

StartDatetime | CustomerID | EmployeeID | Duration | EndDatetime 

文件2:

Datetime | CustomerID | EmployeeID | Issue 

文件3:

Datetime | CustomerID | EmployeeID | Rating 

回答

1

我believ e此問題的正確答案更依賴於數據的用例。就我個人而言,我處理交互數據很多,在這種情況下,我更喜歡通過交互時間進行索引,因爲這兩種交互是真正獨特的。但是,如果我正在執行的分析沒有考慮發生交互的數量,並且僅涉及相關方,則優先選擇丟棄重複的交互。在其他情況下,分組更爲可取,但由於您示例中的每次互動似乎都是真正獨立的,因此分組看起來不太合適,您自然可以自然分組的唯一標準就是評分,並且看起來像是一個糟糕的決定您正在執行的任何分析。

+0

是的,我使用的時間以及如果適用。對我而言,問題在於,我在測量呼叫到達代理時的時間(開始時間),然後是代理關閉帳戶並留下備註時的「病例日誌」。這是在通話開始之後的某個時間..然後,座席可能會接到另一個電話,並且稍後將不再通知第一個電話。也許我可以把時間戳記到最近的30分鐘或1小時? – trench

+1

這對我來說也是一個常見問題。我目前處理它的方式涉及很多範圍計算,如果代理關閉他們的票據有一個「可接受的」時間框架,那麼在該時間框架內具有相同客戶和僱主ID的事件應該被視爲相同 –

+0

我認爲這樣做很公平,值得一試(如果我只是每天在「可接受的時間範圍」窗口中刪除重複的樣本,那麼我就可以創建什麼類型的代碼呢?就像我拿「時間戳」票據'文件,然後是實際的通話時間戳,我如何能夠在30分鐘內將票據與時間戳進行匹配? – trench