Python Dataframe 分組排序和 Modin
1、按照其中一列進行排序
在dataframe中,按照其中的一列排序:比如q值倒排
(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
2、按照其中多列進行排序
在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萬行數據集上),所以推薦第二種!!!
3、modin
(1)簡介
Modin 是加州大學伯克利分校 RISELab 的一個早期項目,旨在促進分布式計算在數據科學領域的應用。它是一個多進程的數據幀(Dataframe)庫,具有與 Pandas 相同的應用程序接口(API),使用戶可以加速他們的 Pandas 工作流。
(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 來適應不同的數據規模