Python Dataframe 分组排序和 Modin

1。按其中一列排序

在数据框中,根据其中一列进行排序:例如q值是倒序的

(1)排序法

数据['new_rank'] = data.groupby('house_code')[' q_score_new'].rank(升序=False,方法='密集')

(2)sort_values方法

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

2。按多列排序

在dataframe中,按照多列排序:比如q值倒序,broker ucid正序

sort_values方法

(1)dsort_values方法ata.sort_values(['q_score_new','agent_ucid '],升序= [ False , True]).groupby(['house_code']).cumcount() + 1 # 超过 20 秒(在数据集上超过 100 万行)
(2)data = data.groupby('house_code').sort_values(by=['q_score_new', 'agent_ucid'],升序=(False,True)).groupby('house_code').apply(f) # 超过 200 秒(在超过 100 万行的数据集上)


    deff(df):
        df['new_rank'] = 范围(1, len(df) + 1)
        返回df

最终结果显示:第一种方法比第二种方法快约10倍(在200万行数据集上),所以推荐第二种方法! ! !

3、modin

(1)简介

Modin 是加州大学伯克利分校 RISELab 的早期项目,旨在推动分布式计算在数据科学中的应用。它是一个多进程 Dataframe 库,具有与 Pandas 相同的应用程序编程接口 (API),允许用户加速其 Pandas 工作流程。

(2)原理

本质上,Modin 所做的就是提高 CPU 所有核心的利用率,从而提供更好的性能。

(3)安装与使用

Modin 完全开源,可通过以下 GitHub 链接获取:

https://www.hack95.com/modin-project/modin

我们可以使用PyPi命令安装Modin,如下所示:

pip install modin

在Windows环境下,Ray是安装Modin所需的依赖项之一。 Windows本身并不支持Ray,因此为了安装它,用户需要使用WSL(Windows Subsystem for Linux,适用于Linux和mac)

(4)性能提升

Pandas 的内置函数(如 groupby 等)得到了很好的优化,因此处理速度与 modin.pandas 类似。改进主要是在数据读取方面。通常,Modin使用“read_csv”函数在2秒内读取2G数据,而读取18G数据大约需要不到18秒。

%%时间
导入熊猫
pandas_csv_data = www.hack95.com_csv("../800MB.csv")
------------------------------------------------------------ --- ------------------
CPU时间:用户26.3秒,系统:3.14秒,总计:29.4秒
挂墙时间:29.5 s
%%时间
导入 modin.pandas
modin_csv_data = www.hack95.com_csv("../750MB.csv")
------------------------------------------------------------ --- ------------------
CPU时间:用户76.7毫秒,系统:5.08毫秒,总计:81.8毫秒
挂墙时间:7.6 秒

(5)未来

Modin 项目仍处于早期阶段,但对 Pandas 来说是一个非常有前途的补充。 Modin 为用户处理所有数据分区和重组任务,以便我们可以专注于我们的工作流程。 Modin 的基本目标是使用户能够在小数据和大数据上使用相同的工具,而无需考虑更改 API 以适应不同的数据大小