본문 바로가기

Data/Data Analysis

[Pyspark] pyspark 함수 정리(3)

반응형

select(*cols)

Dataframe column선택하여 해당 column을 출력
1
2
3
4
5
6
>>> df.select('*').collect()
[Row(age=2, name='Alice'), Row(age=5, name='Bob')]
>>> df.select('name''age').collect()
[Row(name='Alice', age=2), Row(name='Bob', age=5)]
>>> df.select(df.name, (df.age + 10).alias('age')).collect()
[Row(name='Alice', age=12), Row(name='Bob', age=15)]


selectExpr(*expr)

select와 기능은 같지만 추가적인 산술, SQL식 언어를 위해서 사용하는 함수

1
2
>>> df.selectExpr("age * 2""abs(age)").collect()
[Row((age * 2)=4, abs(age)=2), Row((age * 2)=10, abs(age)=5)]


summary(*statistics)

describe랑 기능은 같다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>> df.summary().show()
+-------+------------------+-----+
|summary|               age| name|
+-------+------------------+-----+
|  count|                 2|    2|
|   mean|               3.5| null|
| stddev|2.1213203435596424| null|
|    min|                 2|Alice|
|    25%|                 2| null|
|    50%|                 2| null|
|    75%|                 5| null|
|    max|                 5|  Bob|
+-------+------------------+-----+
>>> df.summary("count""min""25%""75%""max").show()
+-------+---+-----+
|summary|age| name|
+-------+---+-----+
|  count|  2|    2|
|    min|  2|Alice|
|    25%|  2| null|
|    75%|  5| null|
|    max|  5|  Bob|
+-------+---+-----+
# To do a summary for specific columns first select them:
 
>>> df.select("age""name").summary("count").show()
+-------+---+----+
|summary|age|name|
+-------+---+----+
|  count|  2|   2|
+-------+---+----+


withColumn(colName, col)

col에 어떤 연산에 따라서 colName 이름을 가진 새로운 column을 집어넣는다
1
2
>>> df.withColumn('age2', df.age + 2).collect()
[Row(age=2, name='Alice', age2=4), Row(age=5, name='Bob', age2=7)]


between(lowerBound, upperBound)

반환형은 True or False로 두 사이 값에 있는지 확인하는 함수
1
2
3
4
5
6
7
>>> df.select(df.name, df.age.between(24)).show()
+-----+---------------------------+
| name|((age >= 2) AND (age <= 4))|
+-----+---------------------------+
|Alice|                       true|
|  Bob|                      false|
+-----+---------------------------+


contains(other)

포함유무 반환
1
2
>>> df.filter(df.name.contains('o')).collect()
[Row(age=5, name='Bob')]


when(condition, value)

앞 포스트에서 조건문으로 true or False밖에 반환이된다면, when함수는 특정 값을 지정하여 출력가능
1
2
3
4
5
6
7
8
>>> from pyspark.sql import functions as F
>>> df.select(df.name, F.when(df.age > 41).when(df.age < 3-1).otherwise(0)).show()
+-----+------------------------------------------------------------+
| name|CASE WHEN (age > 4) THEN 1 WHEN (age < 3) THEN -1 ELSE 0 END|
+-----+------------------------------------------------------------+
|Alice|                                                          -1|
|  Bob|                                                           1|
+-----+------------------------------------------------------------+


반응형

'Data > Data Analysis' 카테고리의 다른 글

[Pyspark] pyspark 로컬에 설치  (1) 2019.10.19
[Pyspark] dataframe join 문  (0) 2019.09.16
[Pyspark] pyspark 함수 정리(2)  (0) 2019.01.11
[Pyspark] pyspark 함수 정리(1)  (0) 2019.01.11
[SQL] OVER함수 및 PARTITION BY 사용법  (0) 2019.01.07