Python Dataframe 分組排序和 Modin

Python Dataframe 分組排序和 Modin

 

一、按照其中一列進行排序

在dataframe中,按照其中的一列排序:好比q值倒排git

(1)rank方法

data['new_rank'] = data.groupby('house_code')['q_score_new'].rank(ascending=False, method='dense')

(2)sort_values方法

data.sort_values(['q_score_new'], ascending=False).groupby(['house_code']).cumcount() + 1 

二、按照其中多列進行排序

在dataframe中,按照其中的多列排序:好比q值倒排、經紀人ucid正排

sort_values方法

(1)dsort_values方法ata.sort_values(['q_score_new', 'agent_ucid'], ascending=[ False, True]).groupby(['house_code']).cumcount() + 1 # 20多秒(100多萬行數據集上)

(2)data = data.groupby('house_code').sort_values(by=['q_score_new', 'agent_ucid'], ascending=(False, True)).groupby('house_code').apply(f) # 200多秒(100多萬行數據集上)


    def f(df):
        df['new_rank'] = range(1, len(df) + 1)
        return df

最終結果顯示:第一種比第二種()快10倍左右(在200萬行數據集上),因此推薦第二種!!!github

三、modin

(1)簡介

Modin 是加州大學伯克利分校 RISELab 的一個早期項目,旨在促進分佈式計算在數據科學領域的應用。它是一個多進程的數據幀(Dataframe)庫,具備與 Pandas 相同的應用程序接口(API),使用戶能夠加速他們的 Pandas 工做流。app

(2)原理

從本質上講,Modin 所作的只是增長了 CPU 全部內核的利用率,從而提供了更好的性能。分佈式

(3)安裝使用

Modin 是徹底開源的,能夠經過下面的 GitHub 連接得到:函數

https://github.com/modin-project/modin工具

咱們可使用以下所示的 PyPi 指令來安裝 Modin:性能

pip install modin

在 Windows 環境下,Ray 是安裝 Modin 所需的依賴之一。Windows 自己並不支持 Ray,因此爲了安裝它,用戶須要使用 WSL(適用 Linux 的 Windows 子系統,適用Linux和mac)大數據

(4)性能提高

pandas的內置函數(好比groupby等)由於優化的很好,因此和modin.pandas處理速度差很少,提高主要提如今數據讀取上。 一般,Modin 使用「read_csv」函數讀取 2G 數據須要 2 秒,而 讀取 18G 數據大約須要不到 18 秒。優化

%%time
import pandas 
pandas_csv_data = pandas.read_csv("../800MB.csv")
-----------------------------------------------------------------
CPU times: user 26.3 s, sys: 3.14 s, total: 29.4s
Wall time: 29.5 s
%%time
import modin.pandas
modin_csv_data = pd.read_csv("../750MB.csv")
-----------------------------------------------------------------
CPU times: user 76.7 ms, sys: 5.08 ms, total: 81.8 ms
Wall time: 7.6 s

(5)將來

Modin 項目仍處於早期階段,但對 Pandas 來講是一個很是有發展前景的補充。Modin 爲用戶處理全部的數據分區和重組任務,這樣咱們就能夠集中精力處理工做流。Modin 的基本目標是讓用戶可以在小數據和大數據上使用相同的工具,而不用考慮改變 API 來適應不一樣的數據規模spa

相關文章
相關標籤/搜索