zoukankan      html  css  js  c++  java
  • 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 来适应不同的数据规模

  • 相关阅读:
    社区专家谈 12306
    一致性Hash算法(分布式算法)
    ASP.NET二级域名站点共享Session状态
    树莓派2 安装 win10Iot 和 Ubuntu mate
    Maven运行时异常java.lang.UnsupportedClassVersionError的解决方案
    Ubuntu安装steam游戏平台的解决方案
    Spring配置JNDI的解决方案
    Intellij Idea无法从Controller跳转到视图页面的解决方案
    电话激活windows server 2012的解决方案
    如何下载Red Hat Enterprise Linux系统
  • 原文地址:https://www.cnblogs.com/yjd_hycf_space/p/11140667.html
Copyright © 2011-2022 走看看