目录
第二章(pandas)
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