Python Dataframe 分组排序和 Modin

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 来适应不同的数据规模

posted @ 2019-07-05 20:40  fcyh  阅读(3311)  评论(0编辑  收藏  举报