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

相关文章
相关标签/搜索