python的三方庫pandas有一些能根據指定面元或樣本分位數將數據拆分成多塊的工具(比如cut或qcut)。將這些函數跟groupby結合起來,就能非常輕鬆地實現對數據集的桶(bucket)或分位數(quantile)分析了。下面通過三步法來講解如何使用完成數據拆分,具體如下:
第一步:使用cut方法進行數據切分
在第一步中,我們首先需要先導入pandas以及pandas中的兩種數據結構,分別為Series和DataFrame。然後創建一個frame對象,裡面包含兩個鍵值對。然後對frame對象進行數據切分。具體代碼如下所示:
第二步:基於cut結果進行統計計算
由cut返回的Factor對象可直接用於groupby。因此,可以像下面這樣對data2做一些統計計算:
我們首先定義了一個get_stats函數,然後針對frame對象的『data2』值依據factor進行分組,賦予一個新的對象grouped。然後對grouped對象應用get_stats函數,獲得結果如上圖所示。然後進行了軸向轉換,使用unstack方法。
這些都是長度相等的桶。要根據樣本分位數得到大小相等的桶,使用qcut即可。傳入labels=False即可只獲取分位數的編號。
第三步:返回分位數編號
如上圖所示,首先使用panda的qcut方法,對frame對象對data1鍵進行數據切分,獲得一個新的對象grouping。然後對frame對象對data2依據grouping結果進行分組,獲得grouped對象。最後將get_stats函數應用導grouped對象上,並使用unstack方法進行軸向轉換。從這裡我們可以看到,使用groupby進行分組的過程中,如果不對分組結果進行下一步操作,則獲得是一個中間狀態,只有對其進行下一步操作後才會生成一個結果集,並且可以將這個結果集賦予一個對象進行存儲等。
總結
綜上所述,我們在本文講解了python數據拆分3步法,分別是「使用cut方法進行數據切分」、「基於cut結果進行統計計算」、「返回分位數編號」。三個步驟的靈活應用可以充分掌握數據拆分的不同的應用場景的解決方案。有些人可能認為數據拆分在實際的應用過程中使用的並不頻繁,其實則不然,數據拆分與合併是一類操作對,經常如影隨形,它們的有效結合,能夠提供完美的數據處理解決方案。
所以,使用python三方庫pandas對數據進行拆分的方法,靈活且易用。在實際的使用過程中可以對其具體的使用場景和相應的處理方法進行不斷的沉澱,這樣會更便於以後的系統化學習。