Python从零开始第三章数据处理与分析python中的dplyr(2)

96
左手柳叶刀右手小鼠标 Excellent
1.8 2018.12.29 03:00* 字数 391

目录

第二章(pandas)

Python从零开始第三章数据处理与分析python中的dplyr(1)
Python从零开始第三章数据处理与分析python中的dplyr(2)

===============================================

  • filter/select功能

select和drop函数在数据处理中很有用,可以轻松地选择和删除列。这些功能旨在select和drop功能,并可与〜一起使用。

首先,快速了解可用功能:

starts_with(prefix):查找以字符串前缀开头的列。
ends_with(suffix):查找以字符串后缀结尾的列。
contains(substr):查找名称中包含子字符串的列。
everything():所有列。
columns_between(start_col,end_col,inclusive = True):查找指定的开始列和结束列之间的列。包含性布尔关键字参数指示是否应包含结束列。
columns_to(end_col,inclusive = True):获取指定结束列的列。包含参数指示是否应包括结束列。
columns_from(start_col):获取从指定列开始的列。

  • starts_with()
(diamonds >> 
select(starts_with('c')) >>
 head(2))
Out[5]: 
   carat      cut color clarity
0   0.23    Ideal     E     SI2
1   0.21  Premium     E     SI1
diamonds >> select(~starts_with('c')) >> head(2)

   depth  table  price     x     y     z
0   61.5   55.0    326  3.95  3.98  2.43
1   59.8   61.0    326  3.89  3.84  2.31
  • contains()
(diamonds >> 
     select(contains('c')) >>
      head(2))
Out[18]: 
   carat      cut color clarity  price
0   0.23    Ideal     E     SI2    326
1   0.21  Premium     E     SI1    326
  • columns_from()/columns_to()/columns_between()/columns_between()
diamonds >>head(2)
Out[38]: 
   carat      cut color clarity  depth  table  price     x     y     z
0   0.23    Ideal     E     SI2   61.5   55.0    326  3.95  3.98  2.43
1   0.21  Premium     E     SI1   59.8   61.0    326  3.89  3.84  2.31

diamonds >> select(columns_to(X.price)) >> head(2)
Out[39]: 
   carat      cut color clarity  depth  table
0   0.23    Ideal     E     SI2   61.5   55.0
1   0.21  Premium     E     SI1   59.8   61.0

diamonds >> select(columns_from(X.table)) >> head(2)
Out[40]: 
   table  price     x     y     z
0   55.0    326  3.95  3.98  2.43
1   61.0    326  3.89  3.84  2.31

diamonds >> select(columns_between(X.carat,X.table)) >> head(2)
Out[41]: 
   carat      cut color clarity  depth  table
0   0.23    Ideal     E     SI2   61.5   55.0
1   0.21  Premium     E     SI1   59.8   61.0

diamonds >> select(columns_between(X.carat,X.table)) >> head(2)
Out[42]: 
   carat      cut color clarity  depth  table
0   0.23    Ideal     E     SI2   61.5   55.0
1   0.21  Premium     E     SI1   59.8   61.0
  • row_slice()
    可以使用row_slice()函数选择切片行。 可以传递单个整数索引或索引列表来选择行。 这与使用pandas包的的.iloc功能相同。
diamonds >> row_slice([10,15])

    carat      cut color clarity  depth  table  price     x     y     z
10   0.30     Good     J     SI1   64.0   55.0    339  4.25  4.28  2.73
15   0.32  Premium     E      I1   60.9   58.0    345  4.38  4.42  2.68
  • sample
    sample()函数的功能与DataFrames的pandas.sample()方法完全相同。
diamonds >> sample(frac=0.0001, replace=False)

       carat        cut color clarity  depth  table  price     x     y     z
19736   1.02      Ideal     E     VS1   62.2   54.0   8303  6.43  6.46  4.01
37159   0.32    Premium     D     VS2   60.3   60.0    972  4.44  4.42  2.67
1699    0.72  Very Good     E     VS2   63.8   57.0   3035  5.66  5.69  3.62
20955   1.71  Very Good     J     VS2   62.6   55.0   9170  7.58  7.65  4.77
5168    0.91  Very Good     E     SI2   63.0   56.0   3772  6.12  6.16  3.87


diamonds >> sample(n=3, replace=True)

       carat        cut color clarity  depth  table  price     x     y     z
52892   0.73  Very Good     G     SI1   60.6   59.0   2585  5.83  5.85  3.54
39454   0.57      Ideal     H     SI2   62.3   56.0   1077  5.31  5.28  3.30
39751   0.43      Ideal     H    VVS1   62.3   54.0   1094  4.84  4.85  3.02
  • distinct()
    选择唯一行是使用distinct()完成的。
diamonds >> distinct(X.color)

    carat        cut color clarity  depth  table  price     x     y     z
0    0.23      Ideal     E     SI2   61.5   55.0    326  3.95  3.98  2.43
3    0.29    Premium     I     VS2   62.4   58.0    334  4.20  4.23  2.63
4    0.31       Good     J     SI2   63.3   58.0    335  4.34  4.35  2.75
7    0.26  Very Good     H     SI1   61.9   55.0    337  4.07  4.11  2.53
12   0.22    Premium     F     SI1   60.4   61.0    342  3.88  3.84  2.33
25   0.23  Very Good     G    VVS2   60.4   58.0    354  3.97  4.01  2.41
28   0.23  Very Good     D     VS2   60.5   61.0    357  3.96  3.97  2.40
Web note ad 1