美文网首页R. python新手日记Python中文社区呆鸟的Python数据分析
Python从零开始第三章数据处理与分析①python中的dpl

Python从零开始第三章数据处理与分析①python中的dpl

作者: 柳叶刀与小鼠标 | 来源:发表于2018-12-28 16:30 被阅读182次
    • 前言

    我经常使用R的dplyr软件包进行探索性数据分析和数据处理。 dplyr除了提供一组可用于解决最常见数据操作问题的一致函数外,dplyr还允许用户使用管道函数编写优雅的可链接的数据操作代码。

    现在,Python是我的主要语言,pandas是我用于数据分析的助手,但我经常希望有一个Python包允许直接在pandas DataFrame上进行dplyr风格的数据操作。于是我找到了一个名为dfply的软件包,由Kiefer Katovich开发。 与dplyr一样,dfply也允许使用管道运算符链接多个操作。

    这篇文章将重点介绍dfply包的核心功能,并展示如何使用它们来操作pandas DataFrames。

    • 入门

    我们需要做的第一件事是使用pip安装软件包。

    pip install dfply

    根据该项目的Github介绍,dfply仅适用于Python 3,因此请确保安装了正确版本的Python。

    • 使用用dfply管道函数

    ddfply直接在pandas DataFrames上工作,使用>>运算符链接对数据的操作,或者以>> =从inplace操作开始。 在dfply中,操作链的每个步骤的DataFrame结果由X表示。例如,如果要在步骤中从DataFrame中选择三列,请在下一步中删除第三列,然后显示最终数据的前三行,您可以执行以下操作:

    # 'data' is the original pandas DataFrame
    (data >>
     select(X.first_col, X.second_col, X.third_col) >>
     drop(X.third_col) >>
     head(3))
    
    

    select和drop都是dfply转换函数,而X代表每个转换步骤的结果。

    • 使用select()和drop()选择和删除列

    # 'data' is the original pandas DataFrame
    (diamonds >>
    select(X.carat, X.cut, X.color) >>
    drop(X.cut) >>
    head(3))
    
    Out[10]: 
      carat color
    0   0.23     E
    1   0.21     E
    2   0.23     E
    
    diamonds >> drop(1, X.price, ['x', 'y']) >> head(2)
    Out[26]: 
      carat color clarity  depth  table     z
    0   0.23     E     SI2   61.5   55.0  2.43
    1   0.21     E     SI1   59.8   61.0  2.31
    

    使用的数据集是经典的diamond数据集,通过上面的代码我们筛选了carat,cut和color三列然后删除了cut列

    还可以通过在要删除的列的前面放置一个波浪号〜来删除select()方法中的列。
    例如,要选择diamonds中除cut以外的所有已经选择列:

     (diamonds >>
     select(X.carat, X.cut, X.color) >>
     select(~X.cut) >>
     head(3))
    
    Out[10]: 
       carat color
    0   0.23     E
    1   0.21     E
    2   0.23     E
    
    • 使用mask()过滤行

    mask()允许您根据逻辑条件在pandas DataFrame中选择行的子集。 mask()选择条件为/的所有行。
    例如,要选择carat > 0.21以及cut=='Fair同时price < 563的行:

    df = (diamonds >>
    select(X.carat, X.cut, X.price) >>
    mask(X.carat > 0.21,  X.cut=='Fair', X.price < 563))
    df
    Out[23]: 
         carat   cut  price
    8       0.22  Fair    337
    10030   0.30  Fair    416
    28270   0.25  Fair    361
    31611   0.23  Fair    369
    31615   0.27  Fair    371
    40591   0.30  Fair    496
    40597   0.34  Fair    497
    46961   0.37  Fair    527
    48630   0.30  Fair    536
    
    • 使用arrange()对行进行排序

    arrange()允许您根据一列或多列来排序行; 默认行为是按升序对行进行排序。例如,要按carat,然后按price排序,我们会:

    df = (diamonds >>
          select(X.carat, X.cut, X.price) >>
          mask(X.carat > 0.21,  X.cut=='Fair', X.price < 563) >>
          arrange(X.carat,X.price))
    df
    Out[27]: 
           carat   cut  price
    8       0.22  Fair    337
    31611   0.23  Fair    369
    28270   0.25  Fair    361
    31615   0.27  Fair    371
    10030   0.30  Fair    416
    40591   0.30  Fair    496
    48630   0.30  Fair    536
    40597   0.34  Fair    497
    46961   0.37  Fair    527
    

    相关文章

      网友评论

        本文标题:Python从零开始第三章数据处理与分析①python中的dpl

        本文链接:https://www.haomeiwen.com/subject/nyqelqtx.html